Reinstate a piece of code accidentally removed in r9214, where Windows
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 4 Aug 2013 19:32:10 +0000 (19:32 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 4 Aug 2013 19:32:10 +0000 (19:32 +0000)
PuTTY does not trim a colon suffix off the hostname if it contains
_more than one_ colon. This allows IPv6 literals to be entered.

(Really we need to do a much bigger revamp of all uses of hostnames to
arrange that square-bracketed IPv6 literals work consistently, but
this at least removes a regression over 0.62.)

git-svn-id: svn://svn.tartarus.org/sgt/putty@9983 cda61777-01e9-0310-a592-d414129be87e

windows/window.c

index 0ae88cc..8d13ff9 100644 (file)
@@ -617,10 +617,21 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
                }
            }
 
-           /*
-            * Trim off a colon suffix if it's there.
-            */
-           host[strcspn(host, ":")] = '\0';
+            /*
+             * Trim a colon suffix off the hostname if it's there. In
+             * order to protect IPv6 address literals against this
+             * treatment, we do not do this if there's _more_ than one
+             * colon.
+             */
+            {
+                char *c = strchr(host, ':');
+                if (c) {
+                    char *d = strchr(c+1, ':');
+                    if (!d)
+                        *c = '\0';
+                }
+            }
 
            /*
             * Remove any remaining whitespace.