mask color indexes against palette size, per the spec
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 3 Dec 2004 18:12:08 +0000 (18:12 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 3 Dec 2004 18:12:08 +0000 (18:12 +0000)
src/mesa/main/texformat_tmp.h

index d341c7864ae96f489ec3ea917ce6420cce1c62f1..275a84ef9e8918b1caf409129bfb67bf9292af82 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.1
+ * Version:  6.3
  *
  * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
  *
@@ -1023,9 +1023,9 @@ static void FETCH(ci8)( const struct gl_texture_image *texImage,
                        GLint i, GLint j, GLint k, GLchan *texel )
 {
    const GLubyte *src = UBYTE_SRC( texImage, i, j, k, 1 );
-   const GLuint index = *src;
    const struct gl_color_table *palette;
    const GLchan *table;
+   GLuint index;
    GET_CURRENT_CONTEXT(ctx);
 
    if (ctx->Texture.SharedPalette) {
@@ -1039,6 +1039,9 @@ static void FETCH(ci8)( const struct gl_texture_image *texImage,
    ASSERT(palette->Type != GL_FLOAT);
    table = (const GLchan *) palette->Table;
 
+   /* Mask the index against size of palette to avoid going out of bounds */
+   index = (*src) & (palette->Size - 1);
+
    switch (palette->Format) {
       case GL_ALPHA:
          texel[RCOMP] =