]> git.draconx.ca Git - gentoo-draconx.git/blobdiff - x11-base/xorg-server/files/0001-glx-Prevent-NULL-context-deref-in-__glXGetDrawable.patch
xorg-server: Add GLX segfault fix.
[gentoo-draconx.git] / x11-base / xorg-server / files / 0001-glx-Prevent-NULL-context-deref-in-__glXGetDrawable.patch
diff --git a/x11-base/xorg-server/files/0001-glx-Prevent-NULL-context-deref-in-__glXGetDrawable.patch b/x11-base/xorg-server/files/0001-glx-Prevent-NULL-context-deref-in-__glXGetDrawable.patch
new file mode 100644 (file)
index 0000000..90bef52
--- /dev/null
@@ -0,0 +1,44 @@
+From a59c7428549c8be0724bcfceecd596582840852b Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+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 <chris@chris-wilson.co.uk>
+Cc: Kristian Høgsberg <krh@bitplanet.net>
+---
+ 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
+