diff --git a/Source/CTest/Curl/url.c b/Source/CTest/Curl/url.c index 89dcf0fd8..63ce6976b 100644 --- a/Source/CTest/Curl/url.c +++ b/Source/CTest/Curl/url.c @@ -1900,7 +1900,10 @@ static int handleSock5Proxy(const char *proxy_name, } } - *((unsigned short*)&socksreq[8]) = htons(conn->remote_port); + { + unsigned short s = htons(conn->remote_port); + memcpy(socksreq+8, &s, sizeof(unsigned short)); + } { const int packetsize = 10; @@ -1923,11 +1926,14 @@ static int handleSock5Proxy(const char *proxy_name, return 1; } if (socksreq[1] != 0) { /* Anything besides 0 is an error */ + unsigned short sh; + memcpy(&sh, socksreq+8, sizeof(unsigned short)); + failf(conn->data, "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 int)ntohs(*(unsigned short*)(&socksreq[8])), + (unsigned int)ntohs(sh), socksreq[1]); return 1; }