diff options
author | Jeff King <peff@peff.net> | 2016-09-07 16:06:42 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-08 11:23:43 -0700 |
commit | d63ed6ef241b2e7f124089e2672cfce8251ed390 (patch) | |
tree | e005bef22590f52a842628230b62c257b92f42fa /http.c | |
parent | 0b65a8dbdb38962e700ee16776a3042beb489060 (diff) | |
download | git-d63ed6ef241b2e7f124089e2672cfce8251ed390.tar.gz git-d63ed6ef241b2e7f124089e2672cfce8251ed390.tar.xz |
remote-curl: handle URLs without protocol
Generally remote-curl would never see a URL that did not
have "proto:" at the beginning, as that is what tells git to
run the "git-remote-proto" helper (and git-remote-http, etc,
are aliases for git-remote-curl).
However, the special syntax "proto::something" will run
git-remote-proto with only "something" as the URL. So a
malformed URL like:
http::/example.com/repo.git
will feed the URL "/example.com/repo.git" to
git-remote-http. The resulting URL has no protocol, but the
code added by 372370f (http: use credential API to handle
proxy authentication, 2016-01-26) does not handle this case
and segfaults.
For the purposes of this code, we don't really care what the
exact protocol; only whether or not it is https. So let's
just assume that a missing protocol is not, and curl will
handle the real error (which is that the URL is nonsense).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http.c')
-rw-r--r-- | http.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -590,7 +590,7 @@ static CURL *get_curl_handle(void) * precedence here, as in CURL. */ if (!curl_http_proxy) { - if (!strcmp(http_auth.protocol, "https")) { + if (http_auth.protocol && !strcmp(http_auth.protocol, "https")) { var_override(&curl_http_proxy, getenv("HTTPS_PROXY")); var_override(&curl_http_proxy, getenv("https_proxy")); } else { |