From f87352d76966b6e4b0ab5fa9129ccd1ade0c2e7a Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 23 May 2016 12:49:25 +1000 Subject: [PATCH] glsl/images: bounds check image unit assignment 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) Reviewed-by: Ilia Mirkin Cc: "12.0" Signed-off-by: Dave Airlie --- 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 c6346d573ab..bf6d394ea89 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 >= ARRAY_SIZE(shader->ImageUnits)) + break; shader->ImageUnits[index] = storage->storage[i].i; } } -- 2.30.2