diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2013-06-28 04:03:47 +0200 |
---|---|---|
committer | Reinhard Tartler <siretart@tauware.de> | 2013-06-30 16:03:27 +0200 |
commit | 88433979c21ccaba3581acd397d091f2a50a6028 (patch) | |
tree | 840bbca131a0d16e44aae7bc2c36cde38393452c | |
parent | 9d1b173aae27aae016ff799e48cd5aa1bdaba0ad (diff) | |
download | ffmpeg-88433979c21ccaba3581acd397d091f2a50a6028.tar.gz |
wmapro: make sure there is room to store the current packet
Prevent horrid and hard to trace struct overwrite.
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit e30b068ef79f604ff439418da07f7e2efd01d4ea)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
-rw-r--r-- | libavcodec/wmaprodec.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index efc8fce5c8..8fabc3a59c 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -1464,6 +1464,14 @@ static void save_bits(WMAProDecodeCtx *s, GetBitContext* gb, int len, return; } + if (len > put_bits_left(&s->pb)) { + av_log(s->avctx, AV_LOG_ERROR, + "Cannot append %d bits, only %d bits available.\n", + len, put_bits_left(&s->pb)); + s->packet_loss = 1; + return; + } + s->num_saved_bits += len; if (!append) { avpriv_copy_bits(&s->pb, gb->buffer + (get_bits_count(gb) >> 3), |