mesa: Don't crash when destroying contexts created with no visual.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 2 Feb 2017 18:10:30 +0000 (10:10 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 3 Feb 2017 16:55:02 +0000 (08:55 -0800)
dEQP-EGL.functional.create_context.no_config tries to create a context
with no config, then immediately destroys it.  The drawbuffer is never
set up, so we can't dereference it asking if it's double buffered, or
we'll crash on a null pointer dereference.

Just bail early.

Applications using EGL_KHR_no_config_context could hit this.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/mesa/main/context.c

index 7ecd241e6eb58a50ae15eb7188489504be668618..76763489b9f0d79e492f979a8f077ea4280e31b8 100644 (file)
@@ -1550,7 +1550,7 @@ _mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height)
 static void
 handle_first_current(struct gl_context *ctx)
 {
-   if (ctx->Version == 0) {
+   if (ctx->Version == 0 || !ctx->DrawBuffer) {
       /* probably in the process of tearing down the context */
       return;
    }