From e82dc7abd077218dd4c36f645894054c9178f275 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Tue, 31 Jan 2023 12:17:59 +0100 Subject: 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. --- src/goabackend/goaoauth2provider.c | 2 +- src/goabackend/goaowncloudprovider.c | 4 ++-- 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); -- cgit v1.2.1