From 90e37adab7fc88162d44dc68e510c3688d2de2f6 Mon Sep 17 00:00:00 2001 From: James Almer Date: Sat, 19 Oct 2019 14:37:27 -0300 Subject: [PATCH] avformat/nutenc: free all missing dynamic AVIOContext on header writing failure Fixes part of ticket #8316 Signed-off-by: James Almer --- 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++) {