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

Re: [PATCH v4 01/11] add fetch-pack --diag-url tests for some corner cases

From
Torsten Bögershausen <tboegi@web.de>
Date
May 6, 2016, 04:17 UTC
Message-ID
<4349487f-716e-dadf-795b-cf790b03e02d@web.de>
In-Reply-To
<20160505215229.GA31157@glandium.org>
On 05.05.16 23:52, Mike Hommey wrote:
Show 43 quoted lines
> On Wed, May 04, 2016 at 07:48:30AM +0900, Mike Hommey wrote:
>> On Tue, May 03, 2016 at 09:07:41AM -0700, Junio C Hamano wrote:
>>> Mike Hommey <mh@glandium.org> writes:
>>>
>>>> t5603-clone-dirname uses url patterns that are not tested with
>>>> fetch-pack --diag-url, and it would be useful if they were.
>>>>
>>>> Interestingly, some of those tests, involving both a port and a
>>>> user:password pair, don't currently pass. Note that even if a
>>>> user:password pair is actually not supported by git, the values used
>>>> could be valid user names (user names can actually contain colons
>>>> and at signs), and are still worth testing the url parser for.
>>>
>>> I am not sure about the last part of this (and the tests in the
>>> patch for them).  When you are constrained by the Common Internet
>>> Scheme Syntax, i.e.
>>>
>>>     <scheme>://<user>:<password>@<host>:<port>/<url-path>
>>>
>>> you cannot have arbitrary characters in these parts; within the user
>>> and password field, any ":", "@", or "/" must be encoded.
>>>
>>> Which maens that for the purpose of the parser you are modifying,
>>> you can rely on these three special characters to parse things out
>>> (decoding after the code determines which part is user and which
>>> part is password is a separate issue).
>>
>> t5603-clone-dirname contains a test for e.g. ssh://user:passw@rd@host:1234/
>> That's the basis for these additions. Whether that should work or not is
>> besides what I was interested in, which was to have a single test file to
>> run to test my changes, instead of several.
>>
>> Strictly speaking, this patch is not necessary, because it only covers
>> things that I found while breaking other tests.
>>
>> So, there are multiple possible ways forward here:
>> - Completely remove this patch for v5 of the series.
>> - Remove the user:passw@rd cases because of the @.
>> - Remove the user:password cases because we do nothing with the password
>>   anyways.
>> - A combination of both of the above.
> 
> Any opinions on this?
ssh itself does not use a password:
SSH(1)                    BSD General Commands Manual                   SSH(1)
NAME
     ssh -- OpenSSH SSH client (remote login program)
SYNOPSIS
     ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
         [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11]
         [-i identity_file] [-L [bind_address:]port:host:hostport]
         [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
         [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
         [-w local_tun[:remote_tun]] [user@]hostname [command]

Neither does Git. A user name must not include a ':'

The user:password came in here: Commit 92722efec01f67a54b clone: do not use port number as dir name

Actually, looking back, it may have been better to say git clone ssh://aaaa:bbbb@host:/path is illegal and simply die() out.

Back to your question and looking at the offered alternatives. I would vote for "Completely remove this patch for v5 of the series."

Previous: Mike HommeyNext: Junio C Hamano
Message 27 of 46 in “connect: various cleanups”
  1. 0/6 connect: various cleanupsMike Hommey, May 1, 2016
  2. 1/6 connect: remove get_port()Mike Hommey, May 1, 2016
  3. Torsten BögershausenMay 1, 2016
  4. Mike HommeyMay 1, 2016
  5. Jeff KingMay 3, 2016
  6. Mike HommeyMay 3, 2016
  7. 2/6 connect: uniformize and group CONNECT_DIAG_URL handling codeMike Hommey, May 1, 2016
  8. Torsten BögershausenMay 1, 2016
  9. Mike HommeyMay 1, 2016
  10. Torsten BögershausenMay 2, 2016
  11. Mike HommeyMay 2, 2016
  12. Torsten BögershausenMay 2, 2016
  13. Mike HommeyMay 2, 2016
  14. Junio C HamanoMay 2, 2016
  15. Junio C HamanoMay 2, 2016
  16. 3/6 connect: only match the host with core.gitProxyMike Hommey, May 1, 2016
  17. 4/6 connect: pass separate host and port to git_tcp_connect and git_proxy_connectMike Hommey, May 1, 2016
  18. 5/6 connect: don't xstrdup target_hostMike Hommey, May 1, 2016
  19. 6/6 connect: move ssh command line preparation to a separate functionMike Hommey, May 1, 2016
  20. 00/11 connect: various cleanupsMike Hommey, May 3, 2016
  21. 01/11 add fetch-pack --diag-url tests for some corner casesMike Hommey, May 3, 2016
  22. Torsten BögershausenMay 3, 2016
  23. Junio C HamanoMay 3, 2016
  24. Torsten BögershausenMay 3, 2016
  25. Mike HommeyMay 3, 2016
  26. Mike HommeyMay 5, 2016
  27. Torsten BögershausenMay 6, 2016
  28. Junio C HamanoMay 6, 2016
  29. 02/11 connect: call get_host_and_port() earlierMike Hommey, May 3, 2016
  30. 03/11 connect: only match the host with core.gitProxyMike Hommey, May 3, 2016
  31. 04/11 connect: fill the host header in the git protocol with the host and port variablesMike Hommey, May 3, 2016
  32. 05/11 connect: make parse_connect_url() return separated host and portMike Hommey, May 3, 2016
  33. 06/11 connect: group CONNECT_DIAG_URL handling codeMike Hommey, May 3, 2016
  34. 07/11 connect: make parse_connect_url() return the user part of the url as a separate valueMike Hommey, May 3, 2016
  35. 08/11 connect: change the --diag-url output to separate user and hostMike Hommey, May 3, 2016
  36. Torsten BögershausenMay 3, 2016
  37. Eric SunshineMay 3, 2016
  38. Mike HommeyMay 3, 2016
  39. 09/11 connect: use "-l user" instead of "user@" on ssh command lineMike Hommey, May 3, 2016
  40. Torsten BögershausenMay 3, 2016
  41. Junio C HamanoMay 3, 2016
  42. Eric SunshineMay 3, 2016
  43. Mike HommeyMay 3, 2016
  44. 10/11 connect: actively reject git:// urls with a user partMike Hommey, May 3, 2016
  45. 11/11 connect: move ssh command line preparation to a separate functionMike Hommey, May 3, 2016
  46. 11/11 connect: move ssh command line preparation to a separate functionMike Hommey, May 3, 2016

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.