Mesa (master): glsl/linker: report linker errors for invalid explicit locations on inputs

Iago Toral Quiroga itoral at kemper.freedesktop.org
Thu Oct 26 06:45:47 UTC 2017


Module: Mesa
Branch: master
Commit: b9446172249f05f577072f09ea17a391f3ee5d90
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9446172249f05f577072f09ea17a391f3ee5d90

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Tue Oct 24 10:21:13 2017 +0200

glsl/linker: report linker errors for invalid explicit locations on inputs

We were assuming that if an input has an invalid explicit location it would
fail to link because it would not find the corresponding output, however,
since we look for the matching output by indexing the explicit_locations
array with the input location, we still need to ensure that we don't index
out of bounds.

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/compiler/glsl/link_varyings.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index 69c92bf53b..cb9091d86b 100644
--- a/src/compiler/glsl/link_varyings.cpp
+++ b/src/compiler/glsl/link_varyings.cpp
@@ -556,6 +556,13 @@ cross_validate_outputs_to_inputs(struct gl_context *ctx,
             unsigned slot_limit = idx + num_elements;
 
             while (idx < slot_limit) {
+               if (idx >= MAX_VARYING) {
+                  linker_error(prog,
+                               "Invalid location %u in %s shader\n", idx,
+                               _mesa_shader_stage_to_string(consumer->Stage));
+                  return;
+               }
+
                output = explicit_locations[idx][input->data.location_frac];
 
                if (output == NULL ||




More information about the mesa-commit mailing list