aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-07-02 09:27:58 -0700
committerJunio C Hamano <gitster@pobox.com>2024-07-02 09:27:58 -0700
commit5cf6e9b022cd281b2da66c58b5c033b9b735c160 (patch)
treef34edb5e7836b7c084cee285f66d8a83f0f2ea11
parentMerge branch 'jk/t5500-typofix' into maint-2.45 (diff)
parentfetch-pack: fix segfault when fscking without --lock-pack (diff)
downloadgit-5cf6e9b022cd281b2da66c58b5c033b9b735c160.tar.gz
git-5cf6e9b022cd281b2da66c58b5c033b9b735c160.zip
Merge branch 'jk/fetch-pack-fsck-wo-lock-pack' into maint-2.45
"git fetch-pack -k -k" without passing "--lock-pack" (which we never do ourselves) did not work at all, which has been corrected. * jk/fetch-pack-fsck-wo-lock-pack: fetch-pack: fix segfault when fscking without --lock-pack
-rw-r--r--fetch-pack.c4
-rwxr-xr-xt/t5500-fetch-pack.sh10
2 files changed, 13 insertions, 1 deletions
diff --git a/fetch-pack.c b/fetch-pack.c
index 28a62e502e..8fb56482c3 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1036,8 +1036,10 @@ static int get_pack(struct fetch_pack_args *args,
if (!is_well_formed)
die(_("fetch-pack: invalid index-pack output"));
- if (pack_lockfile)
+ if (pack_lockfiles && pack_lockfile)
string_list_append_nodup(pack_lockfiles, pack_lockfile);
+ else
+ free(pack_lockfile);
parse_gitmodules_oids(cmd.out, gitmodules_oids);
close(cmd.out);
}
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index b26f367620..585ea0ee16 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -993,6 +993,16 @@ test_expect_success 'ensure bogus fetch.negotiationAlgorithm yields error' '
fetch origin server_has both_have_2
'
+test_expect_success 'fetch-pack with fsckObjects and keep-file does not segfault' '
+ rm -rf server client &&
+ test_create_repo server &&
+ test_commit -C server one &&
+
+ test_create_repo client &&
+ git -c fetch.fsckObjects=true \
+ -C client fetch-pack -k -k ../server HEAD
+'
+
test_expect_success 'filtering by size' '
rm -rf server client &&
test_create_repo server &&