about summary refs log tree commit diff stats
path: root/cookie.c
diff options
context:
space:
mode:
authorElias Norberg <xyzzy@kudzu.se>2012-01-12 00:17:33 +0100
committerElias Norberg <xyzzy@kudzu.se>2012-01-16 19:51:27 +0100
commitbc81e88b13c0ddfa385a10cfbe2ea93259c7f8a4 (patch)
tree9ef03ce4c6316b5b15484a6ca08d582c319fad3d /cookie.c
parenta8a93c2b7cae6c1d217bca596d8b0b631efe97b7 (diff)
downloadxombrero-bc81e88b13c0ddfa385a10cfbe2ea93259c7f8a4.tar.gz
Use a list of TLD's to properly handle multi-part TLD's
The list used is from publicsuffix.org. It gets installed
to the resource-directory as 'tld-rules'
Diffstat (limited to 'cookie.c')
-rw-r--r--cookie.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/cookie.c b/cookie.c
index 7c7c293..fd5111f 100644
--- a/cookie.c
+++ b/cookie.c
@@ -125,6 +125,7 @@ soup_cookie_jar_add_cookie(SoupCookieJar *jar, SoupCookie *cookie)
 	struct domain		*d = NULL;
 	SoupCookie		*c;
 	FILE			*r_cookie_f;
+	char			*public_suffix;
 
 	DNPRINTF(XT_D_COOKIE, "soup_cookie_jar_add_cookie: %p %p %p\n",
 	    jar, p_cookiejar, s_cookiejar);
@@ -145,8 +146,12 @@ soup_cookie_jar_add_cookie(SoupCookieJar *jar, SoupCookie *cookie)
 	if (jar == NULL || cookie == NULL)
 		return;
 
-	if (enable_cookie_whitelist &&
-	    (d = wl_find(cookie->domain, &c_wl)) == NULL) {
+	/* check if domain is valid */
+	public_suffix = tld_get_suffix(cookie->domain);
+
+	if (public_suffix == NULL ||
+	    (enable_cookie_whitelist &&
+	    (d = wl_find(cookie->domain, &c_wl)) == NULL)) {
 		blocked_cookies++;
 		DNPRINTF(XT_D_COOKIE,
 		    "soup_cookie_jar_add_cookie: reject %s\n",