[FFmpeg-cvslog] Check extradata_size before accessing extradata.
Carl Eugen Hoyos
git at videolan.org
Wed Nov 9 14:06:20 CET 2011
ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Wed Nov 9 14:04:22 2011 +0100| [367468f1482541d1e17ce3fdf1d496746a2de21b] | committer: Carl Eugen Hoyos
Check extradata_size before accessing extradata.
Fixes ticket #627.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=367468f1482541d1e17ce3fdf1d496746a2de21b
---
libavcodec/flicvideo.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavcodec/flicvideo.c b/libavcodec/flicvideo.c
index 10ad270..2374d54 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