path: root/http.c
diff options
authorJeff King <>2016-09-07 20:06:42 (GMT)
committerJunio C Hamano <>2016-09-08 18:23:43 (GMT)
commitd63ed6ef241b2e7f124089e2672cfce8251ed390 (patch)
treee005bef22590f52a842628230b62c257b92f42fa /http.c
parent0b65a8dbdb38962e700ee16776a3042beb489060 (diff)
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::/ will feed the URL "/" 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 <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'http.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/http.c b/http.c
index 1044f9b..057f250 100644
--- a/http.c
+++ b/http.c
@@ -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 {