summaryrefslogtreecommitdiff
path: root/libavutil/buffer.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-08-02 21:16:44 +0200
committerAnton Khirnov <anton@khirnov.net>2016-08-03 11:07:15 +0200
commit24a362569bff1d4161742fffaca80a4a4428be8a (patch)
treece3f110ae279017c59e48cb21eb1c3ef85ed44f3 /libavutil/buffer.c
parente99ecda55082cb9dde8fd349361e169dc383943a (diff)
downloadffmpeg-24a362569bff1d4161742fffaca80a4a4428be8a.tar.gz
buffer: fix av_buffer_realloc() when the data is offset wrt buffer start
In such a case behave as if the buffer was not reallocatable -- allocate a new one and copy the data (preserving just the part described by the reference passed to av_buffer_realloc). CC: libav-stable@libav.org Reported-By: wm4 <nfxjfg@googlemail.com>
Diffstat (limited to 'libavutil/buffer.c')
-rw-r--r--libavutil/buffer.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavutil/buffer.c b/libavutil/buffer.c
index 6681002345..49a1f2d395 100644
--- a/libavutil/buffer.c
+++ b/libavutil/buffer.c
@@ -170,7 +170,7 @@ int av_buffer_realloc(AVBufferRef **pbuf, int size)
return 0;
if (!(buf->buffer->flags & BUFFER_FLAG_REALLOCATABLE) ||
- !av_buffer_is_writable(buf)) {
+ !av_buffer_is_writable(buf) || buf->data != buf->buffer->data) {
/* cannot realloc, allocate a new reallocable buffer and copy data */
AVBufferRef *new = NULL;