summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-05-11 15:45:46 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-05-16 12:20:58 +1000
commit8fb51feae222ff4f4aa1c440b6973ce7383bbc09 (patch)
tree9f144bb808f7038f07951049ef79561f36421459
parent0cea199eda772a5ddd5ce72e4823a00ec14405d4 (diff)
xkb: if kbd init failed, NULL out the pointers after freeing them (#21278)
Reproducible: Configure a server that uses the keyboard driver with an invalid ruleset, e.g. (Option "XkbRules" "foobar"). Ensure that Option "AllowEmptyInput" is "off" in the ServerFlags or ServerLayout section. Start the server. After failing to init the keymap, the server will try to clean up after the device, double-freeing some xkb structs that have not been reset properly. X.Org Bug 21278 <http://bugs.freedesktop.org/show_bug.cgi?id=21278> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--xkb/xkbInit.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index 7c611bcc7..e85b31837 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -622,10 +622,13 @@ unwind_desc:
XkbFreeKeyboard(xkb, 0, TRUE);
unwind_info:
xfree(xkbi);
+ dev->key->xkbInfo = NULL;
unwind_kbdfeed:
xfree(dev->kbdfeed);
+ dev->kbdfeed = NULL;
unwind_key:
xfree(dev->key);
+ dev->key = NULL;
return FALSE;
}