diff mbox series

[FFmpeg-devel,07/21] avformat/dashdec: Fix leak of AVDictionary on error

Message ID 20200919163610.1099233-7-andreas.rheinhardt@gmail.com
State Accepted
Commit 4b8fdf70a87b9d3d60f4c78bd9a5c294f524032c
Headers show
Series [FFmpeg-devel,01/21] avformat/dashdec: Avoid double free on error
Related show

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Andreas Rheinhardt Sept. 19, 2020, 4:35 p.m. UTC
Just postpone the allocation of the dict until it is really needed
(after the checks that can fail).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavformat/dashdec.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index 3b83075e7a..ee40f2aa0c 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -407,9 +407,6 @@  static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
     const char *proto_name = NULL;
     int ret;
 
-    av_dict_copy(&tmp, opts, 0);
-    av_dict_copy(&tmp, opts2, 0);
-
     if (av_strstart(url, "crypto", NULL)) {
         if (url[6] == '+' || url[6] == ':')
             proto_name = avio_find_protocol_name(url + 7);
@@ -443,6 +440,8 @@  static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
         return AVERROR_INVALIDDATA;
 
     av_freep(pb);
+    av_dict_copy(&tmp, opts, 0);
+    av_dict_copy(&tmp, opts2, 0);
     ret = avio_open2(pb, url, AVIO_FLAG_READ, c->interrupt_callback, &tmp);
     if (ret >= 0) {
         // update cookies on http response with setcookies.