summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2023-01-31 12:17:59 +0100
committerMilan Crha <mcrha@redhat.com>2023-01-31 12:17:59 +0100
commite82dc7abd077218dd4c36f645894054c9178f275 (patch)
tree73794e8e1e2a151a19d4a9a6caedcc690547c81a
parent9adc34e915699b3fd0b39ec3178c7fd0e7e1cae7 (diff)
downloadgnome-online-accounts-e82dc7abd077218dd4c36f645894054c9178f275.tar.gz
misc: Use G_URI_FLAGS_PARSE_RELAXED for g_uri_parse() calls
That can help when parsing URIs with user name, which contains `@` in an unencoded form, because without it the parsing ends on the first `@`, constructing the host name as `email.com@server.example.com`, which is clearly an incorrect host name.
-rw-r--r--src/goabackend/goaoauth2provider.c2
-rw-r--r--src/goabackend/goaowncloudprovider.c4
-rw-r--r--src/goabackend/goawebview.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index 5b8d43d..d739dec 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -797,7 +797,7 @@ on_web_view_decide_policy (WebKitWebView *web_view,
if (!g_str_has_prefix (requested_uri, redirect_uri))
goto default_behaviour;
- uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
fragment = g_uri_get_fragment (uri);
query = g_uri_get_query (uri);
diff --git a/src/goabackend/goaowncloudprovider.c b/src/goabackend/goaowncloudprovider.c
index 5441dfd..e36c702 100644
--- a/src/goabackend/goaowncloudprovider.c
+++ b/src/goabackend/goaowncloudprovider.c
@@ -171,7 +171,7 @@ build_object (GoaProvider *provider,
account = goa_object_get_account (GOA_OBJECT (object));
identity = goa_account_get_identity (account);
uri_string = g_key_file_get_string (key_file, group, "Uri", NULL);
- uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
if (uri != NULL)
{
GUri *tmp_uri;
@@ -397,7 +397,7 @@ normalize_uri (const gchar *address, gchar **server)
else
goto out;
- uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
if (uri == NULL)
goto out;
diff --git a/src/goabackend/goawebview.c b/src/goabackend/goawebview.c
index adc7366..e98be0b 100644
--- a/src/goabackend/goawebview.c
+++ b/src/goabackend/goawebview.c
@@ -82,7 +82,7 @@ web_view_create_loading_title (const gchar *url)
g_return_val_if_fail (url != NULL && url[0] != '\0', NULL);
- uri = g_uri_parse (url, G_URI_FLAGS_NONE, NULL);
+ uri = g_uri_parse (url, G_URI_FLAGS_PARSE_RELAXED, NULL);
hostname = g_uri_get_host (uri);
/* translators: %s here is the address of the web page */
title = g_strdup_printf (_("Loading ā€œ%sā€ā€¦"), hostname);