Mesa (master): mesa: Fix indirect draw buffer size check on 32-bit systems.

Kenneth Graunke kwg at kemper.freedesktop.org
Thu Apr 28 23:37:56 UTC 2016


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Apr 25 22:34:37 2016 -0700

mesa: Fix indirect draw buffer size check on 32-bit systems.

Fixes dEQP-GLES31.functional subtests:
draw_indirect.negative.command_offset_not_in_buffer_signed32_wrap
draw_indirect.negative.command_offset_not_in_buffer_unsigned32_wrap

These tests use really large values that overflow GLsizeiptr, at
which point the buffer size isn't less than "end".

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95138
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Reviewed-by: Mark Janes <mark.a.janes at intel.com>

---

 src/mesa/main/api_validate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 2b62997..688408f 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -696,7 +696,7 @@ valid_draw_indirect(struct gl_context *ctx,
                     GLenum mode, const GLvoid *indirect,
                     GLsizei size, const char *name)
 {
-   const GLsizeiptr end = (GLsizeiptr)indirect + size;
+   const uint64_t end = (uint64_t) (uintptr_t) indirect + size;
 
    /* OpenGL ES 3.1 spec. section 10.5:
     *




More information about the mesa-commit mailing list