vbo: in glDraw[Range]Element() code, check for out of bounds indexes
authorBrian Paul <brianp@vmware.com>
Thu, 7 May 2009 17:01:02 +0000 (11:01 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 7 May 2009 17:01:02 +0000 (11:01 -0600)
No-op the bad drawing command rather than go out of bounds and render
garbage.  Print a warning to alert the developer to the bad drawing call.

src/mesa/vbo/vbo_exec_array.c

index 0d4cbe9a1e58282dee5bd2973e2fb92fc616d0b3..f4ad394f5166b839e4e2f15bba7b8b0222992cb6 100644 (file)
@@ -352,6 +352,13 @@ vbo_exec_DrawRangeElements(GLenum mode,
    if (!_mesa_validate_DrawRangeElements( ctx, mode, start, end, count, type, indices ))
       return;
 
+   if (end >= ctx->Array._MaxElement) {
+      /* the max element is out of bounds of one or more enabled arrays */
+      _mesa_warning(ctx, "glDraw[Range]Elements() index=%u is "
+                    "out of bounds (max=%u)", end, ctx->Array._MaxElement);
+      return;
+   }
+
    FLUSH_CURRENT( ctx, 0 );
 
    if (ctx->NewState)