From dccaad3bcdc5762141527cb7db7c87f34517f097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Mon, 13 May 2013 21:38:20 +0200 Subject: [PATCH] wamenc: handle failure to encode. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is necessary since the switch to floating point input means there is no longer sufficient input data validation. There is a good chance that other encoders are affected by similar issues. This problem can be triggered by trying to encode extremely large values and probably also with Inf and possibly also NaNs. Signed-off-by: Reimar Döffinger --- libavcodec/wmaenc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c index d061cde480..8252f4568d 100644 --- a/libavcodec/wmaenc.c +++ b/libavcodec/wmaenc.c @@ -376,6 +376,11 @@ static int encode_superframe(AVCodecContext *avctx, AVPacket *avpkt, while(total_gain <= 128 && error > 0) error = encode_frame(s, s->coefs, avpkt->data, avpkt->size, total_gain++); + if (error > 0) { + av_log(avctx, AV_LOG_ERROR, "Invalid input data or requested bitrate too low, cannot encode\n"); + avpkt->size = 0; + return AVERROR(EINVAL); + } av_assert0((put_bits_count(&s->pb) & 7) == 0); i= avctx->block_align - (put_bits_count(&s->pb)+7)/8; av_assert0(i>=0);