diff --git a/lib/url.c b/lib/url.c index edcdf54b1a..84d37a560e 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2995,6 +2995,7 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data, char *host_portno; char *portptr; int port = -1; + CURLcode result = CURLE_OK; #if defined(CURL_DISABLE_VERBOSE_STRINGS) (void) data; @@ -3043,8 +3044,8 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data, */ #else failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in!"); - free(host_dup); - return CURLE_NOT_BUILT_IN; + result = CURLE_NOT_BUILT_IN; + goto error; #endif } @@ -3057,10 +3058,12 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data, if(*host_portno) { long portparse = strtol(host_portno, &endp, 10); 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); hostptr = NULL; port = -1; + result = CURLE_SETOPT_OPTION_SYNTAX; + goto error; } else 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) { *hostname_result = strdup(hostptr); if(!*hostname_result) { - free(host_dup); - return CURLE_OUT_OF_MEMORY; + result = CURLE_OUT_OF_MEMORY; + goto error; } } *port_result = port; + error: free(host_dup); - return CURLE_OK; + return result; } /* diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 8f98d0b20b..78ec645b7c 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -232,8 +232,4 @@ test2100 \ \ test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \ test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \ -test3016 \ -\ -test3017 test3018 \ -\ -test3019 +test3016 test3017 test3018 test3019 test3020 \ diff --git a/tests/data/test3020 b/tests/data/test3020 new file mode 100644 index 0000000000..25bf6dd929 --- /dev/null +++ b/tests/data/test3020 @@ -0,0 +1,36 @@ + + + +HTTP +HTTP GET +--connect-to + + + +# +# Server-side + + + +# +# Client-side + + +http + + +HTTP with invalid --connect-to syntax + + +--connect-to ::example.com:example.com http://example.com:%HTTPPORT/%TESTNUMBER + + + +# +# Verify data after the test has been "shot" + + +49 + + +