summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2016-09-29 16:49:38 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-09-29 16:49:38 -0700
commit35ec7fd479f85797d3d2b76beee29121a0a45aff (patch)
tree5c96d1cd72e63e184629f6e1e9e4b8a560ede776
parentMerge branch 'sy/git-gui-i18n-ja' into maint (diff)
parentremote-curl: handle URLs without protocol (diff)
downloadtgif-35ec7fd479f85797d3d2b76beee29121a0a45aff.tar.xz
Merge branch 'jk/fix-remote-curl-url-wo-proto' into maint
"git fetch http::/site/path" did not die correctly and segfaulted instead. * jk/fix-remote-curl-url-wo-proto: remote-curl: handle URLs without protocol
-rw-r--r--http.c2
-rwxr-xr-xt/t5550-http-fetch-dumb.sh8
2 files changed, 9 insertions, 1 deletions
diff --git a/http.c b/http.c
index cd40b012f8..edce47ca75 100644
--- a/http.c
+++ b/http.c
@@ -723,7 +723,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 {
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index dc9b87d6b4..7641417b4a 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -299,5 +299,13 @@ test_expect_success 'git client does not send an empty Accept-Language' '
! grep "^=> Send header: Accept-Language:" stderr
'
+test_expect_success 'remote-http complains cleanly about malformed urls' '
+ # do not actually issue "list" or other commands, as we do not
+ # want to rely on what curl would actually do with such a broken
+ # URL. This is just about making sure we do not segfault during
+ # initialization.
+ test_must_fail git remote-http http::/example.com/repo.git
+'
+
stop_httpd
test_done