Re: [PATCH v4 1/3] clone: do not include authentication data in guessed dir
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 5, 2015, 19:41 UTC
- Message-ID
- <xmqqmvy534m0.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <xmqqr3nh34tv.fsf@gitster.dls.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 5 quoted lines
> 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 /.git