mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Convert domains to lowercase before libpsl checks
This commit is contained in:
parent
550cd6e9d2
commit
c5f2c7fcef
@ -1,3 +1,8 @@
|
|||||||
|
2014-07-05 Darshit Shah <darnir@gmail.com>
|
||||||
|
|
||||||
|
* cookies.c (check_domain_match): Libpsl requires that all domain names
|
||||||
|
passed to it be in utf8 lower case.
|
||||||
|
|
||||||
2014-07-05 Darshit Shah <darnir@gmail.com>
|
2014-07-05 Darshit Shah <darnir@gmail.com>
|
||||||
|
|
||||||
* http.c (gethttp): Fix indentation of conditional block
|
* http.c (gethttp): Fix indentation of conditional block
|
||||||
|
@ -501,7 +501,17 @@ numeric_address_p (const char *addr)
|
|||||||
/* Check whether COOKIE_DOMAIN is an appropriate domain for HOST.
|
/* Check whether COOKIE_DOMAIN is an appropriate domain for HOST.
|
||||||
Originally I tried to make the check compliant with rfc2109, but
|
Originally I tried to make the check compliant with rfc2109, but
|
||||||
the sites deviated too often, so I had to fall back to "tail
|
the sites deviated too often, so I had to fall back to "tail
|
||||||
matching", as defined by the original Netscape's cookie spec. */
|
matching", as defined by the original Netscape's cookie spec.
|
||||||
|
|
||||||
|
Wget now uses libpsl to check domain names against a public suffix
|
||||||
|
list to see if they are valid. However, since we don't provide a
|
||||||
|
psl on our own, if libpsl is compiled without a public suffix list,
|
||||||
|
fall back to using the original "tail matching" heuristic. Also if
|
||||||
|
libpsl is unable to convert the domain to lowercase, which means that
|
||||||
|
it doesnt have any runtime conversion support, we again fall back to
|
||||||
|
"tail matching" since libpsl states the results are unpredictable with
|
||||||
|
upper case strings.
|
||||||
|
*/
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
check_domain_match (const char *cookie_domain, const char *host)
|
check_domain_match (const char *cookie_domain, const char *host)
|
||||||
@ -509,6 +519,8 @@ check_domain_match (const char *cookie_domain, const char *host)
|
|||||||
|
|
||||||
#ifdef HAVE_LIBPSL
|
#ifdef HAVE_LIBPSL
|
||||||
DEBUGP (("cdm: 1"));
|
DEBUGP (("cdm: 1"));
|
||||||
|
char *cookie_domain_lower = NULL;
|
||||||
|
char *host_lower = NULL;
|
||||||
const psl_ctx_t *psl;
|
const psl_ctx_t *psl;
|
||||||
int is_acceptable;
|
int is_acceptable;
|
||||||
|
|
||||||
@ -519,7 +531,21 @@ check_domain_match (const char *cookie_domain, const char *host)
|
|||||||
goto no_psl;
|
goto no_psl;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_acceptable = psl_is_cookie_domain_acceptable (psl, host, cookie_domain);
|
if (psl_str_to_utf8lower (cookie_domain, NULL, NULL, &cookie_domain_lower) == PSL_SUCCESS &&
|
||||||
|
psl_str_to_utf8lower (host, NULL, NULL, &host_lower) == PSL_SUCCESS)
|
||||||
|
{
|
||||||
|
is_acceptable = psl_is_cookie_domain_acceptable (psl, host_lower, cookie_domain_lower);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DEBUGP (("libpsl unable to parse domain name. "
|
||||||
|
"Falling back to simple heuristics.\n"));
|
||||||
|
goto no_psl;
|
||||||
|
}
|
||||||
|
|
||||||
|
xfree (cookie_domain_lower);
|
||||||
|
xfree (host_lower);
|
||||||
|
|
||||||
return true ? (is_acceptable == 1) : false;
|
return true ? (is_acceptable == 1) : false;
|
||||||
|
|
||||||
no_psl:
|
no_psl:
|
||||||
|
Loading…
Reference in New Issue
Block a user