[Mesa-dev] [PATCH] glsl/images: bounds check image unit assignment

Dave Airlie airlied at gmail.com
Mon May 23 02:51:21 UTC 2016


From: Dave Airlie <airlied at redhat.com>

The CTS test:
GL45-CTS.multi_bind.dispatch_bind_image_textures
binds 192 image uniforms, we reject this later,
but not until after we trash the contents of the
struct gl_shader.

Error now reads:
Too many compute shader image uniforms (192 > 16)
instead of
Too many compute shader image uniforms (2745344416 > 16)

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 src/compiler/glsl/link_uniform_initializers.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp
index c6346d5..48e9106 100644
--- a/src/compiler/glsl/link_uniform_initializers.cpp
+++ b/src/compiler/glsl/link_uniform_initializers.cpp
@@ -145,6 +145,8 @@ set_opaque_binding(void *mem_ctx, gl_shader_program *prog,
                     storage->opaque[sh].active) {
                for (unsigned i = 0; i < elements; i++) {
                   const unsigned index = storage->opaque[sh].index + i;
+                  if (index > MAX_IMAGE_UNIFORMS)
+                     break;
                   shader->ImageUnits[index] = storage->storage[i].i;
                }
             }
-- 
2.5.5



More information about the mesa-dev mailing list