From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Ilya Tretyakov <it@it3xl.ru>
Subject: Re: [PATCH] credential: fix matching URLs with multiple levels in path
Date: Wed, 22 Apr 2020 18:45:49 +0000 [thread overview]
Message-ID: <20200422184549.GH6465@camp.crustytoothpaste.net> (raw)
In-Reply-To: <20200422041614.GD3559880@coredump.intra.peff.net>
[-- Attachment #1: Type: text/plain, Size: 3125 bytes --]
On 2020-04-22 at 04:16:14, Jeff King wrote:
> On Wed, Apr 22, 2020 at 01:23:44AM +0000, brian m. carlson wrote:
>
> > 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, this would be
> > surprising to other potential users who might want to use it and might
> > result in unwanted slashes appearing in the encoded value.
> >
> > So instead, let's add a flag to skip 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.
>
> Thanks for the quick turnaround. The explanation makes sense.
>
> The patch leaves me with one question, though...
>
> > diff --git a/credential.c b/credential.c
> > index 108d9e183a..f0e55a27ac 100644
> > --- a/credential.c
> > +++ b/credential.c
> > @@ -136,14 +136,14 @@ static void credential_format(struct credential *c, struct strbuf *out)
> > return;
> > strbuf_addf(out, "%s://", c->protocol);
> > if (c->username && *c->username) {
> > - strbuf_add_percentencode(out, c->username);
> > + strbuf_add_percentencode(out, c->username, STRBUF_PERCENTENCODE_PATH);
> > strbuf_addch(out, '@');
>
> Wouldn't we want to keep encoding slashes in the username?
Oh, you're right, we would. That makes my commit message shorter, even.
> > diff --git a/t/t0300-credentials.sh b/t/t0300-credentials.sh
> > index 5555a1524f..15eeef1dfd 100755
> > --- a/t/t0300-credentials.sh
> > +++ b/t/t0300-credentials.sh
> > @@ -510,6 +510,24 @@ test_expect_success 'helpers can abort the process' '
> > test_i18ncmp expect stderr
> > '
> >
> > +test_expect_success 'helpers can fetch with multiple path components' '
> > + test_unconfig credential.helper &&
> > + test_config credential.https://example.com/foo/repo.git.helper "verbatim foo bar" &&
>
> OK, you can't just use an argument to "check" because you want to set a
> specific config option, not just credential.helper. Would this test make
> sense a little higher in the file, below "match percent-encoded values"
> perhaps?
I can hoist it, sure.
> > + echo url=https://example.com/foo/repo.git | git credential fill &&
>
> What's this line doing? It will just do the same "check fill" as
> below, but without the stdout checking. Is it leftover debugging cruft?
Yeah, it is. I'll rip it out in v2.
--
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
next prev parent reply other threads:[~2020-04-22 18:45 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-21 22:31 Credential helpers are no longer invoked in case of having sub-folder parts in a repository URL. Since 2.26.1 version Ilya Tretyakov
2020-04-21 22:58 ` Jeff King
2020-04-22 1:09 ` brian m. carlson
2020-04-22 1:28 ` Jonathan Nieder
2020-04-22 1:36 ` Jeff King
2020-04-22 2:20 ` brian m. carlson
2020-04-22 4:06 ` Jeff King
2020-04-22 19:20 ` Johannes Schindelin
2020-04-22 1:23 ` [PATCH] credential: fix matching URLs with multiple levels in path brian m. carlson
2020-04-22 4:16 ` Jeff King
2020-04-22 18:45 ` brian m. carlson [this message]
2020-04-22 19:51 ` [PATCH v2] " brian m. carlson
2020-04-22 20:04 ` Jeff King
2020-04-24 4:50 ` Carlo Marcelo Arenas Belón
2020-04-24 20:20 ` Junio C Hamano
2020-04-25 21:32 ` [PATCH v3] redential: " brian m. carlson
2020-04-26 1:51 ` Eric Sunshine
2020-04-26 17:26 ` [PATCH v4] credential: " brian m. carlson
2020-04-27 1:18 ` [PATCH v5] " brian m. carlson
2020-04-27 18:44 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200422184549.GH6465@camp.crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=git@vger.kernel.org \
--cc=it@it3xl.ru \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.