diff options
author | Brian Paul <brianp@vmware.com> | 2009-04-28 10:57:45 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-04-28 10:58:13 -0600 |
commit | 656cd707db3699079d3a1b886d82e6f04afb1065 (patch) | |
tree | 2047ae745d68cadcb77f710a90dbf835d6b19a81 /src | |
parent | ce7f78694d9a611d543b97f239194af311f7a9a1 (diff) |
mesa: Fix buffer overflow when parsing generic vertex attributes.
(cherry picked from master, commit fa92756400ccfbb3f0201df634feb45ab4f98352)
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/shader/arbprogparse.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c index 810a7b8f3e..0984d88172 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; |