From f7438e743c849e8d5ed5ee0fd766515ed73675fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Tue, 3 Dec 2024 11:44:17 +0700 Subject: [PATCH] git: update to 2.47.1. --- srcpkgs/git/patches/ps | 114 ----------------------------------------- srcpkgs/git/template | 4 +- 2 files changed, 2 insertions(+), 116 deletions(-) delete mode 100644 srcpkgs/git/patches/ps diff --git a/srcpkgs/git/patches/ps b/srcpkgs/git/patches/ps deleted file mode 100644 index fe1bc804bff..00000000000 --- a/srcpkgs/git/patches/ps +++ /dev/null @@ -1,114 +0,0 @@ -From: Patrick Steinhardt -Subject: [PATCH v3] 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 -Signed-off-by: Patrick Steinhardt ---- - - builtin/gc.c | 7 +++++-- - t/t7900-maintenance.sh | 16 ++++++++++++++++ - 2 files changed, 21 insertions(+), 2 deletions(-) - -diff --git a/builtin/gc.c b/builtin/gc.c -index 6a7a2da006..d52735354c 100644 ---- a/builtin/gc.c -+++ b/builtin/gc.c -@@ -1832,7 +1832,7 @@ static const char *get_extra_launchctl_strings(void) { - * | 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” -@@ -1850,8 +1850,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; -diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh -index a66d0e089d..c224c8450c 100755 ---- 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=' ' - test_expect_code 129 git maintenance start --scheduler=foo 2>err && - test_grep "unrecognized --scheduler argument" err && - -Range-diff against v2: -1: 5798c31e1e ! 1: a5b1433abf builtin/gc: fix crash when running `git maintenance start` - @@ t/t7900-maintenance.sh: test_expect_success !MINGW 'register and unregister with - +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 "\$*" >>"$(pwd)"/systemctl.log - ++ 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 - ++ PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd - + ) && - + test_grep -- "--user list-timers" systemctl.log && - + test_grep -- "enable --now git-maintenance@" systemctl.log --- -2.47.0.dirty - - - diff --git a/srcpkgs/git/template b/srcpkgs/git/template index 042eded4ee8..8a8f5617dc6 100644 --- a/srcpkgs/git/template +++ b/srcpkgs/git/template @@ -1,6 +1,6 @@ # Template file for 'git' pkgname=git -version=2.47.0 +version=2.47.1 revision=1 hostmakedepends="asciidoc gettext perl pkg-config tk xmlto" makedepends="libglib-devel libcurl-devel libsecret-devel pcre2-devel tk-devel" @@ -14,7 +14,7 @@ license="GPL-2.0-only" homepage="https://git-scm.com/" changelog="https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/${version}.txt" distfiles="https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz" -checksum=1ce114da88704271b43e027c51e04d9399f8c88e9ef7542dae7aebae7d87bc4e +checksum=f3d8f9bb23ae392374e91cd9d395970dabc5b9c5ee72f39884613cd84a6ed310 replaces="git-perl>=0" python_version=3