From patchwork Sat Sep 19 16:35:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22490 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 78E0144A83E for ; Sat, 19 Sep 2020 19:37:30 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6742A68B79C; Sat, 19 Sep 2020 19:37:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9065868B76C for ; Sat, 19 Sep 2020 19:37:19 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id w5so8580010wrp.8 for ; Sat, 19 Sep 2020 09:37:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fWRaVWNANWibIS3xzR0TcGFmLxwaHTNkJ+qKpHQkwaU=; b=nKn5Lj6DjO+JoQGmi3tEO5cs7WEGlUPt4KIwuegrM4dAB4SdlZ5kZXYlJunkWi5C9n 9ULQuATIMhBzyhNRsMcMRmjEw/vkVLFIodNM3aV0SkgC7myPirImsZYwNIuYjaE97UQt 9k2dikATMdOC2Jtfb49o2IQGOmhmycrnPfOjOZJIQ5Fnd3JIyQJmqnXZlqwbtbnh/IF+ 0X1zJ2iltcYn2fLJRQq+fv42y/KdiyeGeGmGiEGG6Igo1jHq7UkcSzBsGBKYcdccrkX0 xKQxgD3kh5w8PCvHxZ7zTkt5M2m8zjlnLbGCskRmeHJLGEM7oQEgPyEKNmH7RFy3je++ iiYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fWRaVWNANWibIS3xzR0TcGFmLxwaHTNkJ+qKpHQkwaU=; b=mncUv4bujhxMXBb6FroNHudT0HrDYXlashwroxITzuwqWesuSSIOX45gfrVeutN/vU f4H7Tv00xAiKKJZTYYPuqkKMbZDl00WlgAWp/WzvdZ2iln3yB45L+DLLnZWftGqe61Yj qczOcV8tGeioyeEHwAuZ5+njbz20wHyS1cr4RqUucNh0KkfX0yXEzDxCch98Ci1VSVrX UIJlQheCxT1BEQhsoGau4Kdys2o6gMUmVVh9B3lvpG/04/ssQcEaj3jynDhoLtXEADAI F1bRDy/gSNlnj19vEeJvu84JVWvlDjdhcq6od9O9aKaSZRjR5/qNe9hjLLIzKY8fLxIv s8fA== X-Gm-Message-State: AOAM531Gtd2oPNTwR3EeMSS3mmFJ6whXA2eHMvDtn1n1VPqNnGwzOREZ kOth9U5HbJYLWYJiy/ynDc3aBviSHtU= X-Google-Smtp-Source: ABdhPJyCAKYHJT/FbqHzkZKiqSEAwZIF79vV65RCRxmhRt8vWSgHWllsCj0Ta6oJ9XS3mSDnNnQpsQ== X-Received: by 2002:a5d:6343:: with SMTP id b3mr46494476wrw.179.1600533438819; Sat, 19 Sep 2020 09:37:18 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1fb0f.dynamic.kabel-deutschland.de. [188.193.251.15]) by smtp.gmail.com with ESMTPSA id d5sm12451137wrb.28.2020.09.19.09.37.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Sep 2020 09:37:18 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 19 Sep 2020 18:35:56 +0200 Message-Id: <20200919163610.1099233-7-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200919163610.1099233-1-andreas.rheinhardt@gmail.com> References: <20200919163610.1099233-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/21] avformat/dashdec: Fix leak of AVDictionary on error X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Just postpone the allocation of the dict until it is really needed (after the checks that can fail). Signed-off-by: Andreas Rheinhardt --- libavformat/dashdec.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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.