summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2014-05-21 21:56:57 +0200
committerBastien Nocera <hadess@hadess.net>2014-05-21 21:56:57 +0200
commit63bd650009e14e255a74eb1bea1c0cd54ab535d8 (patch)
tree002f14d8695e3e540fd45e52d655a0814bb99cf6
parentaa861a7d947bc5b67caf2a5599801e61e1b9e5cc (diff)
downloadepiphany-63bd650009e14e255a74eb1bea1c0cd54ab535d8.tar.gz
ephy-uri-helpers: Handle keys without a value
Fixes a crash with a URI such as: http://www.test.com/?some&valid&query https://bugzilla.gnome.org/show_bug.cgi?id=730464
-rw-r--r--lib/ephy-uri-helpers.c15
-rw-r--r--tests/ephy-uri-helpers-test.c3
2 files changed, 13 insertions, 5 deletions
diff --git a/lib/ephy-uri-helpers.c b/lib/ephy-uri-helpers.c
index 9212de1dd..aa8c2d2ac 100644
--- a/lib/ephy-uri-helpers.c
+++ b/lib/ephy-uri-helpers.c
@@ -90,12 +90,14 @@ query_split (const char *query)
pair = pairs[i];
eq = strchr (pair, '=');
- if (eq) {
+ if (eq)
decoded_name = g_strndup (pair, eq - pair);
- if (!form_decode (decoded_name)) {
- g_free (decoded_name);
- decoded_name = NULL;
- }
+ else
+ decoded_name = g_strdup (pair);
+
+ if (!form_decode (decoded_name)) {
+ g_free (decoded_name);
+ decoded_name = NULL;
}
item = g_slice_new0 (QueryItem);
@@ -170,6 +172,9 @@ is_garbage (const char *name,
};
guint i;
+ if (name == NULL)
+ return FALSE;
+
for (i = 0; i < G_N_ELEMENTS (fields); i++) {
if (fields[i].host != NULL &&
!g_str_has_suffix (host, fields[i].host))
diff --git a/tests/ephy-uri-helpers-test.c b/tests/ephy-uri-helpers-test.c
index 1d9fc8d83..0052671d4 100644
--- a/tests/ephy-uri-helpers-test.c
+++ b/tests/ephy-uri-helpers-test.c
@@ -51,6 +51,9 @@ test_ephy_uri_helpers_remove_tracking (void)
{ "https://mail.google.com/mail/u/0/?ui=2&ik=37373eb942&rid=7cea..&auto=1&view=lno&_reqid=1168127&pcd=1&mb=0&rt=j",
"https://mail.google.com/mail/u/0/?ui=2&ik=37373eb942&rid=7cea..&auto=1&view=lno&_reqid=1168127&pcd=1&mb=0&rt=j" },
{ "http://www.test.com/?utm_source=feedburner&view=lno&_reqid=1234", "http://www.test.com/?view=lno&_reqid=1234" },
+ { "http://www.test.com/?some&valid&query", "http://www.test.com/?some&valid&query" },
+ { "http://www.test.com/?utm_source=feedburner&some&valid&query", "http://www.test.com/?some&valid&query" },
+
};
guint i;