summaryrefslogtreecommitdiff
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 17:26:07 +0200
commit34ec07f1c1cfc66a9d58dcb3ad0c37c777843b6c (patch)
tree59abbb23f788acb1f7bd5b27867b458bf2166a11
parent5e4b6303e139c649e6e774d5819a898a91f85abe (diff)
downloadgvfs-34ec07f1c1cfc66a9d58dcb3ad0c37c777843b6c.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.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