mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
glsl: Fix out of bounds read in shader_cache_read_program_metadata
The VaryingNames array has NumVaryings entries. But BufferStride is a small array of MAX_FEEDBACK_BUFFERS (4) entries. Programs with more than 4 varyings would read out of bounds. Also, BufferStride is set based on the shader itself, which means that it's inherently already included in the hash, and doesn't need to be included again. At the point when shader_cache_read_program_metadata is called, the linker hasn't even set those fields yet. So, just drop it entirely. Fixes valgrind errors in KHR-GL45.transform_feedback.linking_errors_test. Fixes:6d830940f7glsl/shader_cache: Allow shader cache usage with transform feedback Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> (cherry picked from commit3c10a2726b)
This commit is contained in:
parent
db4850c631
commit
47f1f4f9e5
1 changed files with 2 additions and 3 deletions
|
|
@ -165,9 +165,8 @@ shader_cache_read_program_metadata(struct gl_context *ctx,
|
|||
prog->FragDataIndexBindings->iterate(create_binding_str, &buf);
|
||||
ralloc_asprintf_append(&buf, "tf: %d ", prog->TransformFeedback.BufferMode);
|
||||
for (unsigned int i = 0; i < prog->TransformFeedback.NumVarying; i++) {
|
||||
ralloc_asprintf_append(&buf, "%s:%d ",
|
||||
prog->TransformFeedback.VaryingNames[i],
|
||||
prog->TransformFeedback.BufferStride[i]);
|
||||
ralloc_asprintf_append(&buf, "%s ",
|
||||
prog->TransformFeedback.VaryingNames[i]);
|
||||
}
|
||||
|
||||
/* SSO has an effect on the linked program so include this when generating
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue