From 820ab01ddfdf3ddee150f9e84fbee71bae884dea Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 7 Nov 2016 19:36:26 +0100 Subject: kernel-device: ID_USB_INTERFACE_NUM should be read as an hex string The original g_udev_device_get_property_as_int() uses strtol() without an explicit base (i.e. 0) so that the base is autodetected from the string whenever possible (e.g. if prefixes with '0x' it is treated as a hexadecimal string). But, for ID_USB_INTERFACE_NUM, we explicitly require reading the number as an hex string, even if we don't have any '0x' prefix. Reported-by: Matthew Stanger --- src/kerneldevice/mm-kernel-device-generic.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/kerneldevice/mm-kernel-device-generic.c') diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c index f3ab8b22..c4cfd9a0 100644 --- a/src/kerneldevice/mm-kernel-device-generic.c +++ b/src/kerneldevice/mm-kernel-device-generic.c @@ -873,6 +873,19 @@ kernel_device_get_property_as_int (MMKernelDevice *self, return ((value && mm_get_int_from_str (value, &aux)) ? aux : 0); } +static guint +kernel_device_get_property_as_int_hex (MMKernelDevice *self, + const gchar *property) +{ + const gchar *value; + guint aux = 0; + + g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), -1); + + value = g_object_get_data (G_OBJECT (self), property); + return ((value && mm_get_uint_from_hex_str (value, &aux)) ? aux : 0); +} + /*****************************************************************************/ MMKernelDevice * @@ -1051,6 +1064,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass) kernel_device_class->get_property = kernel_device_get_property; kernel_device_class->get_property_as_boolean = kernel_device_get_property_as_boolean; kernel_device_class->get_property_as_int = kernel_device_get_property_as_int; + kernel_device_class->get_property_as_int_hex = kernel_device_get_property_as_int_hex; properties[PROP_PROPERTIES] = g_param_spec_object ("properties", -- cgit v1.2.3-70-g09d2