Mesa (master): vbo: in glDraw[Range]Element() code, check for out of bounds indexes

Brian Paul brianp at kemper.freedesktop.org
Thu May 7 17:10:49 UTC 2009


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu May  7 11:01:02 2009 -0600

vbo: in glDraw[Range]Element() code, check for out of bounds indexes

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 |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
index 0d4cbe9..f4ad394 100644
--- a/src/mesa/vbo/vbo_exec_array.c
+++ b/src/mesa/vbo/vbo_exec_array.c
@@ -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)




More information about the mesa-commit mailing list