[FFmpeg-cvslog] avcodec/rv40: Test remaining space in loop of get_dimension()

Michael Niedermayer git at videolan.org
Sat Nov 26 16:47:57 EET 2016


ffmpeg | branch: release/2.8 | Michael Niedermayer <michael at niedermayer.cc> | Tue Nov 15 22:50:35 2016 +0100| [698528207ab8016cd891bc5aa8c254f7f0d573dc] | committer: Michael Niedermayer

avcodec/rv40: Test remaining space in loop of get_dimension()

Fixes infinite loop
Fixes: 178/fuzz-3-ffmpeg_VIDEO_AV_CODEC_ID_RV40_fuzzer

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
(cherry picked from commit 1546d487cf12da37d90a080813f8d57ac33036bf)
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavcodec/rv40.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavcodec/rv40.c b/libavcodec/rv40.c
index 3ff1554..c52e06d 100644
--- a/libavcodec/rv40.c
+++ b/libavcodec/rv40.c
@@ -109,6 +109,8 @@ static int get_dimension(GetBitContext *gb, const int *dim)
         val = dim[get_bits1(gb) - val];
     if(!val){
         do{
+            if (get_bits_left(gb) < 8)
+                return AVERROR_INVALIDDATA;
             t = get_bits(gb, 8);
             val += t << 2;
         }while(t == 0xFF);



More information about the ffmpeg-cvslog mailing list