glsl/linker: Avoid buffer over-run in parcel_out_uniform_storage::visit_field
authorStéphane Marchesin <marcheu@chromium.org>
Wed, 15 Aug 2012 00:15:54 +0000 (17:15 -0700)
committerStéphane Marchesin <marcheu@chromium.org>
Thu, 23 Aug 2012 18:42:19 +0000 (11:42 -0700)
When too may uniforms are used, the error will be caught in
check_resources (src/glsl/linker.cpp).

NOTE: This is a candidate for the 8.0 branch.

Signed-off-by: Stéphane Marchesin <marcheu@chromium.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Benoit Jacob <bjacob@mozilla.com>
src/glsl/link_uniforms.cpp

index 25dc1d7dc5574f3e7bb81c3f546decffe1992414..eef9025cf28fe18eb0f3ca46301d9af9eb027cf3 100644 (file)
@@ -313,7 +313,7 @@ private:
         const gl_texture_index target = base_type->sampler_index();
         const unsigned shadow = base_type->sampler_shadow;
         for (unsigned i = this->uniforms[id].sampler
-                ; i < this->next_sampler
+                ; i < MIN2(this->next_sampler, MAX_SAMPLERS)
                 ; i++) {
            this->targets[i] = target;
            this->shader_samplers_used |= 1U << i;