kdrive: plug two memory leaks when freeing the KdKeyboard/Pointer.
xkbRules, xkbModel and xkbLayout are strdup'd in KdNewKeyboard, need to be freed. The ephyr driver strdups the name on top of the already allocated kdrive-assigned name. Memory must be freed beforehand. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
fd91313673
commit
a9c274df5c
|
@ -1074,6 +1074,8 @@ MouseInit (KdPointerInfo *pi)
|
|||
((EphyrPointerPrivate *)pi->driverPrivate)->enabled = FALSE;
|
||||
pi->nAxes = 3;
|
||||
pi->nButtons = 32;
|
||||
if (pi->name)
|
||||
xfree(pi->name);
|
||||
pi->name = strdup("Xephyr virtual mouse");
|
||||
ephyrMouse = pi;
|
||||
return Success;
|
||||
|
@ -1123,6 +1125,8 @@ EphyrKeyboardInit (KdKeyboardInfo *ki)
|
|||
}
|
||||
ki->minScanCode = ephyrKeySyms.minKeyCode;
|
||||
ki->maxScanCode = ephyrKeySyms.maxKeyCode;
|
||||
if (ki->name)
|
||||
xfree(ki->name);
|
||||
ki->name = strdup("Xephyr virtual keyboard");
|
||||
ephyrKbd = ki;
|
||||
return Success;
|
||||
|
|
|
@ -166,6 +166,12 @@ KdFreeKeyboard(KdKeyboardInfo *ki)
|
|||
xfree(ki->name);
|
||||
if (ki->path)
|
||||
xfree(ki->path);
|
||||
if (ki->xkbRules)
|
||||
xfree(ki->xkbRules);
|
||||
if (ki->xkbModel)
|
||||
xfree(ki->xkbModel);
|
||||
if (ki->xkbLayout)
|
||||
xfree(ki->xkbLayout);
|
||||
ki->next = NULL;
|
||||
xfree(ki);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue