summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGert Wollny <gert.wollny@collabora.com>2023-09-05 11:42:57 +0200
committerMarge Bot <emma+marge@anholt.net>2023-09-06 06:38:34 +0000
commitfa90b4e5cdc9fa9a7a3ae74f3e0bd35907c365d4 (patch)
tree445414fe8b64dac80990d0f374ade8be180ffe34
parent14c2141ed138ff5a4afd9e8535d30509155ddeea (diff)
shader: Check number of shader inputs to avoid OOB write
Patch follows suggestion by Kevin King. Closes: https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/455 Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1216>
-rw-r--r--src/vrend_shader.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/vrend_shader.c b/src/vrend_shader.c
index 8960aa7..53a4785 100644
--- a/src/vrend_shader.c
+++ b/src/vrend_shader.c
@@ -1155,6 +1155,11 @@ iter_decls(struct tgsi_iterate_context *iter,
}
if (ctx->prog_type == TGSI_PROCESSOR_FRAGMENT) {
+ if (ctx->num_inputs >= ARRAY_SIZE(ctx->inputs)) {
+ virgl_error( "Number of inputs exceeded, max is %lu\n", ARRAY_SIZE(ctx->inputs));
+ return false;
+ }
+
for (uint32_t j = 0; j < ctx->num_inputs; j++) {
if (ctx->inputs[j].name == decl->Semantic.Name &&
ctx->inputs[j].sid == decl->Semantic.Index &&