diff options
author | James Almer <jamrial@gmail.com> | 2019-10-19 14:37:27 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-10-19 14:42:23 -0300 |
commit | 90e37adab7fc88162d44dc68e510c3688d2de2f6 (patch) | |
tree | 5baa1e53f86e5f0d49a45eb903113eb5d742ed1e /libavformat/nutenc.c | |
parent | 58bb9d3a3a6ede1c6cfb82bf671a5f138e6b2144 (diff) | |
download | ffmpeg-streaming-90e37adab7fc88162d44dc68e510c3688d2de2f6.zip ffmpeg-streaming-90e37adab7fc88162d44dc68e510c3688d2de2f6.tar.gz |
avformat/nutenc: free all missing dynamic AVIOContext on header writing failure
Fixes part of ticket #8316
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/nutenc.c')
-rw-r--r-- | libavformat/nutenc.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 4d10e70..d212f0c 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++) { |