git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] submodule-config.c: strengthen URL fsck check

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 9, 2024, 21:57 UTC
Message-ID
<xmqqplyaf9vp.fsf@gitster.g>
In-Reply-To
<893071530d3b77d6b72b7f69a6dfb9947579865e.1704822817.git.gitgitgadget@gmail.com>
"Victoria Dye via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 14 quoted lines
> From: Victoria Dye <vdye@github.com>
>
> 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).

Thanks. Left hand and right hand checking the same thing in different ways and coming up with different result is never a happy situation. Making sure we consistently use the same definition of what the valid URLs are is a very welcome thing to do, of course.

Show 5 quoted lines
> -test_expect_failure 'check urls' '
> +test_expect_success 'check urls' '
>  	cat >expect <<-\EOF &&
>  	./bar/baz/foo.git
>  	https://example.com/foo.git

It is a bit unfortunate that from here we cannot tell which bogus URLs in this test that were incorrectly accepted are now rejected.

Among the many bogus URLs in the input, we used to allow
    http://example.com:test/foo.git

(we do not accept non-numeric representation of port numbers, so http://example.com:http/foo.git would also be rejected), but with this change, it is now rejected. All the other bogus ones are rejected just as before this change.

Will queue.  Thanks.
Previous: Victoria Dye via GitGitGadgetNext: Patrick Steinhardt
Message 10 of 31 in “Strengthen fsck checks for submodule URLs”
  1. 0/3 Strengthen fsck checks for submodule URLsVictoria Dye via GitGitGadget, Jan 9, 2024
  2. 1/3 submodule-config.h: move check_submodule_urlVictoria Dye via GitGitGadget, Jan 9, 2024
  3. 2/3 t7450: test submodule urlsVictoria Dye via GitGitGadget, Jan 9, 2024
  4. Junio C HamanoJan 9, 2024
  5. Victoria DyeJan 11, 2024
  6. Jeff KingJan 10, 2024
  7. Victoria DyeJan 11, 2024
  8. Jeff KingJan 12, 2024
  9. 3/3 submodule-config.c: strengthen URL fsck checkVictoria Dye via GitGitGadget, Jan 9, 2024
  10. Junio C HamanoJan 9, 2024
  11. Patrick SteinhardtJan 10, 2024
  12. Victoria DyeJan 17, 2024
  13. Jeff KingJan 10, 2024
  14. Neil MayhewNov 13, 2024
  15. Neil MayhewNov 13, 2024
  16. Junio C HamanoNov 13, 2024
  17. Jeff KingNov 14, 2024
  18. Neil MayhewNov 14, 2024
  19. Junio C HamanoNov 14, 2024
  20. Neil MayhewNov 14, 2024
  21. Neil MayhewNov 14, 2024
  22. 0/4 Strengthen fsck checks for submodule URLsVictoria Dye via GitGitGadget, Jan 18, 2024
  23. 1/4 submodule-config.h: move check_submodule_urlVictoria Dye via GitGitGadget, Jan 18, 2024
  24. 2/4 test-submodule: remove command line handling for check-nameVictoria Dye via GitGitGadget, Jan 18, 2024
  25. Junio C HamanoJan 18, 2024
  26. 3/4 t7450: test submodule urlsVictoria Dye via GitGitGadget, Jan 18, 2024
  27. Patrick SteinhardtJan 19, 2024
  28. Junio C HamanoJan 19, 2024
  29. 4/4 submodule-config.c: strengthen URL fsck checkVictoria Dye via GitGitGadget, Jan 18, 2024
  30. Junio C HamanoJan 18, 2024
  31. Jeff KingJan 20, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.