[FFmpeg-cvslog] avutil/buffer: Never poison returned buffers

Andreas Rheinhardt git at videolan.org
Fri Aug 12 04:23:45 EEST 2022

ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Mon Oct  4 16:44:46 2021 +0200| [d576b37fa7e2d23737f04b6c1df2a132ff4b113f] | committer: Andreas Rheinhardt

avutil/buffer: Never poison returned buffers

Poisoning returned buffers is based around the implicit assumption
that the contents of said buffers are transient. Yet this is not true
for the buffer pools used by the various hardware contexts which store
important state in there that needs to be preserved.
Furthermore, the current code is also based on the assumption
that the complete buffer pointed to by AVBuffer->data coincides with
AVBufferRef->data; yet an implementation might store some data of its
own before the actual user-visible data (accessible via AVBufferRef)
which would be broken by the current code.

(This is of course yet more proof that the AVBuffer API is not the right
tool for the hardware contexts.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d576b37fa7e2d23737f04b6c1df2a132ff4b113f

 libavutil/buffer.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/libavutil/buffer.c b/libavutil/buffer.c
index 54590be566..e4562a79b1 100644
--- a/libavutil/buffer.c
+++ b/libavutil/buffer.c
@@ -341,9 +341,6 @@ static void pool_release_buffer(void *opaque, uint8_t *data)
     BufferPoolEntry *buf = opaque;
     AVBufferPool *pool = buf->pool;
-        memset(buf->data, FF_MEMORY_POISON, pool->size);
     buf->next = pool->pool;
     pool->pool = buf;

More information about the ffmpeg-cvslog mailing list