submodule-config.c: strengthen URL fsck check
commit8430b438f628f2f0df08622a550e750158167f28
authorVictoria Dye <vdye@github.com>
Thu, 18 Jan 2024 01:55:18 +0000 (18 01:55 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Jan 2024 18:15:41 +0000 (19 10:15 -0800)
treeb41eb05e4e1a087148ef6aa883215feac80d74f3
parent7e2fc39d8c02048e9dddcba1b1b6786a8088a1a8
submodule-config.c: strengthen URL fsck check

Update the validation of "curl URL" submodule URLs (i.e. those that specify
an "http[s]" or "ftp[s]" protocol) in 'check_submodule_url()' to catch more
invalid URLs. The existing validation using 'credential_from_url_gently()'
parses certain URLs incorrectly, leading to invalid submodule URLs passing
'git fsck' checks. Conversely, 'url_normalize()' - used to validate remote
URLs in 'remote_get()' - correctly identifies the invalid URLs missed by
'credential_from_url_gently()'.

To catch more invalid cases, replace 'credential_from_url_gently()' with
'url_normalize()' followed by a 'url_decode()' and a check for newlines
(mirroring 'check_url_component()' in the 'credential_from_url_gently()'
validation).

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule-config.c
t/t7450-bad-git-dotfiles.sh