PickPointer or PickKeyboard return NULL, all MDs are currently disabled and we cannot emulate a core event. This wasn't anticipated by the protocol, so we don't really have an error code we may use here - BadAccess is simply the least bad of the possible ones.
And returning BadAccess beats crashing the server. X.Org Bug 45796 <http://bugs.freedesktop.org/show_bug.cgi?id=45796> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> --- Xext/xtest.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/Xext/xtest.c b/Xext/xtest.c index bd8e1d3..2f6a733 100644 --- a/Xext/xtest.c +++ b/Xext/xtest.c @@ -120,6 +120,10 @@ ProcXTestCompareCursor(ClientPtr client) rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); if (rc != Success) return rc; + + if (!ptr) + return BadAccess; + if (stuff->cursor == None) pCursor = NullCursor; else if (stuff->cursor == XTestCurrentCursor) @@ -320,9 +324,15 @@ ProcXTestFakeInput(ClientPtr client) return BadValue; } + /* Technically the protocol doesn't allow for BadAccess here but + * this can only happen when all MDs are disabled. */ + if (!dev) + return BadAccess; + dev = GetXTestDevice(dev); } + /* If the event has a time set, wait for it to pass */ if (ev->u.keyButtonPointer.time) { -- 1.7.7.5 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel