aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-03-02 16:27:57 -0500
committerReinhard Tartler <siretart@tauware.de>2012-04-01 18:33:28 +0200
commit43e3e7764c498138c28507c5a7dfcd08c0748633 (patch)
treebb4d352bb16337bf6ad2f84c67d30be297eed7a1
parent74bd46e82ad6e1cf57b5427a53a5213e7dfa61cd (diff)
downloadffmpeg-43e3e7764c498138c28507c5a7dfcd08c0748633.tar.gz
wmaenc: limit allowed sample rate to 48kHz
ff_wma_init() allows up to 50kHz, but this generates an exponent band size table that requires 65 bands. The code assumes 25 bands in many places, and using sample rates higher than 48kHz will lead to buffer overwrites. CC:libav-stable@libav.org (cherry picked from commit 1ec075cfecac01f9a289965db06f76365b0b1737) Signed-off-by: Reinhard Tartler <siretart@tauware.de>
-rw-r--r--libavcodec/wmaenc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c
index 5f272f3748..bf451aa258 100644
--- a/libavcodec/wmaenc.c
+++ b/libavcodec/wmaenc.c
@@ -39,6 +39,12 @@ static int encode_init(AVCodecContext * avctx){
return AVERROR(EINVAL);
}
+ if (avctx->sample_rate > 48000) {
+ av_log(avctx, AV_LOG_ERROR, "sample rate is too high: %d > 48kHz",
+ avctx->sample_rate);
+ return AVERROR(EINVAL);
+ }
+
if(avctx->bit_rate < 24*1000) {
av_log(avctx, AV_LOG_ERROR, "bitrate too low: got %i, need 24000 or higher\n",
avctx->bit_rate);