summaryrefslogtreecommitdiff
path: root/libavcodec/cfhd.c
diff options
context:
space:
mode:
authorKieran Kunhya <kieran@kunhya.com>2016-01-31 23:59:52 +0000
committerJames Darnley <james.darnley@gmail.com>2016-02-01 14:20:20 +0100
commitbdd8e02b72e79478eb1c4e04d9a8efa100900878 (patch)
tree3d4fd0aa360cdfca8cd0485c369e2e43596ba580 /libavcodec/cfhd.c
parent9effa012553167d3662f1392310671c575c9322f (diff)
avcodec/cfhd: Make sure we have an end of header tag before allocating a frame.
Fixes tickets #5208 and #5209
Diffstat (limited to 'libavcodec/cfhd.c')
-rw-r--r--libavcodec/cfhd.c9
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;