]> git.ipfire.org Git - thirdparty/git.git/commit
credential: fix matching URLs with multiple levels in path
authorbrian m. carlson <sandals@crustytoothpaste.net>
Mon, 27 Apr 2020 01:18:08 +0000 (01:18 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Apr 2020 18:42:20 +0000 (11:42 -0700)
commitb44d0118ac5074215ece7ae2bb86ad0713f70674
tree2ab40ae1c21751987feff9126b6d2b95fcf6c439
parent46fd7b390034eb5dde6a3f955e677c5260e4d10c
credential: fix matching URLs with multiple levels in path

46fd7b3900 ("credential: allow wildcard patterns when matching config",
2020-02-20) introduced support for matching credential helpers using
urlmatch.  In doing so, it introduced code to percent-encode the paths
we get from the credential helper so that they could be effectively
matched by the urlmatch code.

Unfortunately, that code had a bug: it percent-encoded the slashes in
the path, resulting in any URL path that contained multiple levels
(i.e., a directory component) not matching.

We are currently the only caller of the percent-encoding code and could
simply change it not to encode slashes.  However, we still want to
encode slashes in the username component, so we need to have both
behaviors available.

So instead, let's add a flag to control encoding slashes, which is the
behavior we want here, and use it when calling the code in this case.

Add a test for credential helper URLs using multiple slashes in the
path, which our test suite previously lacked, as well as one ensuring
that we handle usernames with slashes gracefully.  Since we're testing
other percent-encoding handling, let's add one for non-ASCII UTF-8
characters as well.

Reported-by: Ilya Tretyakov <it@it3xl.ru>
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
credential.c
strbuf.c
strbuf.h
t/t0300-credentials.sh