]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/wmaprodec: Check packet size
authorMichael Niedermayer <michael@niedermayer.cc>
Thu, 3 Dec 2020 23:52:47 +0000 (00:52 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Fri, 8 Jan 2021 17:08:57 +0000 (18:08 +0100)
Fixes: left shift of negative value -25824
Fixes: 27754/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_XMA2_fuzzer-5760255962906624
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/wmaprodec.c

index 88ee5f4015a73b751d5203a56c487a4ac4dff3df..8024ce1611548eba147808dafd3e2e08b040d335 100644 (file)
@@ -1721,6 +1721,12 @@ static int decode_packet(AVCodecContext *avctx, WMAProDecodeCtx *s,
         }
     } else {
         int frame_size;
+
+        if (avpkt->size < s->next_packet_start) {
+            s->packet_loss = 1;
+            return AVERROR_INVALIDDATA;
+        }
+
         s->buf_bit_size = (avpkt->size - s->next_packet_start) << 3;
         init_get_bits(gb, avpkt->data, s->buf_bit_size);
         skip_bits(gb, s->packet_offset);