url: bad CURLOPT_CONNECT_TO syntax now returns error

Added test 3020 to verify

Closes #7183
This commit is contained in:
Alexis Vachette 2021-06-03 14:49:49 +02:00 committed by Daniel Stenberg
parent 4b3d8f3558
commit d8dcb399b8
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
3 changed files with 47 additions and 11 deletions

View File

@ -2995,6 +2995,7 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
char *host_portno; char *host_portno;
char *portptr; char *portptr;
int port = -1; int port = -1;
CURLcode result = CURLE_OK;
#if defined(CURL_DISABLE_VERBOSE_STRINGS) #if defined(CURL_DISABLE_VERBOSE_STRINGS)
(void) data; (void) data;
@ -3043,8 +3044,8 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
*/ */
#else #else
failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in!"); failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in!");
free(host_dup); result = CURLE_NOT_BUILT_IN;
return CURLE_NOT_BUILT_IN; goto error;
#endif #endif
} }
@ -3057,10 +3058,12 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
if(*host_portno) { if(*host_portno) {
long portparse = strtol(host_portno, &endp, 10); long portparse = strtol(host_portno, &endp, 10);
if((endp && *endp) || (portparse < 0) || (portparse > 65535)) { if((endp && *endp) || (portparse < 0) || (portparse > 65535)) {
infof(data, "No valid port number in connect to host string (%s)\n", failf(data, "No valid port number in connect to host string (%s)",
host_portno); host_portno);
hostptr = NULL; hostptr = NULL;
port = -1; port = -1;
result = CURLE_SETOPT_OPTION_SYNTAX;
goto error;
} }
else else
port = (int)portparse; /* we know it will fit */ port = (int)portparse; /* we know it will fit */
@ -3071,15 +3074,16 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
if(hostptr) { if(hostptr) {
*hostname_result = strdup(hostptr); *hostname_result = strdup(hostptr);
if(!*hostname_result) { if(!*hostname_result) {
free(host_dup); result = CURLE_OUT_OF_MEMORY;
return CURLE_OUT_OF_MEMORY; goto error;
} }
} }
*port_result = port; *port_result = port;
error:
free(host_dup); free(host_dup);
return CURLE_OK; return result;
} }
/* /*

View File

@ -232,8 +232,4 @@ test2100 \
\ \
test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \ test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \ test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \
test3016 \ test3016 test3017 test3018 test3019 test3020 \
\
test3017 test3018 \
\
test3019

36
tests/data/test3020 Normal file
View File

@ -0,0 +1,36 @@
<testcase>
<info>
<keywords>
HTTP
HTTP GET
--connect-to
</keywords>
</info>
#
# Server-side
<reply>
</reply>
#
# Client-side
<client>
<server>
http
</server>
<name>
HTTP with invalid --connect-to syntax
</name>
<command>
--connect-to ::example.com:example.com http://example.com:%HTTPPORT/%TESTNUMBER
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<errorcode>
49
</errorcode>
</verify>
</testcase>