mesa: Fix out of bounds writes when uncompressing non-block-aligned ETC1.
authorEric Anholt <eric@anholt.net>
Fri, 11 Jan 2013 01:48:16 +0000 (17:48 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 18 Jan 2013 20:48:27 +0000 (12:48 -0800)
Fixes a crash in GLB2.1 offscreen on the glthread branch.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/texcompress_etc_tmp.h

index 8bbb2cde83e7a80a52849678c0c77f4131b22e03..5497566324f86debf80c9e0c2dfa44c7fb9480e4 100644 (file)
@@ -153,9 +153,9 @@ etc1_unpack_rgba8888(uint8_t *dst_row,
       for (x = 0; x < width; x+= bw) {
          etc1_parse_block(&block, src);
 
-         for (j = 0; j < bh; j++) {
+         for (j = 0; j < MIN2(bh, height - y); j++) {
             uint8_t *dst = dst_row + (y + j) * dst_stride + x * comps;
-            for (i = 0; i < bw; i++) {
+            for (i = 0; i < MIN2(bw, width - x); i++) {
                etc1_fetch_texel(&block, i, j, dst);
                dst[3] = 255;
                dst += comps;