]> git.ipfire.org Git - thirdparty/git.git/commit
credential_format(): also encode <host>[:<port>]
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 7 Nov 2024 07:57:52 +0000 (08:57 +0100)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Tue, 26 Nov 2024 19:24:00 +0000 (20:24 +0100)
commitc903985bf7e772e2d08275c1a95c8a55ab011577
tree485d53e1839ac405ce36fbf210855f8266bb4476
parent83b08eb19f05710a92d565124606dcaf68bcc68b
credential_format(): also encode <host>[:<port>]

An upcoming change wants to sanitize the credential password prompt
where a URL is displayed that may potentially come from a `.gitmodules`
file. To this end, the `credential_format()` function is employed.

To sanitize the host name (and optional port) part of the URL, we need a
new mode of the `strbuf_add_percentencode()` function because the
current mode is both too strict and too lenient: too strict because it
encodes `:`, `[` and `]` (which should be left unencoded in
`<host>:<port>` and in IPv6 addresses), and too lenient because it does
not encode invalid host name characters `/`, `_` and `~`.

So let's introduce and use a new mode specifically to encode the host
name and optional port part of a URI, leaving alpha-numerical
characters, periods, colons and brackets alone and encoding all others.

This only leads to a change of behavior for URLs that contain invalid
host names.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
credential.c
strbuf.c
strbuf.h
t/t0300-credentials.sh