vp56: check buffer size to fix a potential segfault
authorLaurent Aimar <fenrir@via.ecp.fr>
Thu, 28 Jan 2010 23:49:46 +0000 (23:49 +0000)
committerAurelien Jacobs <aurel@gnuage.org>
Thu, 28 Jan 2010 23:49:46 +0000 (23:49 +0000)
patch by Laurent Aimar  fenrir _at_ videolan _dot_ org

Originally committed as revision 21521 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/vp56.c

index cbac71b..36027b4 100644 (file)
@@ -504,8 +504,12 @@ int vp56_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     int is_alpha, av_uninit(alpha_offset);
 
     if (s->has_alpha) {
+        if (remaining_buf_size < 3)
+            return -1;
         alpha_offset = bytestream_get_be24(&buf);
         remaining_buf_size -= 3;
+        if (remaining_buf_size < alpha_offset)
+            return -1;
     }
 
     for (is_alpha=0; is_alpha < 1+s->has_alpha; is_alpha++) {