From b9446172249f05f577072f09ea17a391f3ee5d90 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 24 Oct 2017 10:21:13 +0200 Subject: 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 Reviewed-by: Ilia Mirkin --- 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 69c92bf53b0..cb9091d86b4 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 || -- cgit v1.2.3