diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-11-09 14:04:22 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-11-09 14:04:22 +0100 |
commit | 367468f1482541d1e17ce3fdf1d496746a2de21b (patch) | |
tree | ffd31f187b8db88e5e91b53574390bb89feb6e9d | |
parent | 11e155c2192a566611b598b305515a7d7168f5a0 (diff) | |
download | ffmpeg-367468f1482541d1e17ce3fdf1d496746a2de21b.tar.gz |
Check extradata_size before accessing extradata.
Fixes ticket #627.
-rw-r--r-- | libavcodec/flicvideo.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c index 10ad270823..2374d54b11 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]); } |