From 6b5c0401e2b8fe1637f937739e822a33206ef1ac Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 20 Apr 2010 05:37:39 +0300 Subject: evdev: leaked_storage: free memory allocated from the xf86Option code. Signed-off-by: Oliver McFadden Reviewed-by: Peter Hutterer --- src/draglock.c | 2 ++ src/emuWheel.c | 2 +- src/evdev.c | 12 ++++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/draglock.c b/src/draglock.c index 6157cae..a7ad974 100644 --- a/src/draglock.c +++ b/src/draglock.c @@ -145,6 +145,8 @@ EvdevDragLockPreInit(InputInfoPtr pInfo) if (next_num != NULL && *next_num == '\0') next_num = NULL; } + + xfree(option_string); } /* Updates DragLock button state and fires button event messges */ diff --git a/src/emuWheel.c b/src/emuWheel.c index 3f0dfd4..afafff7 100644 --- a/src/emuWheel.c +++ b/src/emuWheel.c @@ -232,8 +232,8 @@ EvdevWheelEmuHandleButtonMap(InputInfoPtr pInfo, WheelAxisPtr pAxis, char* axis_ } else { xf86Msg(X_WARNING, "%s: Invalid %s value:\"%s\"\n", pInfo->name, axis_name, option_string); - } + xfree(option_string); /* Clean up and log what happened */ if (msg) { diff --git a/src/evdev.c b/src/evdev.c index d133870..e4ca84e 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1235,6 +1235,7 @@ EvdevAddAbsClass(DeviceIntPtr device) pEvdev->flags |= EVDEV_RELATIVE_MODE; else xf86Msg(X_INFO, "%s: unknown mode, use default\n", pInfo->name); + xfree(mode); } return Success; @@ -1370,15 +1371,16 @@ EvdevInitButtonMapping(InputInfoPtr pInfo) /* Check for user-defined button mapping */ if ((mapping = xf86CheckStrOption(pInfo->options, "ButtonMapping", NULL))) { - char *s = " "; + char *map, *s = " "; int btn = 0; xf86Msg(X_CONFIG, "%s: ButtonMapping '%s'\n", pInfo->name, mapping); + map = mapping; while (s && *s != '\0' && nbuttons < EVDEV_MAXBUTTONS) { - btn = strtol(mapping, &s, 10); + btn = strtol(map, &s, 10); - if (s == mapping || btn < 0 || btn > EVDEV_MAXBUTTONS) + if (s == map || btn < 0 || btn > EVDEV_MAXBUTTONS) { xf86Msg(X_ERROR, "%s: ... Invalid button mapping. Using defaults\n", @@ -1388,8 +1390,9 @@ EvdevInitButtonMapping(InputInfoPtr pInfo) } pEvdev->btnmap[nbuttons++] = btn; - mapping = s; + map = s; } + xfree(mapping); } for (i = nbuttons; i < ArrayLength(pEvdev->btnmap); i++) @@ -2071,6 +2074,7 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) num_calibration = sscanf(str, "%d %d %d %d", &calibration[0], &calibration[1], &calibration[2], &calibration[3]); + xfree(str); if (num_calibration == 4) EvdevSetCalibration(pInfo, num_calibration, calibration); else -- cgit v1.2.3 From a4f2d12cd8fbd19d13a184c45817d7539cb7e3be Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 20 Apr 2010 05:48:33 +0300 Subject: evdev: ioctl() may return a negative value therefor use a signed integer. Signed-off-by: Oliver McFadden Reviewed-by: Peter Hutterer --- src/evdev.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index e4ca84e..6992c68 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1633,8 +1633,7 @@ static int EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare) { EvdevPtr pEvdev = pInfo->private; - size_t len; - int i; + int i, len; char name[1024] = {0}; unsigned long bitmask[NLONGS(EV_CNT)] = {0}; -- cgit v1.2.3 From 5fb1e841eb26f6223504e46dacfc40c2e510f72d Mon Sep 17 00:00:00 2001 From: Oliver McFadden Date: Tue, 20 Apr 2010 06:59:58 +0300 Subject: evdev: EvdevProbe: check ioctl() return value and warn on failure. Called function "ioctl" whose return value should be checked (checked 10 out of 11 times) Signed-off-by: Oliver McFadden Reviewed-by: Peter Hutterer --- src/evdev.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 6992c68..ccea90d 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1782,8 +1782,9 @@ EvdevProbe(InputInfoPtr pInfo) xf86Msg(X_ERROR, "Grab failed. Device already configured?\n"); return 1; } - } else if (pEvdev->grabDevice) { - ioctl(pInfo->fd, EVIOCGRAB, (void *)0); + } else if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)0)) { + xf86Msg(X_WARNING, "%s: Release failed (%s)\n", pInfo->name, + strerror(errno)); } /* Trinary state for ignoring axes: -- cgit v1.2.3