rebase: don't leak on "--abort"

Fix a leak in the recent 6159e7add49 (rebase --abort: improve reflog message, 2022-10-12). Before that commit we'd strbuf_release() the reflog message we were formatting, but when that code was refactored to use "ropts.head_msg" the strbuf_release() was omitted. Ideally the three users of "ropts" in cmd_rebase() should use different "ropts" variables, in practice they're completely separate, as this and the other user in the "switch" statement will "goto cleanup", which won't touch "ropts". The third caller after the "switch" is then unreachable if we take these two branches, so all of them are getting a "{ 0 }" init'd "ropts". So it's OK that we're leaving a stale pointer in "ropts.head_msg", cleaning it up was our responsibility, and it won't be used again. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>

Ævar Arnfjörð Bjarmason committed Nov 8, 2022 at 19:17 UTC 5ff6e8afac66db0dddb7b12744786e08a293784e
2 files changed +2
builtin/rebase.c
+1
@@ -1322,6 +1322,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
1322 if (reset_head(the_repository, &ropts) < 0)
1323 die(_("could not move back to %s"),
1324 oid_to_hex(&options.orig_head->object.oid));
1325 + strbuf_release(&head_msg);
1326 remove_branch_state(the_repository, 0);
1327 ret = finish_rebase(&options);
1328 goto cleanup;
t/t7517-per-repo-email.sh
+1
@@ -9,6 +9,7 @@ test_description='per-repo forced setting of email address'
9 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
10 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
11
12 +TEST_PASSES_SANITIZE_LEAK=true
13 . ./test-lib.sh
14
15 test_expect_success 'setup a likely user.useConfigOnly use case' '