Plug a memory leak for name, uniq, phys
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 27 Feb 2014 01:22:27 +0000 (11:22 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 27 Feb 2014 03:19:36 +0000 (13:19 +1000)
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>
libevdev/libevdev.c

index 526c448..6127e64 100644 (file)
@@ -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;