1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-28 12:59:41 +01:00

fsck: reject .gitmodules git:// urls with newlines

The previous commit taught the clone/fetch client side to reject a
git:// URL with a newline in it. Let's also catch these when fscking a
.gitmodules file, which will give an earlier warning.

Note that it would be simpler to just complain about newline in _any_
URL, but an earlier tightening for http/ftp made sure we kept allowing
newlines for unknown protocols (and this is covered in the tests). So
we'll stick to that precedent.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2021-01-07 04:44:17 -05:00 committed by Junio C Hamano
parent a02ea57717
commit 6aed56736b
2 changed files with 16 additions and 1 deletions

2
fsck.c
View file

@ -1086,7 +1086,7 @@ static int check_submodule_url(const char *url)
if (looks_like_command_line_option(url))
return -1;
if (submodule_url_is_relative(url)) {
if (submodule_url_is_relative(url) || starts_with(url, "git://")) {
char *decoded;
const char *next;
int has_nl;

View file

@ -201,4 +201,19 @@ test_expect_success 'fsck rejects embedded newline in relative url' '
grep gitmodulesUrl err
'
test_expect_success 'fsck rejects embedded newline in git url' '
git checkout --orphan git-newline &&
cat >.gitmodules <<-\EOF &&
[submodule "foo"]
url = "git://example.com:1234/repo%0a.git"
EOF
git add .gitmodules &&
git commit -m "git url with newline" &&
test_when_finished "rm -rf dst" &&
git init --bare dst &&
git -C dst config transfer.fsckObjects true &&
test_must_fail git push dst HEAD 2>err &&
grep gitmodulesUrl err
'
test_done