From 33621ca4a8fcc19444b9be01ed820975c2e0dbd2 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 24 Jun 2010 12:24:58 +0100 Subject: [PATCH] glx: Prevent NULL context deref in __glXGetDrawable() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During a SwapBuffers request, we may end up querying an unknown drawable outside of an active context, and so need to report this error prior to attempting to dereference the NULL context. Also fixes: [Bug 29184] glXSwapBuffers with no GLX context crashes X. https://bugs.freedesktop.org/show_bug.cgi?id=29184 Signed-off-by: Chris Wilson Cc: Kristian Høgsberg --- glx/glxcmds.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/glx/glxcmds.c b/glx/glxcmds.c index 9e5b213..8d13c15 100644 --- a/glx/glxcmds.c +++ b/glx/glxcmds.c @@ -491,6 +491,13 @@ __glXGetDrawable(__GLXcontext *glxc, GLXDrawable drawId, ClientPtr client, return pGlxDraw; } + /* No active context and an unknown drawable, bail. */ + if (glxc == NULL) { + client->errorValue = drawId; + *error = BadMatch; + return NULL; + } + /* The drawId wasn't a GLX drawable. Make sure it's a window and * create a GLXWindow for it. Check that the drawable screen * matches the context screen and that the context fbconfig is -- 1.7.1