From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Subject: [PATCH 11/21] builtin/commit: fix leaking cleanup config
Date: Fri, 11 Oct 2024 07:32:40 +0200 [thread overview]
Message-ID: <8ca4344ed8674b6c40b5fee96d23f64517c7b9e0.1728624670.git.ps@pks.im> (raw)
In-Reply-To: <cover.1728624670.git.ps@pks.im>
The cleanup string set by the config is leaking when it is being
overridden by an option. Fix this by tracking these via two separate
variables such that we can free the old value.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
builtin/commit.c | 17 ++++++++++++-----
t/t7502-commit-porcelain.sh | 1 +
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index 18a55bd1b91..71d674138c9 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -135,7 +135,7 @@ static struct strvec trailer_args = STRVEC_INIT;
* is specified explicitly.
*/
static enum commit_msg_cleanup_mode cleanup_mode;
-static char *cleanup_arg;
+static char *cleanup_config;
static enum commit_whence whence;
static int use_editor = 1, include_status = 1;
@@ -1387,8 +1387,6 @@ static int parse_and_validate_options(int argc, const char *argv[],
if (0 <= edit_flag)
use_editor = edit_flag;
- cleanup_mode = get_cleanup_mode(cleanup_arg, use_editor);
-
handle_untracked_files_arg(s);
if (all && argc > 0)
@@ -1636,8 +1634,10 @@ static int git_commit_config(const char *k, const char *v,
include_status = git_config_bool(k, v);
return 0;
}
- if (!strcmp(k, "commit.cleanup"))
- return git_config_string(&cleanup_arg, k, v);
+ if (!strcmp(k, "commit.cleanup")) {
+ FREE_AND_NULL(cleanup_config);
+ return git_config_string(&cleanup_config, k, v);
+ }
if (!strcmp(k, "commit.gpgsign")) {
sign_commit = git_config_bool(k, v) ? "" : NULL;
return 0;
@@ -1658,6 +1658,7 @@ int cmd_commit(int argc,
struct repository *repo UNUSED)
{
static struct wt_status s;
+ static const char *cleanup_arg = NULL;
static struct option builtin_commit_options[] = {
OPT__QUIET(&quiet, N_("suppress summary after successful commit")),
OPT__VERBOSE(&verbose, N_("show diff in commit message template")),
@@ -1757,6 +1758,12 @@ int cmd_commit(int argc,
if (verbose == -1)
verbose = (config_commit_verbose < 0) ? 0 : config_commit_verbose;
+ if (cleanup_arg) {
+ free(cleanup_config);
+ cleanup_config = xstrdup(cleanup_arg);
+ }
+ cleanup_mode = get_cleanup_mode(cleanup_config, use_editor);
+
if (dry_run)
return dry_run_commit(argv, prefix, current_head, &s);
index_file = prepare_index(argv, prefix, current_head, 0);
diff --git a/t/t7502-commit-porcelain.sh b/t/t7502-commit-porcelain.sh
index b37e2018a74..84f1ff52b67 100755
--- a/t/t7502-commit-porcelain.sh
+++ b/t/t7502-commit-porcelain.sh
@@ -5,6 +5,7 @@ test_description='git commit porcelain-ish'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
commit_msg_is () {
--
2.47.0.dirty
next prev parent reply other threads:[~2024-10-11 5:32 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-11 5:32 [PATCH 00/21] Memory leak fixes (pt.9) Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 01/21] builtin/ls-remote: plug leaking server options Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 02/21] t/helper: fix leaks in "reach" test tool Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 03/21] grep: fix leak in `grep_splice_or()` Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 04/21] builtin/grep: fix leak with `--max-count=0` Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 05/21] revision: fix leaking bloom filters Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 06/21] diff-lib: fix leaking diffopts in `do_diff_cache()` Patrick Steinhardt
2024-10-21 9:46 ` Kristoffer Haugsbakk
2024-10-11 5:32 ` [PATCH 07/21] pretty: clear signature check Patrick Steinhardt
2024-10-18 12:02 ` Toon Claes
2024-10-21 8:44 ` Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 08/21] upload-pack: fix leaking URI protocols Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 09/21] builtin/commit: fix leaking change data contents Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 10/21] trailer: fix leaking trailer values Patrick Steinhardt
2024-10-18 12:03 ` Toon Claes
2024-10-21 8:44 ` Patrick Steinhardt
2024-10-11 5:32 ` Patrick Steinhardt [this message]
2024-10-11 5:32 ` [PATCH 12/21] transport-helper: fix leaking import/export marks Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 13/21] builtin/tag: fix leaking key ID on failure to sign Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 14/21] combine-diff: fix leaking lost lines Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 15/21] dir: release untracked cache data Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 16/21] sparse-index: correctly free EWAH contents Patrick Steinhardt
2024-10-11 5:32 ` [PATCH 17/21] t/helper: stop re-initialization of `the_repository` Patrick Steinhardt
2024-10-11 5:33 ` [PATCH 18/21] t/helper: fix leaking buffer in "dump-untracked-cache" Patrick Steinhardt
2024-10-11 5:33 ` [PATCH 19/21] dir: fix leak when parsing "status.showUntrackedFiles" Patrick Steinhardt
2024-10-11 5:33 ` [PATCH 20/21] builtin/merge: release outbut buffer after performing merge Patrick Steinhardt
2024-10-18 12:03 ` Toon Claes
2024-10-21 8:45 ` Patrick Steinhardt
2024-10-11 5:33 ` [PATCH 21/21] list-objects-filter-options: work around reported leak on error Patrick Steinhardt
2024-10-18 12:04 ` Toon Claes
2024-10-21 8:45 ` Patrick Steinhardt
2024-10-18 21:30 ` [PATCH 00/21] Memory leak fixes (pt.9) Taylor Blau
2024-10-21 8:45 ` Patrick Steinhardt
2024-10-21 9:27 ` [PATCH v2 00/22] " Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 01/22] builtin/ls-remote: plug leaking server options Patrick Steinhardt
2024-11-04 22:10 ` Justin Tobler
2024-11-04 22:18 ` Kristoffer Haugsbakk
2024-10-21 9:28 ` [PATCH v2 02/22] t/helper: fix leaks in "reach" test tool Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 03/22] grep: fix leak in `grep_splice_or()` Patrick Steinhardt
2024-10-21 9:42 ` Kristoffer Haugsbakk
2024-10-21 9:28 ` [PATCH v2 04/22] builtin/grep: fix leak with `--max-count=0` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 05/22] revision: fix leaking bloom filters Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 06/22] diff-lib: fix leaking diffopts in `do_diff_cache()` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 07/22] pretty: clear signature check Patrick Steinhardt
2024-11-04 22:15 ` Justin Tobler
2024-10-21 9:28 ` [PATCH v2 08/22] upload-pack: fix leaking URI protocols Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 09/22] builtin/commit: fix leaking change data contents Patrick Steinhardt
2024-11-04 22:21 ` Justin Tobler
2024-10-21 9:28 ` [PATCH v2 10/22] trailer: fix leaking trailer values Patrick Steinhardt
2024-11-04 22:25 ` Justin Tobler
2024-11-05 5:54 ` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 11/22] trailer: fix leaking strbufs when formatting trailers Patrick Steinhardt
2024-10-21 20:58 ` Taylor Blau
2024-11-04 22:31 ` Justin Tobler
2024-11-05 5:54 ` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 12/22] builtin/commit: fix leaking cleanup config Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 13/22] transport-helper: fix leaking import/export marks Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 14/22] builtin/tag: fix leaking key ID on failure to sign Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 15/22] combine-diff: fix leaking lost lines Patrick Steinhardt
2024-11-04 22:43 ` Justin Tobler
2024-11-05 5:55 ` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 16/22] dir: release untracked cache data Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 17/22] sparse-index: correctly free EWAH contents Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 18/22] t/helper: stop re-initialization of `the_repository` Patrick Steinhardt
2024-10-21 9:28 ` [PATCH v2 19/22] t/helper: fix leaking buffer in "dump-untracked-cache" Patrick Steinhardt
2024-10-21 9:29 ` [PATCH v2 20/22] dir: fix leak when parsing "status.showUntrackedFiles" Patrick Steinhardt
2024-10-21 9:29 ` [PATCH v2 21/22] builtin/merge: release outbut buffer after performing merge Patrick Steinhardt
2024-10-21 9:41 ` Kristoffer Haugsbakk
2024-10-21 9:29 ` [PATCH v2 22/22] list-objects-filter-options: work around reported leak on error Patrick Steinhardt
2024-10-21 9:54 ` [PATCH v2 00/22] Memory leak fixes (pt.9) Kristoffer Haugsbakk
2024-10-21 10:36 ` Patrick Steinhardt
2024-10-25 7:49 ` Toon Claes
2024-11-04 22:46 ` Justin Tobler
2024-11-05 5:55 ` Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 " Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 01/22] builtin/ls-remote: plug leaking server options Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 02/22] t/helper: fix leaks in "reach" test tool Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 03/22] grep: fix leak in `grep_splice_or()` Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 04/22] builtin/grep: fix leak with `--max-count=0` Patrick Steinhardt
2024-11-05 6:16 ` [PATCH v3 05/22] revision: fix leaking bloom filters Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 06/22] diff-lib: fix leaking diffopts in `do_diff_cache()` Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 07/22] pretty: clear signature check Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 08/22] upload-pack: fix leaking URI protocols Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 09/22] builtin/commit: fix leaking change data contents Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 10/22] trailer: fix leaking trailer values Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 11/22] trailer: fix leaking strbufs when formatting trailers Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 12/22] builtin/commit: fix leaking cleanup config Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 13/22] transport-helper: fix leaking import/export marks Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 14/22] builtin/tag: fix leaking key ID on failure to sign Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 15/22] combine-diff: fix leaking lost lines Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 16/22] dir: release untracked cache data Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 17/22] sparse-index: correctly free EWAH contents Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 18/22] t/helper: stop re-initialization of `the_repository` Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 19/22] t/helper: fix leaking buffer in "dump-untracked-cache" Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 20/22] dir: fix leak when parsing "status.showUntrackedFiles" Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 21/22] builtin/merge: release output buffer after performing merge Patrick Steinhardt
2024-11-05 6:17 ` [PATCH v3 22/22] list-objects-filter-options: work around reported leak on error Patrick Steinhardt
2024-11-05 6:51 ` [PATCH v3 00/22] Memory leak fixes (pt.9) Junio C Hamano
2024-11-05 6:52 ` Patrick Steinhardt
2024-11-05 15:27 ` Justin Tobler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8ca4344ed8674b6c40b5fee96d23f64517c7b9e0.1728624670.git.ps@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).