From 6a6e20bfdf6acd882780b3312ba2e891642ac5b3 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Fri, 3 Feb 2017 20:14:13 +0100 Subject: [PATCH] avcodec/mpc7: return meaningful error values Signed-off-by: Paul B Mahol --- libavcodec/mpc7.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/libavcodec/mpc7.c b/libavcodec/mpc7.c index d38b22a2b3c..d13316b1206 100644 --- a/libavcodec/mpc7.c +++ b/libavcodec/mpc7.c @@ -47,7 +47,7 @@ static const uint16_t quant_offsets[MPC7_QUANT_VLC_TABLES*2 + 1] = static av_cold int mpc7_decode_init(AVCodecContext * avctx) { - int i, j; + int i, j, ret; MPCContext *c = avctx->priv_data; GetBitContext gb; LOCAL_ALIGNED_16(uint8_t, buf, [16]); @@ -66,7 +66,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx) if(avctx->extradata_size < 16){ av_log(avctx, AV_LOG_ERROR, "Too small extradata size (%i)!\n", avctx->extradata_size); - return -1; + return AVERROR_INVALIDDATA; } memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); av_lfg_init(&c->rnd, 0xDEADBEEF); @@ -81,7 +81,7 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx) c->maxbands = get_bits(&gb, 6); if(c->maxbands >= BANDS){ av_log(avctx, AV_LOG_ERROR, "Too many bands: %i\n", c->maxbands); - return -1; + return AVERROR_INVALIDDATA; } skip_bits_long(&gb, 88); c->gapless = get_bits1(&gb); @@ -97,37 +97,37 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx) av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n"); scfi_vlc.table = scfi_table; scfi_vlc.table_allocated = 1 << MPC7_SCFI_BITS; - if(init_vlc(&scfi_vlc, MPC7_SCFI_BITS, MPC7_SCFI_SIZE, + if ((ret = init_vlc(&scfi_vlc, MPC7_SCFI_BITS, MPC7_SCFI_SIZE, &mpc7_scfi[1], 2, 1, - &mpc7_scfi[0], 2, 1, INIT_VLC_USE_NEW_STATIC)){ + &mpc7_scfi[0], 2, 1, INIT_VLC_USE_NEW_STATIC))) { av_log(avctx, AV_LOG_ERROR, "Cannot init SCFI VLC\n"); - return -1; + return ret; } dscf_vlc.table = dscf_table; dscf_vlc.table_allocated = 1 << MPC7_DSCF_BITS; - if(init_vlc(&dscf_vlc, MPC7_DSCF_BITS, MPC7_DSCF_SIZE, + if ((ret = init_vlc(&dscf_vlc, MPC7_DSCF_BITS, MPC7_DSCF_SIZE, &mpc7_dscf[1], 2, 1, - &mpc7_dscf[0], 2, 1, INIT_VLC_USE_NEW_STATIC)){ + &mpc7_dscf[0], 2, 1, INIT_VLC_USE_NEW_STATIC))) { av_log(avctx, AV_LOG_ERROR, "Cannot init DSCF VLC\n"); - return -1; + return ret; } hdr_vlc.table = hdr_table; hdr_vlc.table_allocated = 1 << MPC7_HDR_BITS; - if(init_vlc(&hdr_vlc, MPC7_HDR_BITS, MPC7_HDR_SIZE, + if ((ret = init_vlc(&hdr_vlc, MPC7_HDR_BITS, MPC7_HDR_SIZE, &mpc7_hdr[1], 2, 1, - &mpc7_hdr[0], 2, 1, INIT_VLC_USE_NEW_STATIC)){ + &mpc7_hdr[0], 2, 1, INIT_VLC_USE_NEW_STATIC))) { av_log(avctx, AV_LOG_ERROR, "Cannot init HDR VLC\n"); - return -1; + return ret; } for(i = 0; i < MPC7_QUANT_VLC_TABLES; i++){ for(j = 0; j < 2; j++){ quant_vlc[i][j].table = &quant_tables[quant_offsets[i*2 + j]]; quant_vlc[i][j].table_allocated = quant_offsets[i*2 + j + 1] - quant_offsets[i*2 + j]; - if(init_vlc(&quant_vlc[i][j], 9, mpc7_quant_vlc_sizes[i], + if ((ret = init_vlc(&quant_vlc[i][j], 9, mpc7_quant_vlc_sizes[i], &mpc7_quant_vlc[i][j][1], 4, 2, - &mpc7_quant_vlc[i][j][0], 4, 2, INIT_VLC_USE_NEW_STATIC)){ + &mpc7_quant_vlc[i][j][0], 4, 2, INIT_VLC_USE_NEW_STATIC))) { av_log(avctx, AV_LOG_ERROR, "Cannot init QUANT VLC %i,%i\n",i,j); - return -1; + return ret; } } } @@ -298,7 +298,7 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data, bits_avail = buf_size * 8; if (!last_frame && ((bits_avail < bits_used) || (bits_used + 32 <= bits_avail))) { av_log(avctx, AV_LOG_ERROR, "Error decoding frame: used %i of %i bits\n", bits_used, bits_avail); - return -1; + return AVERROR_INVALIDDATA; } if(c->frames_to_skip){ c->frames_to_skip--; -- 2.39.5