From a7ce0490e42b056dc20e13af795ca3e4cb73ed52 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Wed, 15 Mar 2017 11:42:43 -0500 Subject: [PATCH] swr: validate backend state numAttributes General protection and prevents us from smashing the stack on the first clear state validation (a7b8d50bcb). Fixes crash using icc. Reviewed-by: Bruce Cherniak --- src/gallium/drivers/swr/swr_state.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp index db214af9936..2fafabd80ee 100644 --- a/src/gallium/drivers/swr/swr_state.cpp +++ b/src/gallium/drivers/swr/swr_state.cpp @@ -1651,6 +1651,8 @@ swr_update_derived(struct pipe_context *pipe, backendState.numAttributes = ((ctx->gs ? ctx->gs->info.base.num_outputs : ctx->vs->info.base.num_outputs) - 1) + (ctx->rasterizer->sprite_coord_enable ? 1 : 0); + backendState.numAttributes = std::min((size_t)backendState.numAttributes, + sizeof(backendState.numComponents)); for (unsigned i = 0; i < backendState.numAttributes; i++) backendState.numComponents[i] = 4; backendState.constantInterpolationMask = ctx->fs->constantMask | -- 2.30.2