From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 300B84C2BC
	for <ffmpegdev@gitmailbox.com>; Mon,  7 Apr 2025 22:45:50 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 42BAC687B76;
	Tue,  8 Apr 2025 01:45:46 +0300 (EEST)
Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com
 [209.85.216.50])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 92676687BAC
 for <ffmpeg-devel@ffmpeg.org>; Tue,  8 Apr 2025 01:45:39 +0300 (EEST)
Received: by mail-pj1-f50.google.com with SMTP id
 98e67ed59e1d1-2ff64550991so3821106a91.0
 for <ffmpeg-devel@ffmpeg.org>; Mon, 07 Apr 2025 15:45:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1744065936; x=1744670736; darn=ffmpeg.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:to
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=Xj0W20aF3FO9MyHK3uvFKMKcHlvWPgFRYi3mJJSketg=;
 b=Fl5uE8KIUSWiTDSi06wGr5rpZ2EKH19l/KklWQ/kVQKf9scic0bPvQVQgYqLWt7R0l
 x72FJ6HdjiheO9X7vwO/3cbQfzjP2mw5VVYS4oeOyKjeJqsbPPNkbFcW6nC4MtdLgiMP
 NmecqcHyXvnHBn5UNUEBAPt8Uoy4gSA/CaXBkrHFovppHisc6ELjHlXGCmot3B/A/GWB
 zc0aPdSHTTte1oI5gTl6JIEOkZhWkIobo6hhwuQYEUI/JdsLBSJY8W4cQ3iWl1jCVM9p
 rMbkqOZg04yIGf+2dOxP6wjXeY/7VA1zFJTIXsZUel/Xd40e8q8WsBYLjwP+0sFNGtB8
 M1ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744065936; x=1744670736;
 h=content-transfer-encoding:mime-version:message-id:date:subject:to
 :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=Xj0W20aF3FO9MyHK3uvFKMKcHlvWPgFRYi3mJJSketg=;
 b=n00/JXK/0zrrMTkdGIyIDmiNAOakfFhLJYlig5Kuhk2sPzKiEpvZ41n/9OQqJEe/0Q
 2j4sFH6CVOkk6L7ZMH/ZaMTMmcOAzw4pIcLOVmA7kI1ToEHjigZAF92fzlJGYX4GNWiO
 litGLOdDaMG7TeXBj9uI5ZkPseQVvVYNrP0ZuJI2CRV4azdIwYsCHm0TgcFZ2N8H8MEx
 iVf5Szb253Dl+WWPAV7keaUI1nEPZr+8JInvo5L2yUCvUYVqlNr+nUBT0un5Hq7ep56B
 xK+07oJFLYrSVlz1EtnmqvGzqxpn23gsvRCXg9oSx0YS/6wckZcSLReJBZUxKWcEpCRg
 7ALQ==
X-Gm-Message-State: AOJu0Yw1kJvzIFSWX93XeU2r8xuehx9Yvx70EC/u/UnQf21qhExwnbE2
 RDnBgPjOLbmZzucEe6Ha8BgwbgBDs9EZPyc53h4C1E04AEF1rhWRBEBhmA==
X-Gm-Gg: ASbGncuRsGQB0VHJ/FmN8qPmYnncVU3C5vcKYWPlxOXnwh/AreSxx0DIUTFtz2VeKDz
 zNLdj7IhjxXgGp9s93MiLlVWKQcy3GmX/5ovMIQo1UtB6/t0MfYfhxz3kT6vrK+Czdb6e96NuuS
 1vr9tkOkt2ryLMTbMaf12xQDbPIm9I2i/TxclUuFJjdvSKAbRQ3btumpun1uRCsUooLs6tyIqgY
 YB5qDYt0jtQ08My2Tkxq9GQ9+76vDTccj0TSpL1bAtApqvu5m0JvxpKk/KSTkGRc+Wn0d4dxvkx
 8lGqtO/3WqDfiH2256apaitNdOrYGWo1fQIDOBDmadwWysDVz7k8W7VD/9NLZmo8
X-Google-Smtp-Source: AGHT+IFhiN5Zx9/8DzREA5YUYMmVQPi6yuh0IopGu0DWxvT4FL5OLsEs2V7UjP3E/fhYZywZQ0v5SA==
X-Received: by 2002:a17:90b:2710:b0:2ee:741c:e9f4 with SMTP id
 98e67ed59e1d1-306a615018dmr19313160a91.11.1744065936397; 
 Mon, 07 Apr 2025 15:45:36 -0700 (PDT)
Received: from localhost.localdomain ([2800:2121:b000:82e:104f:6880:202d:b978])
 by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-3057ca1e3d6sm10850208a91.3.2025.04.07.15.45.35
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Apr 2025 15:45:35 -0700 (PDT)
From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Date: Mon,  7 Apr 2025 19:45:23 -0300
Message-ID: <20250407224523.1455-1-jamrial@gmail.com>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH] avutil/dict: fix memleak in av_dict_set()
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250407224523.1455-1-jamrial@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Regression since 19e9a203b7b8e613840b055cdf68303a4fb84581.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavutil/dict.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/libavutil/dict.c b/libavutil/dict.c
index f7dcd07eeb..fafb454fd3 100644
--- a/libavutil/dict.c
+++ b/libavutil/dict.c
@@ -99,27 +99,28 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
         err = AVERROR(EINVAL);
         goto err_out;
     }
+    if (flags & AV_DICT_DONT_STRDUP_KEY)
+        copy_key = (void *)key;
+    else
+        copy_key = av_strdup(key);
+    if (!copy_key || (value && !copy_value))
+        goto enomem;
+
     if (!(flags & AV_DICT_MULTIKEY)) {
         tag = av_dict_get(m, key, NULL, flags);
     } else if (flags & AV_DICT_DEDUP) {
         while ((tag = av_dict_get(m, key, tag, flags))) {
             if ((!value && !tag->value) ||
                 (value && tag->value && !strcmp(value, tag->value))) {
-                if (flags & AV_DICT_DONT_STRDUP_KEY)
-                    av_free((void*)key);
-                if (flags & AV_DICT_DONT_STRDUP_VAL)
-                    av_free((void*)value);
+                av_free(copy_key);
+                av_free(copy_value);
                 return 0;
             }
         }
     }
-    if (flags & AV_DICT_DONT_STRDUP_KEY)
-        copy_key = (void *)key;
-    else
-        copy_key = av_strdup(key);
     if (!m)
         m = *pm = av_mallocz(sizeof(*m));
-    if (!m || !copy_key || (value && !copy_value))
+    if (!m)
         goto enomem;
 
     if (tag) {
-- 
2.49.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".