url: do not URL decode proxy crendentials

The two options CURLOPT_PROXYUSERNAME and CURLOPT_PROXYPASSWORD set the
actual names as-is, not URL encoded.

Modified test 503 to use percent-encoded strings in the credential
strings that should be passed on as-is.

Reported-by: Sergey Ogryzkov
Fixes #13265
Closes #13270
This commit is contained in:
Daniel Stenberg 2024-04-03 11:32:55 +02:00
parent 29bfde9fea
commit d5e83eb745
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
4 changed files with 30 additions and 17 deletions

View file

@ -73,7 +73,7 @@ moo
<proxy>
CONNECT machine.%TESTNUMBER:%HTTPPORT HTTP/1.1
Host: machine.%TESTNUMBER:%HTTPPORT
Proxy-Authorization: Basic dGVzdDppbmc=
Proxy-Authorization: Basic dGVzdCUyMDppbmclNDE=
Proxy-Connection: Keep-Alive
[DISCONNECT]

View file

@ -53,7 +53,8 @@ int test(char *URL)
easy_setopt(c, CURLOPT_PROXY, libtest_arg2); /* set in first.c */
easy_setopt(c, CURLOPT_URL, URL);
easy_setopt(c, CURLOPT_USERPWD, "test:ing");
easy_setopt(c, CURLOPT_PROXYUSERPWD, "test:ing");
easy_setopt(c, CURLOPT_PROXYUSERNAME, "test%20");
easy_setopt(c, CURLOPT_PROXYPASSWORD, "ing%41");
easy_setopt(c, CURLOPT_HTTPPROXYTUNNEL, 1L);
easy_setopt(c, CURLOPT_HEADER, 1L);
easy_setopt(c, CURLOPT_VERBOSE, 1L);