From: Vittorio Giovara Date: Fri, 7 Feb 2014 14:13:40 +0000 (+0100) Subject: h264: error out from decode_nal_units() when AV_EF_EXPLODE is set X-Git-Tag: v11_alpha1~303 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=772d150a6e82542c06b0c251e73dd299d98d1027;p=platform%2Fupstream%2Flibav.git h264: error out from decode_nal_units() when AV_EF_EXPLODE is set Signed-off-by: Vittorio Giovara --- diff --git a/libavcodec/h264.c b/libavcodec/h264.c index c4ce278..a04839c 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1593,7 +1593,9 @@ again: break; case NAL_SEI: init_get_bits(&h->gb, ptr, bit_length); - ff_h264_decode_sei(h); + ret = ff_h264_decode_sei(h); + if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE)) + goto end; break; case NAL_SPS: init_get_bits(&h->gb, ptr, bit_length); @@ -1613,7 +1615,9 @@ again: break; case NAL_PPS: init_get_bits(&h->gb, ptr, bit_length); - ff_h264_decode_picture_parameter_set(h, bit_length); + ret = ff_h264_decode_picture_parameter_set(h, bit_length); + if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE)) + goto end; break; case NAL_AUD: case NAL_END_SEQUENCE: @@ -1630,7 +1634,9 @@ again: } if (context_count == h->max_contexts) { - ff_h264_execute_decode_slices(h, context_count); + ret = ff_h264_execute_decode_slices(h, context_count); + if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE)) + goto end; context_count = 0; } @@ -1649,8 +1655,11 @@ again: } } } - if (context_count) - ff_h264_execute_decode_slices(h, context_count); + if (context_count) { + ret = ff_h264_execute_decode_slices(h, context_count); + if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE)) + goto end; + } end: /* clean up */