From 8fb51feae222ff4f4aa1c440b6973ce7383bbc09 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 11 May 2009 15:45:46 +1000 Subject: [PATCH] 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 Signed-off-by: Peter Hutterer --- xkb/xkbInit.c | 3 +++ 1 file changed, 3 insertions(+) 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; }