mirror of
https://github.com/git/git
synced 2024-11-05 01:58:18 +00:00
builtin/rebase: fix leaking commit.gpgsign
value
In `get_replay_opts()`, we override the `gpg_sign` field that already got populated by `sequencer_init_config()` in case the user has "commit.gpgsign" set in their config. This creates a memory leak because we overwrite the previously assigned value, which may have already pointed to an allocated string. Let's plug the memory leak by freeing the value before we overwrite it. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
648abbe22d
commit
1ca57bea4a
5 changed files with 5 additions and 0 deletions
|
@ -186,6 +186,7 @@ static struct replay_opts get_replay_opts(const struct rebase_options *opts)
|
|||
replay.committer_date_is_author_date =
|
||||
opts->committer_date_is_author_date;
|
||||
replay.ignore_date = opts->ignore_date;
|
||||
free(replay.gpg_sign);
|
||||
replay.gpg_sign = xstrdup_or_null(opts->gpg_sign_opt);
|
||||
replay.reflog_action = xstrdup(opts->reflog_action);
|
||||
if (opts->strategy)
|
||||
|
|
|
@ -303,6 +303,7 @@ static int git_sequencer_config(const char *k, const char *v,
|
|||
}
|
||||
|
||||
if (!strcmp(k, "commit.gpgsign")) {
|
||||
free(opts->gpg_sign);
|
||||
opts->gpg_sign = git_config_bool(k, v) ? xstrdup("") : NULL;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ Initial setup:
|
|||
touch file "conflict".
|
||||
'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
. "$TEST_DIRECTORY"/lib-rebase.sh
|
||||
|
|
|
@ -8,6 +8,7 @@ test_description='test rebase --[no-]gpg-sign'
|
|||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY/lib-rebase.sh"
|
||||
. "$TEST_DIRECTORY/lib-gpg.sh"
|
||||
|
|
|
@ -4,6 +4,7 @@ test_description='signed tag tests'
|
|||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY/lib-gpg.sh"
|
||||
|
||||
|
|
Loading…
Reference in a new issue