From: Marc Hoersken Date: Sun, 14 Aug 2016 15:07:11 +0000 (+0200) Subject: socks.c: Correctly calculate position of port in response packet X-Git-Tag: curl-7_50_2~76 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7ee5316c2fd5b;p=thirdparty%2Fcurl.git socks.c: Correctly calculate position of port in response packet Third commit to fix issue #944 regarding SOCKS5 error handling. Reported-by: David Kalnischkies --- diff --git a/lib/socks.c b/lib/socks.c index bb93e424a1..b6bc4e17c9 100644 --- a/lib/socks.c +++ b/lib/socks.c @@ -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;