uinput: check for asprintf failure
authorPeter Hutterer <peter.hutterer@who-t.net>
Tue, 18 Mar 2014 03:55:21 +0000 (13:55 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 18 Mar 2014 23:36:41 +0000 (09:36 +1000)
This doesn't really do much here, but strictly speaking: if asprintf returns
-1, devnode is undefined. So reset it to NULL to avoid weird pointers. And
also free the rest of the names if we ever have more than one device - which
also shouldn't happen.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
libevdev/libevdev-uinput.c

index 09b70442c1ba0ee0e13b91f74586e2cb60bf29b3..0543bc4a22084dec13bf81a2887f9c81f16da007 100644 (file)
@@ -179,7 +179,8 @@ fetch_device_node(const char *path)
        /* ndev should only ever be 1 */
 
        for (i = 0; i < ndev; i++) {
-               asprintf(&devnode, "/dev/input/%s", namelist[i]->d_name);
+               if (!devnode && asprintf(&devnode, "/dev/input/%s", namelist[i]->d_name) == -1)
+                       devnode = NULL;
                free(namelist[i]);
        }