From: Samuel Thibault Date: Fri, 04 Dec 2020 22:14:57 GMT Subject: [PATCH] fetch-pack: check result of index_pack_lockfile Message-ID: <20201204221457.2873935-1-samuel.thibault@ens-lyon.org> The fetch-pack command may fail (e.g. like in test 15 - fetch into corrupted repo with index-pack), in which case index_pack_lockfile will return NULL. We should then avoid adding it to pack_lockfiles, since the rest of the code assumes that it is non-NULL. Notably transport_unlock_pack() calls unlink_or_warn() with it, thus unlink() with it. On Linux that fortunately only returns EFAULT, but other systems would segfault there. Signed-off-by: Samuel Thibault --- fetch-pack.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fetch-pack.c b/fetch-pack.c index b10c432315..7d31232960 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -915,8 +915,9 @@ static int get_pack(struct fetch_pack_args *args, if (start_command(&cmd)) die(_("fetch-pack: unable to fork off %s"), cmd_name); if (do_keep && pack_lockfiles) { - string_list_append_nodup(pack_lockfiles, - index_pack_lockfile(cmd.out)); + char *lockfile = index_pack_lockfile(cmd.out); + if (lockfile) + string_list_append_nodup(pack_lockfiles, lockfile); close(cmd.out); } -- 2.29.2