aboutsummaryrefslogtreecommitdiff
path: root/networking/wget.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/wget.c')
-rw-r--r--networking/wget.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/networking/wget.c b/networking/wget.c
index 6443705fd..94a2f7c3d 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -298,8 +298,13 @@ static void parse_url(const char *src_url, struct host_info *h)
298 298
299 sp = strrchr(h->host, '@'); 299 sp = strrchr(h->host, '@');
300 if (sp != NULL) { 300 if (sp != NULL) {
301 h->user = h->host; 301 // URL-decode "user:password" string before base64-encoding:
302 // wget http://test:my%20pass@example.com should send
303 // Authorization: Basic dGVzdDpteSBwYXNz
304 // which decodes to "test:my pass".
305 // Standard wget and curl do this too.
302 *sp = '\0'; 306 *sp = '\0';
307 h->user = percent_decode_in_place(h->host, /*strict:*/ 0);
303 h->host = sp + 1; 308 h->host = sp + 1;
304 } 309 }
305 310
@@ -660,12 +665,6 @@ static void download_one_url(const char *url)
660 665
661#if ENABLE_FEATURE_WGET_AUTHENTICATION 666#if ENABLE_FEATURE_WGET_AUTHENTICATION
662 if (target.user) { 667 if (target.user) {
663//TODO: URL-decode "user:password" string before base64-encoding:
664//wget http://test:my%20pass@example.com should send
665// Authorization: Basic dGVzdDpteSBwYXNz
666//which decodes to "test:my pass", instead of what we send now:
667// Authorization: Basic dGVzdDpteSUyMHBhc3M=
668//Can reuse decodeString() from httpd.c
669 fprintf(sfp, "Proxy-Authorization: Basic %s\r\n"+6, 668 fprintf(sfp, "Proxy-Authorization: Basic %s\r\n"+6,
670 base64enc(target.user)); 669 base64enc(target.user));
671 } 670 }