summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-07-24 12:11:11 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-07-24 12:11:11 +0000
commit3e1bd0d0bf082fc555d29a7cd34607a7ad5e9ab0 (patch)
treec588be3cb26c8d666b93386ec3e5a3dc0a4ce1a5 /utils
parentcefcce0197b98be11575670aaca84357ec917b11 (diff)
downloadnetsurf-3e1bd0d0bf082fc555d29a7cd34607a7ad5e9ab0.tar.gz
netsurf-3e1bd0d0bf082fc555d29a7cd34607a7ad5e9ab0.tar.bz2
Skip over credentials when lower casing host
svn path=/trunk/netsurf/; revision=12624
Diffstat (limited to 'utils')
-rw-r--r--utils/url.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/utils/url.c b/utils/url.c
index 52917afab..831f16761 100644
--- a/utils/url.c
+++ b/utils/url.c
@@ -288,9 +288,21 @@ url_func_result url_normalize(const char *url, char **result)
/* make host lower-case */
if (match[URL_RE_AUTHORITY].rm_so != -1) {
+ /* Find @ delimiting credentials from host, if any */
for (i = match[URL_RE_AUTHORITY].rm_so;
- (regoff_t) i != match[URL_RE_AUTHORITY].rm_eo;
+ (regoff_t) i != match[URL_RE_AUTHORITY].rm_eo;
i++) {
+ if (norm[i] == '@') {
+ i++;
+ break;
+ }
+ }
+
+ /* No credentials; transform entire host */
+ if ((regoff_t) i == match[URL_RE_AUTHORITY].rm_eo)
+ i = match[URL_RE_AUTHORITY].rm_so;
+
+ for (; (regoff_t) i != match[URL_RE_AUTHORITY].rm_eo; i++) {
if (norm[i] == ':' && (i + 3) < len) {
if (http && norm[i + 1] == '8' &&
norm[i + 2] == '0' &&