diff options
author | Ondrej Holy <oholy@redhat.com> | 2018-09-24 10:25:10 +0200 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2018-09-24 10:40:21 +0200 |
commit | 4a4b22ece7d48f96da9120d677b2707a541263d5 (patch) | |
tree | 25e7d11ebe910c6f77d0deb8011410f66db70e20 | |
parent | 7a1c184608ff93e8344e0aa6d6b7bfa689c43a67 (diff) | |
download | gvfs-4a4b22ece7d48f96da9120d677b2707a541263d5.tar.gz |
mtp: Fix mounting for devices with special chars in ID_SERIAL
ID_SERIAL string is not URI-escaped before use, but unfortunately, it
may contain special characters (e.g. colons) and consequently it is not
possible to mount affected devices over activation_root. Let's URI-escape
the ID_SERIAL string before use as URI to fix that issue.
Closes: https://gitlab.gnome.org/GNOME/gvfs/issues/338
-rw-r--r-- | monitor/mtp/gmtpvolumemonitor.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/monitor/mtp/gmtpvolumemonitor.c b/monitor/mtp/gmtpvolumemonitor.c index d8055f70..3582b994 100644 --- a/monitor/mtp/gmtpvolumemonitor.c +++ b/monitor/mtp/gmtpvolumemonitor.c @@ -139,7 +139,7 @@ gudev_add_device (GMtpVolumeMonitor *monitor, GUdevDevice *device, gboolean do_e GList *l; GMtpVolume *volume; const char *usb_serial_id, *device_path; - char *uri; + char *uri, *usb_serial_id_escaped; GFile *activation_mount_root; gboolean serial_conflict = FALSE; @@ -160,9 +160,11 @@ gudev_add_device (GMtpVolumeMonitor *monitor, GUdevDevice *device, gboolean do_e return; } - uri = g_strdup_printf ("mtp://%s", usb_serial_id); + usb_serial_id_escaped = g_uri_escape_string (usb_serial_id, NULL, FALSE); + uri = g_strdup_printf ("mtp://%s", usb_serial_id_escaped); activation_mount_root = g_file_new_for_uri (uri); g_free (uri); + g_free (usb_serial_id_escaped); /* * We do not support plugging in multiple devices that lack proper serial |