[FFmpeg-cvslog] wma: don't return 0 on invalid packets.
Ronald S. Bultje
git at videolan.org
Sun Feb 19 02:19:07 CET 2012
ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Fri Feb 17 16:57:00 2012 -0800| [9d3050d3e95e307ebc34a943484c7add838d1220] | committer: Ronald S. Bultje
wma: don't return 0 on invalid packets.
Return 0 means "please return the same data again", i.e. it causes an
infinite loop. Instead, return an error.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable at libav.org
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9d3050d3e95e307ebc34a943484c7add838d1220
---
libavcodec/wmadec.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c
index 41b2a8e..b9fc21f 100644
--- a/libavcodec/wmadec.c
+++ b/libavcodec/wmadec.c
@@ -817,8 +817,12 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data,
s->last_superframe_len = 0;
return 0;
}
- if (buf_size < s->block_align)
- return 0;
+ if (buf_size < s->block_align) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Input packet size too small (%d < %d)\n",
+ buf_size, s->block_align);
+ return AVERROR_INVALIDDATA;
+ }
buf_size = s->block_align;
init_get_bits(&s->gb, buf, buf_size*8);
More information about the ffmpeg-cvslog
mailing list