summaryrefslogtreecommitdiff
path: root/monitor
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2018-09-24 10:25:10 +0200
committerOndrej Holy <oholy@redhat.com>2018-09-24 10:40:21 +0200
commit4a4b22ece7d48f96da9120d677b2707a541263d5 (patch)
tree25e7d11ebe910c6f77d0deb8011410f66db70e20 /monitor
parent7a1c184608ff93e8344e0aa6d6b7bfa689c43a67 (diff)
downloadgvfs-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
Diffstat (limited to 'monitor')
-rw-r--r--monitor/mtp/gmtpvolumemonitor.c6
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