[FFmpeg-cvslog] avcodec/wmavoice: Check remaining input in parse_packet_header()

Michael Niedermayer git at videolan.org
Sun Dec 15 02:27:06 EET 2019


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Sat Nov 23 09:18:12 2019 +0100| [19c41969b26d07519fff8182a0d3266cdb712078] | committer: Michael Niedermayer

avcodec/wmavoice: Check remaining input in parse_packet_header()

Fixes: Infinite loop
Fixes: 18914/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMAVOICE_fuzzer-5731902946541568

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=19c41969b26d07519fff8182a0d3266cdb712078
---

 libavcodec/wmavoice.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c
index 9420d7f0c8..85c80ecca8 100644
--- a/libavcodec/wmavoice.c
+++ b/libavcodec/wmavoice.c
@@ -1843,6 +1843,9 @@ static int parse_packet_header(WMAVoiceContext *s)
     skip_bits(gb, 4);          // packet sequence number
     s->has_residual_lsps = get_bits1(gb);
     do {
+        if (get_bits_left(gb) < 6 + s->spillover_bitsize)
+            return AVERROR_INVALIDDATA;
+
         res = get_bits(gb, 6); // number of superframes per packet
                                // (minus first one if there is spillover)
         n_superframes += res;



More information about the ffmpeg-cvslog mailing list