OSDN Git Service

glx/dri3: handle NULL pointers in loader-to-DRI3 drawable conversion
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 27 Jan 2017 10:58:41 +0000 (11:58 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 10 Feb 2017 11:06:58 +0000 (11:06 +0000)
With a subsequent patch, we might see NULL loaderPrivates, e.g. when
a DRIdrawable is flushed whose corresponding GLXDRIdrawable was destroyed.
This resulted in a crash, since the loader vs. DRI3 drawable structures
have a non-zero offset.

Fixes glx-visuals-{depth,stencil} -pixmap

Cc: 17.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
(cherry picked from commit 40c304fc065259c07c0f4f7a35efedd205e4f250)

src/glx/dri3_glx.c

index 4472a0b..f7bcba3 100644 (file)
@@ -81,6 +81,8 @@
 static struct dri3_drawable *
 loader_drawable_to_dri3_drawable(struct loader_dri3_drawable *draw) {
    size_t offset = offsetof(struct dri3_drawable, loader_drawable);
+   if (!draw)
+      return NULL;
    return (struct dri3_drawable *)(((void*) draw) - offset);
 }