summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-03-20 09:59:58 +0000
committerAlexander Larsson <alexl@src.gnome.org>2009-03-20 09:59:58 +0000
commit742ed7454a772ce71b80c168233751eb90756152 (patch)
tree84885bd9ac7e343164338639c52954d53b437bf1 /client
parent5e732a701330a0eceb7ad129bc7dabbdee4b0fde (diff)
downloadgvfs-742ed7454a772ce71b80c168233751eb90756152.tar.gz
Bug 548648 – g_daemon_vfs_parse_name() fails to parse user names with
2009-03-20 Alexander Larsson <alexl@redhat.com> Bug 548648 – g_daemon_vfs_parse_name() fails to parse user names with '@' chars * client/gvfsuriutils.c (g_vfs_decode_uri): Make sure multiple @ in the authority part are put in the username. This is an invalid uri, but we might as well handle it in the better way. svn path=/trunk/; revision=2345
Diffstat (limited to 'client')
-rw-r--r--client/gvfsuriutils.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/client/gvfsuriutils.c b/client/gvfsuriutils.c
index 206d5a7e..2cb2a622 100644
--- a/client/gvfsuriutils.c
+++ b/client/gvfsuriutils.c
@@ -155,7 +155,11 @@ g_vfs_decode_uri (const char *uri)
authority = [ userinfo "@" ] host [ ":" port ]
*/
- userinfo_end = memchr (authority_start, '@', authority_end - authority_start);
+ /* Look for the last so that any multiple @ signs are put in the username part.
+ * This is not quite correct, as @ should be escaped here, but this happens
+ * in practice, so lets handle it the "nicer" way at least. */
+ userinfo_end = g_strrstr_len (authority_start,
+ authority_end - authority_start, "@");
if (userinfo_end)
{
userinfo_start = authority_start;