[FFmpeg-cvslog] avformat/nutenc: free all missing dynamic AVIOContext on header writing failure

James Almer git at videolan.org
Sat Oct 19 20:44:53 EEST 2019


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Oct 19 14:37:27 2019 -0300| [90e37adab7fc88162d44dc68e510c3688d2de2f6] | committer: James Almer

avformat/nutenc: free all missing dynamic AVIOContext on header writing failure

Fixes part of ticket #8316

Signed-off-by: James Almer <jamrial at gmail.com>

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

 libavformat/nutenc.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c
index 4d10e70e9e..d212f0c245 100644
--- a/libavformat/nutenc.c
+++ b/libavformat/nutenc.c
@@ -637,8 +637,10 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
         if (ret < 0)
             return ret;
         ret = write_streamheader(avctx, dyn_bc, nut->avf->streams[i], i);
-        if (ret < 0)
+        if (ret < 0) {
+            ffio_free_dyn_buf(&dyn_bc);
             return ret;
+        }
         put_packet(nut, bc, dyn_bc, 1, STREAM_STARTCODE);
     }
 
@@ -653,12 +655,13 @@ static int write_headers(AVFormatContext *avctx, AVIOContext *bc)
         if (ret < 0)
             return ret;
         ret = write_streaminfo(nut, dyn_bc, i);
-        if (ret < 0)
-            return ret;
         if (ret > 0)
             put_packet(nut, bc, dyn_bc, 1, INFO_STARTCODE);
-        else
+        else {
             ffio_free_dyn_buf(&dyn_bc);
+            if (ret < 0)
+                return ret;
+        }
     }
 
     for (i = 0; i < nut->avf->nb_chapters; i++) {



More information about the ffmpeg-cvslog mailing list