[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