From: Kostya Shishkov Date: Tue, 20 Mar 2007 05:44:42 +0000 (+0000) Subject: Correctly handle data_size on decoding X-Git-Tag: v0.5~9595 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b314cfe70991958c1eb302a3f0868a223e67e245;p=coroid%2Fffmpeg_saccubus.git Correctly handle data_size on decoding Originally committed as revision 8451 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index b462174da..e79d4a570 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -383,14 +383,20 @@ static int wavpack_decode_frame(AVCodecContext *avctx, uint8_t* buf_end = buf + buf_size; int i, j, id, size, ssize, weights, t; - if (buf_size == 0) return 0; + if (buf_size == 0){ + *data_size = 0; + return 0; + } memset(s->decorr, 0, MAX_TERMS * sizeof(Decorr)); s->samples = AV_RL32(buf); buf += 4; - if(!s->samples) return buf_size; + if(!s->samples){ + *data_size = 0; + return buf_size; + } /* should not happen but who knows */ - if(s->samples * 2 * avctx->channels > AVCODEC_MAX_AUDIO_FRAME_SIZE){ + if(s->samples * 2 * avctx->channels > *data_size){ av_log(avctx, AV_LOG_ERROR, "Packet size is too big to be handled in lavc!\n"); return -1; }