summaryrefslogtreecommitdiff
path: root/libavformat/nutenc.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-10-19 14:37:27 -0300
committerJames Almer <jamrial@gmail.com>2019-10-19 14:42:23 -0300
commit90e37adab7fc88162d44dc68e510c3688d2de2f6 (patch)
tree5baa1e53f86e5f0d49a45eb903113eb5d742ed1e /libavformat/nutenc.c
parent58bb9d3a3a6ede1c6cfb82bf671a5f138e6b2144 (diff)
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.c11
1 files 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++) {