# HG changeset patch # User kostya # Date 1174369482 0 # Node ID 1bfdcac74275bba1dc0aac7becfd25b6ce581228 # Parent c7828f1ae24423f62bc1a8d6f2b67ae6858bfc1e Correctly handle data_size on decoding diff -r c7828f1ae244 -r 1bfdcac74275 wavpack.c --- a/wavpack.c Tue Mar 20 02:12:13 2007 +0000 +++ b/wavpack.c Tue Mar 20 05:44:42 2007 +0000 @@ -383,14 +383,20 @@ 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; }