summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Crocker <bcrocker@redhat.com>2017-06-22 15:14:51 -0400
committerAndres Gomez <agomez@igalia.com>2017-06-28 20:15:05 +0300
commit84f756994fee351d1718998f6091caba913ce9cb (patch)
tree2ab08c40ee420e726d43aea763adc7a8efed282a
parent940e50f75413bc355e3bc0ac34a25a2d1b6b6fcf (diff)
egl_dri2: swrastGetDrawableInfo: set *x, *y [v2]
In swrastGetDrawableInfo, set *x and *y, not just *w and *h; this fixes a crash later in drisw_update_tex_buffer when the (formerly) uninitialized x and y values are used to construct an address in a call to llvmpipe_transfer_map. Fixes crash in Piglit test "spec@egl 1.4@eglcreatepbuffersurface and then glclear" (<piglit dir>/bin/egl-create-pbuffer-surface -auto) that occurred intermittently, e.g. when the uninitialized x and y in drisw_update_tex_buffer just happened to contain absurd non-zero values. v2: Initialize in case if function succeeds or fails, just like *w/*h. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Ben Crocker <bcrocker@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> (cherry picked from commit 162c42f8edde4a2c13b1eb5c0f9f0828441ed4c8)
-rw-r--r--src/egl/drivers/dri2/platform_x11.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
index 3c1fafb5e4f..ea21355a1ba 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -110,7 +110,7 @@ swrastGetDrawableInfo(__DRIdrawable * draw,
xcb_get_geometry_reply_t *reply;
xcb_generic_error_t *error;
- *w = *h = 0;
+ *x = *y = *w = *h = 0;
cookie = xcb_get_geometry (dri2_dpy->conn, dri2_surf->drawable);
reply = xcb_get_geometry_reply (dri2_dpy->conn, cookie, &error);
if (reply == NULL)
@@ -120,6 +120,8 @@ swrastGetDrawableInfo(__DRIdrawable * draw,
_eglLog(_EGL_WARNING, "error in xcb_get_geometry");
free(error);
} else {
+ *x = reply->x;
+ *y = reply->y;
*w = reply->width;
*h = reply->height;
}