commit: 1a95f5bad210d7dcafbc1160c8e6197bbf3732bf Author: Michael Mair-Keimberger <mmk <AT> levelnine <DOT> at> AuthorDate: Fri Jan 10 15:58:32 2025 +0000 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> CommitDate: Fri Jan 10 21:41:39 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1a95f5ba
dev-vcs/git: remove unused patch Signed-off-by: Michael Mair-Keimberger <mmk <AT> levelnine.at> Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org> dev-vcs/git/files/git-2.47.0-maintenance.patch | 85 -------------------------- 1 file changed, 85 deletions(-) diff --git a/dev-vcs/git/files/git-2.47.0-maintenance.patch b/dev-vcs/git/files/git-2.47.0-maintenance.patch deleted file mode 100644 index 085d4adac33f..000000000000 --- a/dev-vcs/git/files/git-2.47.0-maintenance.patch +++ /dev/null @@ -1,85 +0,0 @@ -https://lore.kernel.org/git/CAG=um+0mjw-oah+ylc3dweu64jws-zmkktifwybe4g6hmbe...@mail.gmail.com/ -https://github.com/git/git/commit/c95547a394a35dc26afa686454086d2db6e51ea4 - -From c95547a394a35dc26afa686454086d2db6e51ea4 Mon Sep 17 00:00:00 2001 -From: Patrick Steinhardt <[email protected]> -Date: Thu, 10 Oct 2024 07:33:01 +0200 -Subject: [PATCH] builtin/gc: fix crash when running `git maintenance start` - -It was reported on the mailing list that running `git maintenance start` -immediately segfaults starting with b6c3f8e12c (builtin/maintenance: fix -leak in `get_schedule_cmd()`, 2024-09-26). And indeed, this segfault is -trivial to reproduce up to a point where one is scratching their head -why we didn't catch this regression in our test suite. - -The root cause of this error is `get_schedule_cmd()`, which does not -populate the `out` parameter in all cases anymore starting with the -mentioned commit. Callers do assume it to always be populated though and -will e.g. call `strvec_split()` on the returned value, which will of -course segfault when the variable is uninitialized. - -So why didn't we catch this trivial regression? The reason is that our -tests always set up the "GIT_TEST_MAINT_SCHEDULER" environment variable -via "t/test-lib.sh", which allows us to override the scheduler command -with a custom one so that we don't accidentally modify the developer's -system. But the faulty code where we don't set the `out` parameter will -only get hit in case that environment variable is _not_ set, which is -never the case when executing our tests. - -Fix the regression by again unconditionally allocating the value in the -`out` parameter, if provided. Add a test that unsets the environment -variable to catch future regressions in this area. - -Reported-by: Shubham Kanodia <[email protected]> -Signed-off-by: Patrick Steinhardt <[email protected]> -Signed-off-by: Junio C Hamano <[email protected]> ---- a/builtin/gc.c -+++ b/builtin/gc.c -@@ -1794,7 +1794,7 @@ static const char *get_frequency(enum schedule_priority schedule) - * | Input | Output | - * | *cmd | return code | *out | *is_available | - * +-------+-------------+-------------------+---------------+ -- * | "foo" | false | NULL | (unchanged) | -+ * | "foo" | false | "foo" (allocated) | (unchanged) | - * +-------+-------------+-------------------+---------------+ - * - * GIT_TEST_MAINT_SCHEDULER set to “foo:./mock_foo.sh,bar:./mock_bar.sh” -@@ -1812,8 +1812,11 @@ static int get_schedule_cmd(const char *cmd, int *is_available, char **out) - struct string_list_item *item; - struct string_list list = STRING_LIST_INIT_NODUP; - -- if (!testing) -+ if (!testing) { -+ if (out) -+ *out = xstrdup(cmd); - return 0; -+ } - - if (is_available) - *is_available = 0; ---- a/t/t7900-maintenance.sh -+++ b/t/t7900-maintenance.sh -@@ -646,6 +646,22 @@ test_expect_success !MINGW 'register and unregister with regex metacharacters' ' - maintenance.repo "$(pwd)/$META" - ' - -+test_expect_success 'start without GIT_TEST_MAINT_SCHEDULER' ' -+ test_when_finished "rm -rf systemctl.log script repo" && -+ mkdir script && -+ write_script script/systemctl <<-\EOF && -+ echo "$*" >>../systemctl.log -+ EOF -+ git init repo && -+ ( -+ cd repo && -+ sane_unset GIT_TEST_MAINT_SCHEDULER && -+ PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd -+ ) && -+ test_grep -- "--user list-timers" systemctl.log && -+ test_grep -- "enable --now git-maintenance@" systemctl.log -+' -+ - test_expect_success 'start --scheduler=<scheduler>' ' - test_expect_code 129 git maintenance start --scheduler=foo 2>err && - test_grep "unrecognized --scheduler argument" err && -
