Commit f0c53d21a43a098da2bf96a955ee22feb9ab8a5a

nulltoken 2014-08-27T10:28:46

winhttp: Prevent swallowing of url parsing error

diff --git a/src/transports/winhttp.c b/src/transports/winhttp.c
index 1e46dfa..836c488 100644
--- a/src/transports/winhttp.c
+++ b/src/transports/winhttp.c
@@ -1116,9 +1116,9 @@ static int winhttp_action(
 	int ret = -1;
 
 	if (!t->connection)
-		if (gitno_connection_data_from_url(&t->connection_data, url, NULL) < 0 ||
-			 winhttp_connect(t, url) < 0)
-			return -1;
+		if ((ret = gitno_connection_data_from_url(&t->connection_data, url, NULL)) < 0 ||
+			 (ret = winhttp_connect(t, url)) < 0)
+			return ret;
 
 	if (winhttp_stream_alloc(t, &s) < 0)
 		return -1;
diff --git a/tests/online/clone.c b/tests/online/clone.c
index 39b4815..1ccaf27 100644
--- a/tests/online/clone.c
+++ b/tests/online/clone.c
@@ -463,3 +463,9 @@ void test_online_clone__ssh_cannot_change_username(void)
 
 	cl_git_fail(git_clone(&g_repo, "ssh://git@github.com/libgit2/TestGitRepository", "./foo", &g_options));
 }
+
+void test_online_clone__url_with_no_path_returns_EINVALIDSPEC(void)
+{
+	cl_git_fail_with(git_clone(&g_repo, "http://github.com", "./foo", &g_options),
+		GIT_EINVALIDSPEC);
+}