]> git.ipfire.org Git - thirdparty/git.git/commit
promisor-remote: fix segfault when remote URL is missing
authorChristian Couder <christian.couder@gmail.com>
Tue, 18 Mar 2025 11:00:06 +0000 (12:00 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 18 Mar 2025 19:22:33 +0000 (12:22 -0700)
commitb059339bb32eb24c51378afd13814f45353fc0c4
tree84ff28c49d371c4a8b6b3c28a0a1624bffd7189d
parent9e05fbe61ba029a3ff9a984709875d76341a217c
promisor-remote: fix segfault when remote URL is missing

Using strvec_push() to push `NULL` into a 'strvec' results in a
segfault, because `xstrdup(NULL)` crashes.

So when an URL is missing from the config, let's not push the remote
name and URL into the 'strvec's.

While at it, let's also not push them in case the URL is empty. It's
just not worth the trouble and it's consistent with how Git otherwise
treats missing and empty URLs in the same way.

Note that in case of missing or empty URL, Git uses the remote name to
fetch, which can work if the remote is on the same filesystem. So
configurations where the client, server and remote are all on the same
filesystem may need URLs to be configured even if they are the same as
the remote names. But this is a rare case, and the work around is easy
enough.

We leave improving the strvec API and/or xstrdup() for a future
separate effort.

While at it, let's also use git_config_get_string_tmp() instead of
git_config_get_string() to simplify memory management.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
promisor-remote.c
t/t5710-promisor-remote-capability.sh