git: Wrong parsing of ssh urls with IPv6 literals ignores port
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>
Tue, 12 Jun 2012 18:46:56 +0000 (20:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Jun 2012 20:10:55 +0000 (13:10 -0700)
If we encounter an address part shaped like "[HOST]:PORT", we skip the opening
bracket and replace the closing one with a NUL. The variable host then points
to HOST and we've cut off the PORT part. Thus, when we go looking for it using
host a bit later, we can't find it. Start at end instead, which either points
to the colon, if present, or is equal to host.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
connect.c
index 912cddeea8c4f09ec523ce19e677358c84eda9b7..41b7400aa92d7c07db269de9658b9f961db9becf 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -536,7 +536,7 @@ struct child_process *git_connect(int fd[2], const char *url_orig,
         * Add support for ssh port: ssh://host.xy:<port>/...
         */
        if (protocol == PROTO_SSH && host != url)
-               port = get_port(host);
+               port = get_port(end);
 
        if (protocol == PROTO_GIT) {
                /* These underlying connection commands die() if they