diff options
author | Milan Crha <mcrha@redhat.com> | 2023-01-31 12:17:59 +0100 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2023-01-31 12:17:59 +0100 |
commit | e82dc7abd077218dd4c36f645894054c9178f275 (patch) | |
tree | 73794e8e1e2a151a19d4a9a6caedcc690547c81a | |
parent | 9adc34e915699b3fd0b39ec3178c7fd0e7e1cae7 (diff) | |
download | gnome-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.c | 2 | ||||
-rw-r--r-- | src/goabackend/goaowncloudprovider.c | 4 | ||||
-rw-r--r-- | src/goabackend/goawebview.c | 2 |
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); |