Re: [PATCH] remote-curl: ensure that URLs do not have a trailing slash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tay Ray Chuan <rctay89@xxxxxxxxx> writes:

> Signed-off-by: Tay Ray Chuan <rctay89@xxxxxxxxx>
> ---
>  remote-curl.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/remote-curl.c b/remote-curl.c
> index 0782756..0f21f8a 100644
> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -101,7 +101,8 @@ static struct discovery* discover_refs(const char *service)
>  		return last;
>  	free_discovery(last);
>  
> -	strbuf_addf(&buffer, "%s/info/refs", url);
> +	end_url_with_slash(&buffer, url);
> +	strbuf_addstr(&buffer, "info/refs");
>  	if (!prefixcmp(url, "http://";) || !prefixcmp(url, "https://";)) {
>  		is_http = 1;
>  		if (!strchr(url, '?'))
> @@ -120,7 +121,8 @@ static struct discovery* discover_refs(const char *service)
>  		strbuf_reset(&buffer);
>  
>  		proto_git_candidate = 0;
> -		strbuf_addf(&buffer, "%s/info/refs", url);
> +		end_url_with_slash(&buffer, url);
> +		strbuf_addstr(&buffer, "info/refs");
>  		refs_url = strbuf_detach(&buffer, NULL);
>  
>  		http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE);
> @@ -511,7 +513,8 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads)
>  	rpc->out = client.out;
>  	strbuf_init(&rpc->result, 0);
>  
> -	strbuf_addf(&buf, "%s/%s", url, svc);
> +	end_url_with_slash(&buf, url)
> +	strbuf_addf(&buf, "%s", svc);
>  	rpc->service_url = strbuf_detach(&buf, NULL);
>  
>  	strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc);

The code does not look like it is making sure things do not have a
trailing slash.  For example, if svc has trailing slash, either %s/%s or
strbuf_addf() would have the last character of svc in rpc->service_url.

You are fixing something else.

The new code avoids duplicated slashes in the middle if "url" can but does
not necessarily end with a slash.  Is that what you are trying to fix?  I
wonder if it makes more sense to make sure "url" always ends with a slash
at the calling sites where it is obtained from either the end user or from
the running environment...
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]