diff options
author | Anton Khirnov <anton@khirnov.net> | 2015-07-10 09:31:24 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-28 02:42:16 +0200 |
commit | abe503329de0cdd988ba45e19aa72383fce23f8b (patch) | |
tree | 561db282c6fad3d7b03eb220b11391b17f8b8ed2 | |
parent | 80e091853d1e6ea2bcbc1972b87ce662f9eefff5 (diff) | |
download | ffmpeg-abe503329de0cdd988ba45e19aa72383fce23f8b.tar.gz |
bytestream2: set the reader to the end when reading more than available
This prevents possible infinite loops with the calling code along the
lines of while (bytestream2_get_bytes_left()) { ... }, where the reader
does not advance.
CC: libav-stable@libav.org
(cherry picked from commit 86eee85daddb682fa072c2e2657c90a514b855e3)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/bytestream.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/bytestream.h b/libavcodec/bytestream.h index c2cb601806..7c05ea6cf5 100644 --- a/libavcodec/bytestream.h +++ b/libavcodec/bytestream.h @@ -71,8 +71,10 @@ static av_always_inline type bytestream2_get_ ## name ## u(GetByteContext *g) \ } \ static av_always_inline type bytestream2_get_ ## name(GetByteContext *g) \ { \ - if (g->buffer_end - g->buffer < bytes) \ + if (g->buffer_end - g->buffer < bytes) { \ + g->buffer = g->buffer_end; \ return 0; \ + } \ return bytestream2_get_ ## name ## u(g); \ } \ static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g) \ |