Commit 59d5e252cee2c78ee6217704af2c93d99b282572

Sebastien marie 2020-04-21T17:51:05

don't override port configuration with explicit argument if the url doesn't contains it it permits to .ssh/config to be honored same diff from stsp@

diff --git a/lib/fetch.c b/lib/fetch.c
index 4ad71dd..8ef36ea 100644
--- a/lib/fetch.c
+++ b/lib/fetch.c
@@ -90,29 +90,28 @@ dial_ssh(pid_t *fetchpid, int *fetchfd, const char *host, const char *port,
 	int pid, pfd[2];
 	char cmd[64];
 	char *argv[11];
-	int i = 0;
+	int i = 0, j;
 
 	*fetchpid = -1;
 	*fetchfd = -1;
 
-	if (port == NULL)
-		port = "22";
-
-	argv[0] = GOT_FETCH_PATH_SSH;
-	argv[1] = "-p";
-	argv[2] = (char *)port;
+	argv[i++] = GOT_FETCH_PATH_SSH;
+	if (port != NULL) {
+		argv[i++] = "-p";
+		argv[i++] = (char *)port;
+	}
 	if (verbosity == -1) {
-		argv[3 + i++] = "-q";
+		argv[i++] = "-q";
 	} else {
 		/* ssh(1) allows up to 3 "-v" options. */
-		for (i = 0; i < MIN(3, verbosity); i++)
-			argv[3 + i] = "-v";
-	}
-	argv[3 + i] = "--";
-	argv[4 + i] = (char *)host;
-	argv[5 + i] = (char *)cmd;
-	argv[6 + i] = (char *)path;
-	argv[7 + i] = NULL;
+		for (j = 0; j < MIN(3, verbosity); j++)
+			argv[i++] = "-v";
+	}
+	argv[i++] = "--";
+	argv[i++] = (char *)host;
+	argv[i++] = (char *)cmd;
+	argv[i++] = (char *)path;
+	argv[i++] = NULL;
 
 	if (pipe(pfd) == -1)
 		return got_error_from_errno("pipe");