Mesa (master): llvmpipe: Fix buffer overflow unswizzling several formats.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Sun Apr 25 14:59:14 UTC 2010


Module: Mesa
Branch: master
Commit: 5745bcb2dbfcaab53df89125d08689b51b9126ea
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5745bcb2dbfcaab53df89125d08689b51b9126ea

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sun Apr 25 15:40:06 2010 +0100

llvmpipe: Fix buffer overflow unswizzling several formats.

Array formats without for channels were being advanced as four channels,
causing buffer overflows.

---

 src/gallium/drivers/llvmpipe/lp_tile_soa.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
index b2f800a..5ab63cb 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py
+++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
@@ -257,7 +257,7 @@ def emit_tile_pixel_unswizzle_code(format, src_channel):
                     value = 'TILE_PIXEL(src, x, y, %u)' % inv_swizzle[i]
                     value = conversion_expr(src_channel, dst_channel, dst_native_type, value, clamp=False)
                     print '         *dst_pixel++ = %s;' % value
-                else:
+                elif dst_channel.size:
                     print '         ++dst_pixel;'
     else:
         assert False




More information about the mesa-commit mailing list