ffmpeg | branch: release/2.5 | Michael Niedermayer <michae...@gmx.at> | Sat Jan 10 17:25:05 2015 +0100| [ef905b1b27d5785930d130ad786fd99514d207a7] | committer: Andreas Cadhalpun
avcodec/diracdec: Check slices malloc and propagate error code Signed-off-by: Michael Niedermayer <michae...@gmx.at> (cherry picked from commit a4d3cf10b2ece441ae25849a66b1c11d838f9381) Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ef905b1b27d5785930d130ad786fd99514d207a7 --- libavcodec/diracdec.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index 6b93d86..9640c82 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -772,7 +772,7 @@ static int decode_lowdelay_slice(AVCodecContext *avctx, void *arg) * Dirac Specification -> * 13.5.1 low_delay_transform_data() */ -static void decode_lowdelay(DiracContext *s) +static int decode_lowdelay(DiracContext *s) { AVCodecContext *avctx = s->avctx; int slice_x, slice_y, bytes, bufsize; @@ -781,6 +781,8 @@ static void decode_lowdelay(DiracContext *s) int slice_num = 0; slices = av_mallocz_array(s->lowdelay.num_x, s->lowdelay.num_y * sizeof(struct lowdelay_slice)); + if (!slices) + return AVERROR(ENOMEM); align_get_bits(&s->gb); /*[DIRAC_STD] 13.5.2 Slices. slice(sx,sy) */ @@ -811,6 +813,7 @@ static void decode_lowdelay(DiracContext *s) intra_dc_prediction(&s->plane[1].band[0][0]); /* [DIRAC_STD] 13.3 intra_dc_prediction() */ intra_dc_prediction(&s->plane[2].band[0][0]); /* [DIRAC_STD] 13.3 intra_dc_prediction() */ av_free(slices); + return 0; } static void init_planes(DiracContext *s) @@ -1606,6 +1609,7 @@ static int dirac_decode_frame_internal(DiracContext *s) { DWTContext d; int y, i, comp, dsty; + int ret; if (s->low_delay) { /* [DIRAC_STD] 13.5.1 low_delay_transform_data() */ @@ -1613,8 +1617,10 @@ static int dirac_decode_frame_internal(DiracContext *s) Plane *p = &s->plane[comp]; memset(p->idwt_buf, 0, p->idwt_stride * p->idwt_height * sizeof(IDWTELEM)); } - if (!s->zero_res) - decode_lowdelay(s); + if (!s->zero_res) { + if ((ret = decode_lowdelay(s)) < 0) + return ret; + } } for (comp = 0; comp < 3; comp++) { _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog