]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
socks.c: Correctly calculate position of port in response packet
authorMarc Hoersken <info@marc-hoersken.de>
Sun, 14 Aug 2016 15:07:11 +0000 (17:07 +0200)
committerMarc Hoersken <info@marc-hoersken.de>
Sun, 14 Aug 2016 15:07:11 +0000 (17:07 +0200)
Third commit to fix issue #944 regarding SOCKS5 error handling.

Reported-by: David Kalnischkies
lib/socks.c

index bb93e424a13877bda32b2074890f6f1fc2670d75..b6bc4e17c9efd51e50ed8b3cf26579ed43151d3c 100644 (file)
@@ -719,14 +719,16 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
             "Can't complete SOCKS5 connection to %d.%d.%d.%d:%d. (%d)",
             (unsigned char)socksreq[4], (unsigned char)socksreq[5],
             (unsigned char)socksreq[6], (unsigned char)socksreq[7],
-            (((unsigned char)socksreq[8] << 8) | (unsigned char)socksreq[9]),
+            (((unsigned char)socksreq[8] << 8) |
+             (unsigned char)socksreq[9]),
             (unsigned char)socksreq[1]);
     }
     else if(socksreq[3] == 3) {
       failf(data,
             "Can't complete SOCKS5 connection to %s:%d. (%d)",
             hostname,
-            (((unsigned char)socksreq[8] << 8) | (unsigned char)socksreq[9]),
+            (((unsigned char)socksreq[len - 2] << 8) |
+             (unsigned char)socksreq[len - 1]),
             (unsigned char)socksreq[1]);
     }
     else if(socksreq[3] == 4) {
@@ -741,7 +743,8 @@ CURLcode Curl_SOCKS5(const char *proxy_name,
             (unsigned char)socksreq[14], (unsigned char)socksreq[15],
             (unsigned char)socksreq[16], (unsigned char)socksreq[17],
             (unsigned char)socksreq[18], (unsigned char)socksreq[19],
-            (((unsigned char)socksreq[8] << 8) | (unsigned char)socksreq[9]),
+            (((unsigned char)socksreq[20] << 8) |
+             (unsigned char)socksreq[21]),
             (unsigned char)socksreq[1]);
     }
     return CURLE_COULDNT_CONNECT;