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 /t/t5550-http-fetch-dumb.sh | |
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 't/t5550-http-fetch-dumb.sh')
-rwxr-xr-x | t/t5550-http-fetch-dumb.sh | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh index 64146352a..9249140f9 100755 --- a/t/t5550-http-fetch-dumb.sh +++ b/t/t5550-http-fetch-dumb.sh @@ -250,5 +250,13 @@ test_expect_success 'git client does not send an empty Accept-Language' ' ! grep "^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 |