summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian <[email protected]>2007-05-09 08:04:32 -0600
committerBrian <[email protected]>2007-05-09 08:07:15 -0600
commit3e4302fe3b3cf0d559b1288f3965f800ee35cd41 (patch)
tree8a0377a1b9f809a33b0ebbc9bc5b2f516c481d41
parentc9b87b8ad880755fb522cf4abd6d2499022312cf (diff)
Check that texture units/samplers specified with glUniform1i() are legal.
-rw-r--r--src/mesa/shader/shader_api.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c
index 64f2a9fa126..3a54e68d0de 100644
--- a/src/mesa/shader/shader_api.c
+++ b/src/mesa/shader/shader_api.c
@@ -1,6 +1,6 @@
/*
* Mesa 3-D graphics library
- * Version: 6.5.3
+ * Version: 7.0
*
* Copyright (C) 2004-2007 Brian Paul All Rights Reserved.
*
@@ -1072,12 +1072,20 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
* If we're setting a sampler, we must use glUniformi1()!
*/
if (shProg->Uniforms->Parameters[location].Type == PROGRAM_SAMPLER) {
+ GLint unit;
if (type != GL_INT || count != 1) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glUniform(only glUniform1i can be used "
"to set sampler uniforms)");
return;
}
+ /* check that the sampler (tex unit index) is legal */
+ unit = ((GLint *) values)[0];
+ if (unit >= ctx->Const.MaxTextureImageUnits) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glUniform1(invalid sampler/tex unit index)");
+ return;
+ }
}
if (count < 0) {