Bjørn Lie
ba7813279e
- Add epiphany-uri-tester-fixes.patch: Fix urlcache memory leak and fix cache lookups when URI is not matched (glgo#GNOME/epiphany#37). - Add epip-revert-gsb-storage-dont-hardcode-Linux-threat-lists.patch: Revert gsb-storage: Don't hardcode Linux threat lists. OBS-URL: https://build.opensuse.org/request/show/616638 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/epiphany?expand=0&rev=293
89 lines
3.4 KiB
Diff
89 lines
3.4 KiB
Diff
From facfa80c2b36ca7479de4323b77019965363dc6e Mon Sep 17 00:00:00 2001
|
|
From: Michael Catanzaro <mcatanzaro@igalia.com>
|
|
Date: Wed, 13 Jun 2018 11:10:23 -0500
|
|
Subject: [PATCH] uri-tester: Fix urlcache memory leak
|
|
|
|
Something went wrong with the git history related to e17dc362, and we
|
|
wound up allocating a string here that will never be freed. Whoops.
|
|
|
|
Then we pass it through GPOINTER_TO_INT() even though it is really a
|
|
random pointer and not going to be a meaningful integer value, and
|
|
return it as a gboolean. So we have a gboolean that is neither TRUE nor
|
|
FALSE, which is bad. But fortunately, it looks like it's never
|
|
explicitly compared to TRUE, so there should have been no behavioral
|
|
issue besides the leak.
|
|
|
|
This is related to #37.
|
|
---
|
|
embed/web-extension/ephy-uri-tester.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/embed/web-extension/ephy-uri-tester.c b/embed/web-extension/ephy-uri-tester.c
|
|
index 70f7cfd..a871f66 100644
|
|
--- a/embed/web-extension/ephy-uri-tester.c
|
|
+++ b/embed/web-extension/ephy-uri-tester.c
|
|
@@ -189,7 +189,7 @@ ephy_uri_tester_is_matched (EphyUriTester *tester,
|
|
|
|
/* Look for a match either by key or by pattern. */
|
|
if (ephy_uri_tester_is_matched_by_key (tester, opts, req_uri, page_uri, whitelist)) {
|
|
- g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup ("1"));
|
|
+ g_hash_table_insert (urlcache, g_strdup (req_uri), GINT_TO_POINTER (TRUE));
|
|
return TRUE;
|
|
}
|
|
|
|
--
|
|
libgit2 0.27.1
|
|
|
|
From d76a401971da4cecf746fa98cb94db6fa45fd88e Mon Sep 17 00:00:00 2001
|
|
From: Michael Catanzaro <mcatanzaro@igalia.com>
|
|
Date: Wed, 13 Jun 2018 11:32:53 -0500
|
|
Subject: [PATCH] uri-tester: Fix cache lookups when URI is not matched
|
|
|
|
This regressed in e17dc3627218aed60e2fa61486757b55dc804b6e.
|
|
g_hash_table_lookup() cannot distinguish between a missing value and a
|
|
NULL value. We are storing a NULL pointer (GINT_TO_POINTER (FALSE)) to
|
|
indicate that the URL is not a match, so the end result is that instead
|
|
of a cache hit indicating we should return FALSE, we instead get a cache
|
|
miss and then have to manually determine that we need to return FALSE.
|
|
|
|
This should be a performance fix only, it should not affect correctness.
|
|
|
|
Fixes #37
|
|
---
|
|
embed/web-extension/ephy-uri-tester.c | 7 ++++---
|
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/embed/web-extension/ephy-uri-tester.c b/embed/web-extension/ephy-uri-tester.c
|
|
index a871f66..5158dcb 100644
|
|
--- a/embed/web-extension/ephy-uri-tester.c
|
|
+++ b/embed/web-extension/ephy-uri-tester.c
|
|
@@ -178,14 +178,14 @@ ephy_uri_tester_is_matched (EphyUriTester *tester,
|
|
const char *page_uri,
|
|
gboolean whitelist)
|
|
{
|
|
- char *value;
|
|
+ gpointer is_matched;
|
|
GHashTable *urlcache = tester->urlcache;
|
|
if (whitelist)
|
|
urlcache = tester->whitelisted_urlcache;
|
|
|
|
/* Check cached URLs first. */
|
|
- if ((value = g_hash_table_lookup (urlcache, req_uri)))
|
|
- return GPOINTER_TO_INT (value);
|
|
+ if (g_hash_table_lookup_extended (urlcache, req_uri, NULL, &is_matched))
|
|
+ return GPOINTER_TO_INT (is_matched);
|
|
|
|
/* Look for a match either by key or by pattern. */
|
|
if (ephy_uri_tester_is_matched_by_key (tester, opts, req_uri, page_uri, whitelist)) {
|
|
@@ -199,6 +199,7 @@ ephy_uri_tester_is_matched (EphyUriTester *tester,
|
|
return TRUE;
|
|
}
|
|
|
|
+ /* No match. */
|
|
g_hash_table_insert (urlcache, g_strdup (req_uri), GINT_TO_POINTER (FALSE));
|
|
return FALSE;
|
|
}
|
|
--
|
|
libgit2 0.27.1
|
|
|