I'm not sure if this is patch-worthy or not, but whilst getting GLX to work
again on Cygwin/X I came across this...
If the GL dispatch table pointer points to glapi_noop_table, (due to some kind
of terrible failure during GL initialization), running glxinfo for e.g. will
crash the X server, as DoGetString(GL_VERSION) tries to do atof() on the null
pointer returned by the noop dispatch function.
Given that all that noop dispatch table stuff is in there, I guess it's
preferable that it doesn't crash in that case.
>From 2e9ddcdaa1890204ec69ba6848cb1c49d5b85ef3 Mon Sep 17 00:00:00 2001
Message-Id:
<2e9ddcdaa1890204ec69ba6848cb1c49d5b85ef3.1231288719.git.jon.tur...@dronecode.org.uk>
In-Reply-To: <[email protected]>
References: <[email protected]>
From: Jon TURNEY <[email protected]>
Date: Mon, 5 Jan 2009 13:52:45 +0000
Subject: [PATCH 18/22] GLX: Avoid a crash when we have an uninitialized GL
context
If the GL dispatch table pointer points to glapi_noop_table,
(due to some kind of GL initialization failure), DoGetString(GL_VERSION)
(for example as invoked by glxinfo) will crash as it tries to
do atof() on the null pointer returned by the noop dispatch function
Signed-off-by: Jon TURNEY <[email protected]>
---
glx/single2.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/glx/single2.c b/glx/single2.c
index 0ca808c..50a59ed 100644
--- a/glx/single2.c
+++ b/glx/single2.c
@@ -335,6 +335,9 @@ int DoGetString(__GLXclientState *cl, GLbyte *pc, GLboolean
need_swap)
string = (const char *) CALL_GetString( GET_DISPATCH(), (name) );
client = cl->client;
+ if (string == NULL)
+ string = "";
+
/*
** Restrict extensions to those that are supported by both the
** implementation and the connection. That is, return the
--
1.6.0.4
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg