diff --git a/libavcodec/wma.c b/libavcodec/wma.c index 2241a07a0e..1f1495e6ef 100644 --- a/libavcodec/wma.c +++ b/libavcodec/wma.c @@ -72,6 +72,11 @@ int ff_wma_init(AVCodecContext * avctx, int flags2) int sample_rate1; int coef_vlc_table; + if( avctx->sample_rate<=0 || avctx->sample_rate>50000 + || avctx->channels<=0 || avctx->channels>8 + || avctx->bit_rate<=0) + return -1; + s->sample_rate = avctx->sample_rate; s->nb_channels = avctx->channels; s->bit_rate = avctx->bit_rate; diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 2022f3dba7..da02f69824 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -106,7 +106,8 @@ static int wma_decode_init(AVCodecContext * avctx) s->use_bit_reservoir = flags2 & 0x0002; s->use_variable_block_len = flags2 & 0x0004; - ff_wma_init(avctx, flags2); + if(ff_wma_init(avctx, flags2)<0) + return -1; /* init MDCT */ for(i = 0; i < s->nb_block_sizes; i++)