summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2019-06-07 23:00:40 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-06-20 10:42:49 -0700
commitfbef0f9ea11a4aed32c27312f398944f3bf72149 (patch)
tree46276fe042d4645f4e91860bdc931010c980ab29
parent1fe8661d2149eee694ac23189c681b6c43ce06c5 (diff)
downloadmesa-fbef0f9ea11a4aed32c27312f398944f3bf72149.tar.gz
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: 6d830940f78 glsl/shader_cache: Allow shader cache usage with transform feedback Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> (cherry picked from commit 3c10a2726bcf686f03e31e79e40786e3894ff063)
-rw-r--r--src/compiler/glsl/shader_cache.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index 581098b88f0..97049043345 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -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