Commit 47a40d1d4421b0081622c1bf4af4f58ebb497ed5

Carlos Martín Nieto 2015-06-16T12:39:11

remote: return EINVALIDSPEC when given an empty URL This is what we used to return in the settter and there's tests in bindings which ask for this. There's no particular reason to stop doing so.

diff --git a/src/remote.c b/src/remote.c
index 63f6d34..7c2d999 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -167,14 +167,18 @@ static int get_check_cert(int *out, git_repository *repo)
 
 static int canonicalize_url(git_buf *out, const char *in)
 {
-#ifdef GIT_WIN32
-	const char *c;
+	if (in == NULL || strlen(in) == 0) {
+		giterr_set(GITERR_INVALID, "cannot set empty URL");
+		return GIT_EINVALIDSPEC;
+	}
 
+#ifdef GIT_WIN32
 	/* Given a UNC path like \\server\path, we need to convert this
 	 * to //server/path for compatibility with core git.
 	 */
 	if (in[0] == '\\' && in[1] == '\\' &&
 		(git__isalpha(in[2]) || git__isdigit(in[2]))) {
+		const char *c;
 		for (c = in; *c; c++)
 			git_buf_putc(out, *c == '\\' ? '/' : *c);