diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index 93959dc348d89f8b5b3b07c7a472eb6243d8ecb4..5cb21c541bc131c9fe4f0945861170ddb052482a 100644
--- a/libavcodec/shorten.c
+++ b/libavcodec/shorten.c
@@ -227,9 +227,11 @@ static int decode_wave_header(AVCodecContext *avctx, const uint8_t *header,
 
     while (bytestream2_get_le32(&gb) != MKTAG('f', 'm', 't', ' ')) {
         len = bytestream2_get_le32(&gb);
-        if (len<0 || bytestream2_get_bytes_left(&gb) - 8 < len)
-            return AVERROR_INVALIDDATA;
         bytestream2_skip(&gb, len);
+        if (len < 0 || bytestream2_get_bytes_left(&gb) < 16) {
+            av_log(avctx, AV_LOG_ERROR, "no fmt chunk found\n");
+            return AVERROR_INVALIDDATA;
+        }
     }
     len = bytestream2_get_le32(&gb);