]> git.cworth.org Git - glaze/commitdiff
Fix segmentation fault if GLAZE_LIBGL is set to empty string
authorCarl Worth <cworth@cworth.org>
Mon, 23 Sep 2013 14:00:51 +0000 (07:00 -0700)
committerCarl Worth <cworth@cworth.org>
Mon, 23 Sep 2013 14:00:51 +0000 (07:00 -0700)
Previosuly, we would catch and report an unset GLAZE_LIBGL variable
with a clean error message so that the user would know to set this
variable. Similarly, if the variable was set to an incorrect filename,
that would also result in a good error message.

But, if the user happened to set GLAZE_LIBGL to an empty string, then
Glaze would march on and end up triggering the dlsym behavior where a
NULL handle results in a lookup in the local program. This would then
trigger infinite recursion in the resolving of the ifunc symbol and a
not-very-useful segfault.

We avoid all that by noticing the empty string up front and giving the
user the useful error message.

glaze-gl.c

index e7dd728c058b53f31b2ba2f0f73fdb128781512d..04f288ee97473791fdf40d3a1adfca230d75c9fc 100644 (file)
@@ -51,7 +51,7 @@ open_libgl_handle (void)
                libgl_path = getenv ("GLAZE_LIBGL_64_AUTO");
 #endif
 
-               if (libgl_path == NULL) {
+               if (libgl_path == NULL || strlen (libgl_path) == 0) {
                        fprintf (stderr,
                                 "Error: Failed to detect OpenGL library.\n"
                                 "Please set GLAZE_LIBGL to path of real libGL.so\n");