summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-02-27 11:22:27 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-03-07 13:52:16 +1000
commitd1c1e79a1b204aab23f19050f3b52453b598c016 (patch)
tree6540ca5bca9e626fbb66a10d5db559a0a4fc2d0f
parent702987d2634bdaee974642dda03d5f020f1b8b48 (diff)
downloadlibevdev-d1c1e79a1b204aab23f19050f3b52453b598c016.tar.gz
Plug a memory leak for name, uniq, phys
If a device is assigned a name, uniq and/or phys before calling libevdev_set_fd(), those values would leak. Change the default alloc to calloc, so name, uniq, and phys are initialized to zero before we call libevdev_reset Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit f162f00f1db2cd0141958a4d8ed4a665bfc888e3)
-rw-r--r--libevdev/libevdev.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 142d6ad..ff70382 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -133,6 +133,9 @@ log_msg(enum libevdev_log_priority priority,
static void
libevdev_reset(struct libevdev *dev)
{
+ free(dev->name);
+ free(dev->phys);
+ free(dev->uniq);
memset(dev, 0, sizeof(*dev));
dev->fd = -1;
dev->initialized = false;
@@ -148,7 +151,7 @@ libevdev_new(void)
{
struct libevdev *dev;
- dev = malloc(sizeof(*dev));
+ dev = calloc(1, sizeof(*dev));
if (!dev)
return NULL;