Re: [PATCH v4 1/3] clone: do not include authentication data in guessed dir
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Aug 6, 2015, 09:47 UTC
- Message-ID
- <20150806094732.GA746@pks-xps>
- In-Reply-To
- <xmqqmvy534m0.fsf@gitster.dls.corp.google.com>
On Wed, Aug 05, 2015 at 12:41:27PM -0700, Junio C Hamano wrote:
Show 38 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
> > For completeness, here is what I think the end result (together with
> > Peff's series) of the test should look like.
> > ...
> > Note that ssh://user:passw@rd@host:1234/ and user:passw@rd@host:/
> > tests fail for the same reason (finding @ should be greedy, I think).
>
> And I think this should make it pass. Just remember the last
> occurrence of '@' by moving the 'start' every time we see an '@'
> sign.
>
> builtin/clone.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/builtin/clone.c b/builtin/clone.c
> index cae288f..5d86439 100644
> --- a/builtin/clone.c
> +++ b/builtin/clone.c
> @@ -160,13 +160,12 @@ static char *guess_dir_name(const char *repo, int is_bundle, int is_bare)
> start += 3;
>
> /*
> - * Skip authentication data.
> + * Skip authentication data, if exists.
> */
> - ptr = start;
> - while (ptr < end && !is_dir_sep(*ptr) && *ptr != '@')
> - ptr++;
> - if (*ptr == '@')
> - start = ptr + 1;
> + for (ptr = start; ptr < end && !is_dir_sep(*ptr); ptr++) {
> + if (*ptr == '@')
> + start = ptr + 1;
> + }
>
> /*
> * Strip trailing spaces, slashes and /.gitI guess it makes sense to skip over @-signs greedily. Is there anything I need to do here or will you squash those changes in?