1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
From f3d9b75d68f9cbda60bfcef195915eb72d39a184 Mon Sep 17 00:00:00 2001
From: Daniel P. Berrange <berrange@redhat.com>
Date: Mon, 7 Jun 2010 15:45:08 +0100
Subject: [PATCH] Fix assumption about some udev parameters always being present
If certain udev parameters were missing (aka NULL) then the
device monitor code would crash with a NULL pointer dereference.
Ignore any events where one of our desired parameters is NULL
to avoid crashing
---
src/backend/entangle-device-manager.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/src/backend/entangle-device-manager.c b/src/backend/entangle-device-manager.c
index 646d5fe..f450a40 100644
--- a/src/backend/entangle-device-manager.c
+++ b/src/backend/entangle-device-manager.c
@@ -120,13 +120,20 @@ static void do_udev_event(GUdevClient *client G_GNUC_UNUSED,
return;
devtype = g_udev_device_get_devtype(dev);
- if (strcmp(devtype, "usb_device") != 0)
+ if ((devtype == NULL) ||
+ strcmp(devtype, "usb_device") != 0)
return;
sysfs = g_udev_device_get_sysfs_path(dev);
usbbus = g_udev_device_get_property(dev, "BUSNUM");
usbdev = g_udev_device_get_property(dev, "DEVNUM");
+
+ if (sysfs == NULL ||
+ usbbus == NULL ||
+ usbdev == NULL)
+ return;
+
port = g_strdup_printf("usb:%s,%s", usbbus, usbdev);
ENTANGLE_DEBUG("%s device '%s' '%s'", action, sysfs, port);
--
1.6.1
|