diff mbox series

[FFmpeg-devel] avformat/fifo: Free dict on av_dict_copy() failure

Message ID AM7PR03MB66605129F843D381D99906C78FEA9@AM7PR03MB6660.eurprd03.prod.outlook.com
State Accepted
Commit 9f19fbba4a84ddff73e32bfe13f0702a4bb40652
Headers show
Series [FFmpeg-devel] avformat/fifo: Free dict on av_dict_copy() failure | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Andreas Rheinhardt July 28, 2021, 9:38 p.m. UTC
av_dict_copy() puts the onus on the caller to clean up dst on failure;
it can be nonempty if copying a later entry of src fails after having
successfully copied an earlier entry.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
It seems that av_dict_copy() together with the
AV_DICT_DONT_STRDUP_KEY/VAL flags creates zombie src AVDictionaries.

 libavformat/fifo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/libavformat/fifo.c b/libavformat/fifo.c
index a9b59b6589..10511167cd 100644
--- a/libavformat/fifo.c
+++ b/libavformat/fifo.c
@@ -129,7 +129,7 @@  static int fifo_thread_write_header(FifoThreadContext *ctx)
 
     ret = av_dict_copy(&format_options, fifo->format_options, 0);
     if (ret < 0)
-        return ret;
+        goto end;
 
     ret = ff_format_output_open(avf2, avf->url, &format_options);
     if (ret < 0) {