diff options
-rw-r--r-- | libavcodec/4xm.c | 7 | ||||
-rw-r--r-- | libavformat/4xm.c | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/libavcodec/4xm.c b/libavcodec/4xm.c index 7af22c7963..83e1b92ec4 100644 --- a/libavcodec/4xm.c +++ b/libavcodec/4xm.c @@ -789,7 +789,12 @@ static void common_init(AVCodecContext *avctx){ static int decode_init(AVCodecContext *avctx){ FourXContext * const f = avctx->priv_data; - f->version= avctx->codec_tag == 0x40000; + if(avctx->extradata_size != 4 || !avctx->extradata) { + av_log(avctx, AV_LOG_ERROR, "extradata wrong or missing\n"); + return 1; + } + + f->version= AV_RL32(avctx->extradata) == 0x40000; common_init(avctx); init_vlcs(f); diff --git a/libavformat/4xm.c b/libavformat/4xm.c index 94bd025c08..5f982e3c88 100644 --- a/libavformat/4xm.c +++ b/libavformat/4xm.c @@ -149,7 +149,9 @@ static int fourxm_read_header(AVFormatContext *s, st->codec->codec_type = CODEC_TYPE_VIDEO; st->codec->codec_id = CODEC_ID_4XM; - st->codec->codec_tag = AV_RL32(&header[i + 16]); + st->codec->extradata_size = 4; + st->codec->extradata = av_malloc(4); + AV_WL32(st->codec->extradata, AV_RL32(&header[i + 16])); st->codec->width = fourxm->width; st->codec->height = fourxm->height; |