summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathon Jongsma <jonathon@quotidian.org>2010-12-07 23:09:31 -0600
committerJonathon Jongsma <jonathon@quotidian.org>2010-12-10 13:58:57 -0600
commit00561929c2a61bd204f98ba0dcd2925219534104 (patch)
treea99ff2985cc6663ecfc44e0e7f7347b8e9428948
parent6cd40fbf575c2211c7382b79042b561ac43dd64f (diff)
downloadlibsoup-00561929c2a61bd204f98ba0dcd2925219534104.tar.gz
Fix leak when processing the set cookie header
Valgrind trace: ==4617== 401 (96 direct, 305 indirect) bytes in 2 blocks are definitely lost in loss record 15,500 of 16,590 ==4617== at 0x4C244E8: malloc (vg_replace_malloc.c:236) ==4617== by 0x103D73AA: g_malloc (gmem.c:164) ==4617== by 0x103F0EB4: g_slice_alloc (gslice.c:842) ==4617== by 0x103F0F0C: g_slice_alloc0 (gslice.c:854) ==4617== by 0xE1CCD04: parse_one_cookie (soup-cookie.c:218) ==4617== by 0xE1CD2B3: soup_cookies_from_response (soup-cookie.c:763) ==4617== by 0xE1CE332: process_set_cookie_header (soup-cookie-jar.c:562) ==4617== by 0xFB4AC36: g_cclosure_marshal_VOID__VOID (gmarshal.c:79) ==4617== by 0xFB2F59E: g_closure_invoke (gclosure.c:766) ==4617== by 0xFB4A2B1: signal_emit_unlocked_R (gsignal.c:3252) ==4617== by 0xFB490EE: g_signal_emit_valist (gsignal.c:2983) ==4617== by 0xFB4966C: g_signal_emit (gsignal.c:3040) ==4617== by 0xE1DA0DF: io_read (soup-message-io.c:903) https://bugzilla.gnome.org/show_bug.cgi?id=636741
-rw-r--r--libsoup/soup-cookie-jar.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/libsoup/soup-cookie-jar.c b/libsoup/soup-cookie-jar.c
index 64afd9db..adb50ec8 100644
--- a/libsoup/soup-cookie-jar.c
+++ b/libsoup/soup-cookie-jar.c
@@ -563,11 +563,8 @@ process_set_cookie_header (SoupMessage *msg, gpointer user_data)
for (nc = new_cookies; nc; nc = nc->next) {
SoupURI *first_party = soup_message_get_first_party (msg);
- if (first_party == NULL &&
- priv->accept_policy == SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY)
- continue; /* Can't check anything */
-
if ((priv->accept_policy == SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY &&
+ first_party != NULL &&
soup_cookie_domain_matches (nc->data, first_party->host)) ||
priv->accept_policy == SOUP_COOKIE_JAR_ACCEPT_ALWAYS)
soup_cookie_jar_add_cookie (jar, nc->data);