chiark / gitweb /
input_id: Fix endless loop for non-input devices
authorMartin Pitt <martin.pitt@ubuntu.com>
Thu, 3 Dec 2009 09:16:49 +0000 (10:16 +0100)
committerMartin Pitt <martin.pitt@ubuntu.com>
Thu, 3 Dec 2009 09:16:49 +0000 (10:16 +0100)
When being called on a device which is not in the "input" subsystem, or doesn't
have an "input" parent, it got stuck in an endless loop. Unfortunately this
includes the virtual/input/mice multiplexer, which exposes this bug on just
about every system.

extras/input_id/input_id.c

index 3754cdefee2faf6bbeaae2597c2d1b834fa6c0e8..fededa3f7d0ab1f83141d0d9ec4b29315492918a 100644 (file)
@@ -143,7 +143,7 @@ int main (int argc, char** argv)
 
        /* walk up the parental chain until we find the real input device; the
         * argument is very likely a subdevice of this, like eventN */
-       while (udev_device_get_sysattr_value(dev, "capabilities/key") == NULL)
+       while (dev != NULL && udev_device_get_sysattr_value(dev, "capabilities/key") == NULL)
                dev = udev_device_get_parent(dev);
 
        /* Use this as a flag that input devices were detected, so that this