mirror of
https://github.com/curl/curl.git
synced 2024-12-15 06:40:09 +08:00
url: bad CURLOPT_CONNECT_TO syntax now returns error
Added test 3020 to verify Closes #7183
This commit is contained in:
parent
4b3d8f3558
commit
d8dcb399b8
16
lib/url.c
16
lib/url.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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
36
tests/data/test3020
Normal 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>
|
Loading…
Reference in New Issue
Block a user