diff options
author | Cosimo Cecchi <cosimo@endlessm.com> | 2016-07-07 14:23:17 -0700 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2016-07-13 08:47:14 +0200 |
commit | b7e9b314138cb2047b3dbe9f1f005a6bcbbf3ca6 (patch) | |
tree | 3089a540b0a529e022b9c09589010a68742ac40b | |
parent | 4dca9bcd306e16b60b6577734951027cf85081e7 (diff) | |
download | gvfs-b7e9b314138cb2047b3dbe9f1f005a6bcbbf3ca6.tar.gz |
gvfs-open: also replace dashes when computing object path
This is what GApplication does, and we should do it here too, or
gvfs-open won't work for DBus-activatable applications with dashses in
their app IDs.
https://bugzilla.gnome.org/show_bug.cgi?id=768410
-rw-r--r-- | programs/gvfs-open.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/programs/gvfs-open.c b/programs/gvfs-open.c index bb518dc1..624ac388 100644 --- a/programs/gvfs-open.c +++ b/programs/gvfs-open.c @@ -89,8 +89,19 @@ get_bus_name_and_path_from_uri (char *uri, bus_name = g_strdup (basename); object_path = g_strdup_printf ("/%s", bus_name); for (p = object_path; *p != '\0'; p++) - if (*p == '.') - *p = '/'; + { + if (*p == '.') + *p = '/'; + else if (*p == '-') + *p = '_'; + } + + if (!g_variant_is_object_path (object_path)) + { + g_warning ("Invalid object path \"%s\"", object_path); + g_free (object_path); + goto out; + } *bus_name_out = g_steal_pointer (&bus_name); *object_path_out = g_steal_pointer (&object_path); |