Chas Honton's patch to dynamic port forwarding: should allow longer
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 9 Apr 2003 09:09:57 +0000 (09:09 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 9 Apr 2003 09:09:57 +0000 (09:09 +0000)
host names in SOCKS 4A, up to 255 characters (which is apparently
the DNS limit anyway).

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

portfwd.c

index 03cbd67..8ef1761 100644 (file)
--- a/portfwd.c
+++ b/portfwd.c
@@ -74,7 +74,7 @@ struct PFwdPrivate {
      * we can also use them as a buffer and pointer for reading
      * data from the SOCKS client.
      */
-    char hostname[256];
+    char hostname[256+8];
     int port;
     /*
      * When doing dynamic port forwarding, we can receive
@@ -159,15 +159,15 @@ static int pfd_receive(Plug plug, int urgent, char *data, int len)
                    int len;
                    if (pr->dynamic == 0x4000) {
                        pr->dynamic = 0x4001;
+                       pr->port = 8;      /* reset buffer to overwrite name */
                        continue;
                    }
                    pr->hostname[0] = 0;   /* reply version code */
                    pr->hostname[1] = 90;   /* request granted */
                    sk_write(pr->s, pr->hostname, 8);
+                   len= pr->port;
                    pr->port = GET_16BIT_MSB_FIRST(pr->hostname+2);
-                   len = strlen(pr->hostname+8);
-                   memmove(pr->hostname, pr->hostname + 8 + len + 1,
-                           lenof(pr->hostname) - (8 + len + 1));
+                   memmove(pr->hostname, pr->hostname + 8, len);
                    goto connect;
                } else {
                    /*