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

Author: Zack Rusin <[email protected]>
Date:   Fri Feb  5 18:57:10 2010 -0500

gallium/draw: fix overflowing element indices

we piggy back flags in the top four bits of the element indices, so if
the maximum index stored in any of the elements is greater than
sizeof(ushort) - sizeof(flags we piggy back) then we overflow. fix it by
simply falling back to the slow path if we notice the overflow.

---

 src/gallium/auxiliary/draw/draw_pt_vcache.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_pt_vcache.c 
b/src/gallium/auxiliary/draw/draw_pt_vcache.c
index d3f179c..a87ec30 100644
--- a/src/gallium/auxiliary/draw/draw_pt_vcache.c
+++ b/src/gallium/auxiliary/draw/draw_pt_vcache.c
@@ -347,7 +347,8 @@ vcache_check_run( struct draw_pt_front_end *frontend,
                        draw_count);
       
    if (max_index == 0xffffffff ||
-       fetch_count > draw_count) {
+       fetch_count > draw_count ||
+       max_index != (max_index & ~DRAW_PIPE_FLAG_MASK)) {
       if (0) debug_printf("fail\n");
       goto fail;
    }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to