diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-03-18 13:55:21 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2014-03-19 09:36:41 +1000 |
commit | f29008b758e82f9ba2d2f9627a680c952d44668b (patch) | |
tree | c40dba39a7246777393dce4f8344713e44bb29ae | |
parent | 2ad8980c5a7df736d84b8acc931101d2a16ade5e (diff) | |
download | libevdev-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.c | 3 |
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]); } |