summaryrefslogtreecommitdiff
path: root/src/mesa/shader/arbprogparse.c
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2009-04-28 10:57:45 -0600
committerBrian Paul <brianp@vmware.com>2009-04-28 10:58:13 -0600
commit656cd707db3699079d3a1b886d82e6f04afb1065 (patch)
tree2047ae745d68cadcb77f710a90dbf835d6b19a81 /src/mesa/shader/arbprogparse.c
parentce7f78694d9a611d543b97f239194af311f7a9a1 (diff)
mesa: Fix buffer overflow when parsing generic vertex attributes.
(cherry picked from master, commit fa92756400ccfbb3f0201df634feb45ab4f98352)
Diffstat (limited to 'src/mesa/shader/arbprogparse.c')
-rw-r--r--src/mesa/shader/arbprogparse.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c
index 810a7b8f3e4..0984d881723 100644
--- a/src/mesa/shader/arbprogparse.c
+++ b/src/mesa/shader/arbprogparse.c
@@ -1496,10 +1496,16 @@ generic_attrib_check(struct var_cache *vc_head)
curr = vc_head;
while (curr) {
if (curr->type == vt_attrib) {
- if (curr->attrib_is_generic)
- genericAttrib[ curr->attrib_binding ] = GL_TRUE;
- else
+ if (curr->attrib_is_generic) {
+ GLuint attr = (curr->attrib_binding == 0)
+ ? 0 : (curr->attrib_binding - VERT_ATTRIB_GENERIC0);
+ assert(attr < MAX_VERTEX_PROGRAM_ATTRIBS);
+ genericAttrib[attr] = GL_TRUE;
+ }
+ else {
+ assert(curr->attrib_binding < MAX_VERTEX_PROGRAM_ATTRIBS);
explicitAttrib[ curr->attrib_binding ] = GL_TRUE;
+ }
}
curr = curr->next;