Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2020-09-26 20:20:50 +0300
committerMarton Balint <cus@passwd.hu>2020-10-09 22:07:18 +0300
commit6d972beb23385022319cb36892519c70b0d0fc22 (patch)
treeddd6a2527ae7ffa344de4758c06801e821426c9e /libavformat/aviobuf.c
parent74c70efd12e6a603bc006bd11f7e7806e7c61aca (diff)
avformat/aviobuf: check if requested seekback buffer is already read
Existing code did not check if the requested seekback buffer is already read entirely. In this case, nothing has to be done to guarantee seekback. Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/aviobuf.c')
-rw-r--r--libavformat/aviobuf.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index 9675425349..d94be478ac 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -999,6 +999,9 @@ int ffio_ensure_seekback(AVIOContext *s, int64_t buf_size)
int filled = s->buf_end - s->buffer;
ptrdiff_t checksum_ptr_offset = s->checksum_ptr ? s->checksum_ptr - s->buffer : -1;
+ if (buf_size <= s->buf_end - s->buf_ptr)
+ return 0;
+
buf_size += s->buf_ptr - s->buffer + max_buffer_size;
if (buf_size < filled || s->seekable || !s->read_packet)