[glib: 1/5] uri: do not encode userinfo fields
- From: Sebastian Dröge <sdroege src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/5] uri: do not encode userinfo fields
- Date: Tue, 4 Aug 2020 13:33:19 +0000 (UTC)
commit b0f9af0e1d318ed6ecbeeb3734a1a6d2b6f082e5
Author: Marc-André Lureau <marcandre lureau redhat com>
Date: Thu Jul 30 22:47:55 2020 +0400
uri: do not encode userinfo fields
g_uri_build_with_user() builds a userinfo, but it shouldn't encode it
itself, but let the user flags declare what's there. Otherwise,
to_string() code paths may encode a second time.
Signed-off-by: Marc-André Lureau <marcandre lureau redhat com>
glib/guri.c | 20 +++-----------------
glib/tests/uri.c | 6 ++++++
2 files changed, 9 insertions(+), 17 deletions(-)
---
diff --git a/glib/guri.c b/glib/guri.c
index cffed414c..6d344b388 100644
--- a/glib/guri.c
+++ b/glib/guri.c
@@ -1634,33 +1634,19 @@ g_uri_build_with_user (GUriFlags flags,
if (user)
{
- userinfo = g_string_new (NULL);
- if (flags & G_URI_FLAGS_ENCODED)
- g_string_append (userinfo, uri->user);
- else
- g_string_append_uri_escaped (userinfo, uri->user, USER_ALLOWED_CHARS, TRUE);
+ userinfo = g_string_new (user);
if (password)
{
g_string_append_c (userinfo, ':');
- if (flags & G_URI_FLAGS_ENCODED)
- g_string_append (userinfo, uri->password);
- else
- g_string_append_uri_escaped (userinfo, uri->password,
- PASSWORD_ALLOWED_CHARS, TRUE);
+ g_string_append (userinfo, uri->password);
}
if (auth_params)
{
g_string_append_c (userinfo, ';');
- if (flags & G_URI_FLAGS_ENCODED)
- g_string_append (userinfo, uri->auth_params);
- else
- g_string_append_uri_escaped (userinfo,
- uri->auth_params, AUTH_PARAMS_ALLOWED_CHARS, TRUE);
+ g_string_append (userinfo, uri->auth_params);
}
uri->userinfo = g_string_free (userinfo, FALSE);
}
- else
- uri->userinfo = NULL;
return uri;
}
diff --git a/glib/tests/uri.c b/glib/tests/uri.c
index 83279747a..90053d783 100644
--- a/glib/tests/uri.c
+++ b/glib/tests/uri.c
@@ -987,6 +987,12 @@ test_uri_build (void)
g_assert_cmpstr (g_uri_get_auth_params (uri), ==, "authparams");
g_uri_unref (uri);
+ uri = g_uri_build_with_user (G_URI_FLAGS_NONE, "scheme", "user\001", "password\002",
+ "authparams\003", "host", 1234,
+ "/path", "query", "fragment");
+ g_assert_cmpstr (g_uri_get_userinfo (uri), ==, "user\001:password\002;authparams\003");
+ g_uri_unref (uri);
+
uri = g_uri_build_with_user (G_URI_FLAGS_ENCODED, "scheme", "user%01", "password%02",
"authparams%03", "host", 1234,
"/path", "query", "fragment");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]