From 263daba7e6afb37bd471fdc8dd8e4458da0a45ff Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Sun, 5 Jun 2011 19:48:19 -0700 Subject: [PATCH] dri: Do not create DRI2 buffers for unrecognized DRI2 buffer tokens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit, if a client were to request an unrecognized DRI2 buffer, such as DRI2BufferStencil, then I830DRI2CreateBuffer() allocated and returned an X-tiled buffer by accident. The problem was that unrecognized tokens were caught by the default case of a switch statement. Now, when given unrecognized DRI2 tokens, I830DRI2CreateBuffers() returns null. This shouldn't break older Mesa versions, because they never query (via DRI2GetBuffersWithFormat) for the drawable's DRI2BufferStencil. CC: Eric Anholt CC: Ian Romanick CC: Kenneth Graunke CC: Kristian Høgsberg --- src/intel_dri.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/intel_dri.c b/src/intel_dri.c index 48d0f566..4571d075 100644 --- a/src/intel_dri.c +++ b/src/intel_dri.c @@ -338,10 +338,20 @@ I830DRI2CreateBuffer(DrawablePtr drawable, unsigned int attachment, hint |= INTEL_CREATE_PIXMAP_TILING_Y; break; } - default: + case DRI2BufferAccum: + case DRI2BufferBackLeft: + case DRI2BufferBackRight: + case DRI2BufferFakeFrontLeft: + case DRI2BufferFakeFrontRight: + case DRI2BufferFrontLeft: + case DRI2BufferFrontRight: hint |= INTEL_CREATE_PIXMAP_TILING_X; break; - } + default: + free(privates); + free(buffer); + return NULL; + } } pixmap = screen->CreatePixmap(screen,