avformat/dashdec: Fix leak of AVDictionary on error

Just postpone the allocation of the dict until it is really needed
(after the checks that can fail).

Reviewed-by: Steven Liu <lq@chinaffmpeg.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
pull/352/head
Andreas Rheinhardt 4 years ago
parent eb344862e4
commit 4b8fdf70a8
  1. 5
      libavformat/dashdec.c

@ -407,9 +407,6 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
const char *proto_name = NULL; const char *proto_name = NULL;
int ret; int ret;
av_dict_copy(&tmp, opts, 0);
av_dict_copy(&tmp, opts2, 0);
if (av_strstart(url, "crypto", NULL)) { if (av_strstart(url, "crypto", NULL)) {
if (url[6] == '+' || url[6] == ':') if (url[6] == '+' || url[6] == ':')
proto_name = avio_find_protocol_name(url + 7); 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; return AVERROR_INVALIDDATA;
av_freep(pb); 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); ret = avio_open2(pb, url, AVIO_FLAG_READ, c->interrupt_callback, &tmp);
if (ret >= 0) { if (ret >= 0) {
// update cookies on http response with setcookies. // update cookies on http response with setcookies.

Loading…
Cancel
Save