diff options
author | Bastien Nocera <hadess@hadess.net> | 2014-05-21 21:56:57 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-05-21 21:56:57 +0200 |
commit | 63bd650009e14e255a74eb1bea1c0cd54ab535d8 (patch) | |
tree | 002f14d8695e3e540fd45e52d655a0814bb99cf6 | |
parent | aa861a7d947bc5b67caf2a5599801e61e1b9e5cc (diff) | |
download | epiphany-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.c | 15 | ||||
-rw-r--r-- | tests/ephy-uri-helpers-test.c | 3 |
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; |