diff options
author | Kieran Kunhya <kieran@kunhya.com> | 2016-01-31 23:59:52 +0000 |
---|---|---|
committer | James Darnley <james.darnley@gmail.com> | 2016-02-01 14:20:20 +0100 |
commit | bdd8e02b72e79478eb1c4e04d9a8efa100900878 (patch) | |
tree | 3d4fd0aa360cdfca8cd0485c369e2e43596ba580 | |
parent | 9effa012553167d3662f1392310671c575c9322f (diff) | |
download | ffmpeg-bdd8e02b72e79478eb1c4e04d9a8efa100900878.tar.gz |
avcodec/cfhd: Make sure we have an end of header tag before allocating a frame.
Fixes tickets #5208 and #5209
-rw-r--r-- | libavcodec/cfhd.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c index 115081c68e..410bb7b8f7 100644 --- a/libavcodec/cfhd.c +++ b/libavcodec/cfhd.c @@ -224,7 +224,7 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame, GetByteContext gb; ThreadFrame frame = { .f = data }; AVFrame *pic = data; - int ret = 0, i, j, plane; + int ret = 0, i, j, plane, got_buffer = 0; int16_t *coeff_data; avctx->pix_fmt = AV_PIX_FMT_YUV422P10; @@ -426,6 +426,7 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame, s->coded_width = 0; s->coded_height = 0; + got_buffer = 1; } coeff_data = s->plane[s->channel_num].subband[s->subband_num_actual]; @@ -557,6 +558,12 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame, goto end; } + if (!got_buffer) { + av_log(avctx, AV_LOG_ERROR, "No end of header tag found\n"); + ret = AVERROR(EINVAL); + goto end; + } + for (plane = 0; plane < 3 && !ret; plane++) { /* level 1 */ int lowpass_height = s->plane[plane].band[0][0].height; |