summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-03-18 13:55:21 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-03-19 09:36:41 +1000
commitf29008b758e82f9ba2d2f9627a680c952d44668b (patch)
treec40dba39a7246777393dce4f8344713e44bb29ae
parent2ad8980c5a7df736d84b8acc931101d2a16ade5e (diff)
downloadlibevdev-f29008b758e82f9ba2d2f9627a680c952d44668b.tar.gz
uinput: check for asprintf failure
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>
-rw-r--r--libevdev/libevdev-uinput.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libevdev/libevdev-uinput.c b/libevdev/libevdev-uinput.c
index 09b7044..0543bc4 100644
--- a/libevdev/libevdev-uinput.c
+++ b/libevdev/libevdev-uinput.c
@@ -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]);
}