udev: fix a race condition if a device disappears before we get a handle
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 18 Feb 2015 03:36:44 +0000 (13:36 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Wed, 18 Feb 2015 20:56:23 +0000 (06:56 +1000)
If the device disappears too quickly, the device is NULL, the sysname is NULL
and that causes a segfault in strcmp.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
src/udev-seat.c

index 3d05733655d88a59d9c3013cf9b72a41b53de726..6615f208daddea3c4079c35efb9419ca85118bb9 100644 (file)
@@ -158,6 +158,8 @@ udev_input_add_devices(struct udev_input *input, struct udev *udev)
        udev_list_entry_foreach(entry, udev_enumerate_get_list_entry(e)) {
                path = udev_list_entry_get_name(entry);
                device = udev_device_new_from_syspath(udev, path);
+               if (!device)
+                       continue;
 
                sysname = udev_device_get_sysname(device);
                if (strncmp("event", sysname, 5) != 0) {