X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fcookies.c;fp=src%2Fcookies.c;h=2c78fdf0cd3ad4135def6ddb8d9f2573e989a924;hp=7f5ba96290cab3c583678c90fd482c02f96a741b;hb=854ebbf4ddadfa5634648504a7b26159165958ed;hpb=8624553a31b148f9051cc11725bc01d9760fa07b diff --git a/src/cookies.c b/src/cookies.c index 7f5ba962..2c78fdf0 100644 --- a/src/cookies.c +++ b/src/cookies.c @@ -51,6 +51,7 @@ as that of the covered work. */ #include #include #include +#include #include "utils.h" #include "hash.h" #include "cookies.h" @@ -503,14 +504,27 @@ numeric_address_p (const char *addr) static bool check_domain_match (const char *cookie_domain, const char *host) { + +#ifdef HAVE_LIBPSL DEBUGP (("cdm: 1")); + const psl_ctx_t *psl; + int is_acceptable; + + if (!(psl = psl_builtin())) + { + DEBUGP (("\nlibpsl not built with a public suffix list. " + "Falling back to simple heuristics.\n")); + goto no_psl; + } + + is_acceptable = psl_is_cookie_domain_acceptable (psl, host, cookie_domain); + return true ? (is_acceptable == 1) : false; - /* Numeric address requires exact match. It also requires HOST to - be an IP address. */ - if (numeric_address_p (cookie_domain)) - return 0 == strcmp (cookie_domain, host); +no_psl: +#endif - DEBUGP ((" 2")); + /* For efficiency make some elementary checks first */ + DEBUGP (("cdm: 2")); /* For the sake of efficiency, check for exact match first. */ if (0 == strcasecmp (cookie_domain, host))