summaryrefslogtreecommitdiff
blob: 52eddea88dd788c2dceab8eee4ee9a086fb38798 (plain)
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