[FFmpeg-cvslog] flicvideo: check extradata_size before accessing extradata.

Carl Eugen Hoyos git at videolan.org
Sun Nov 27 00:39:11 CET 2011


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Wed Nov  9 14:04:22 2011 +0100| [1484b5dec5e05c11a2e8619d8838b3d276984cb7] | committer: Anton Khirnov

flicvideo: check extradata_size before accessing extradata.

Signed-off-by: Anton Khirnov <anton at khirnov.net>

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

 libavcodec/flicvideo.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c
index a78fe5e..8e8a813 100644
--- a/libavcodec/flicvideo.c
+++ b/libavcodec/flicvideo.c
@@ -81,6 +81,12 @@ static av_cold int flic_decode_init(AVCodecContext *avctx)
     unsigned char *fli_header = (unsigned char *)avctx->extradata;
     int depth;
 
+    if (avctx->extradata_size != 12 &&
+        avctx->extradata_size != 128) {
+        av_log(avctx, AV_LOG_ERROR, "Expected extradata of 12 or 128 bytes\n");
+        return AVERROR_INVALIDDATA;
+    }
+
     s->avctx = avctx;
 
     s->fli_type = AV_RL16(&fli_header[4]); /* Might be overridden if a Magic Carpet FLC */
@@ -90,9 +96,6 @@ static av_cold int flic_decode_init(AVCodecContext *avctx)
         /* special case for magic carpet FLIs */
         s->fli_type = FLC_MAGIC_CARPET_SYNTHETIC_TYPE_CODE;
         depth = 8;
-    } else if (s->avctx->extradata_size != 128) {
-        av_log(avctx, AV_LOG_ERROR, "Expected extradata of 12 or 128 bytes\n");
-        return -1;
     } else {
         depth = AV_RL16(&fli_header[12]);
     }



More information about the ffmpeg-cvslog mailing list