From 79fa5fd8bbd534eec9fd9a09c7d9894dfa92e4d4 Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Tue, 24 Oct 2023 19:46:07 -0500 Subject: [PATCH] vkd3d-shader/ir: Validate the register index count. --- libs/vkd3d-shader/ir.c | 4 ++++ libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 2 files changed, 5 insertions(+) diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index fd594bad..1b52f866 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -1510,6 +1510,10 @@ static void vsir_validate_register(struct validation_context *ctx, if (reg->dimension >= VSIR_DIMENSION_COUNT) validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION, "Invalid register dimension %#x.", reg->dimension); + + if (reg->idx_count > ARRAY_SIZE(reg->idx)) + validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT, "Invalid register index count %u.", + reg->idx_count); } static void vsir_validate_dst_param(struct validation_context *ctx, diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index f8d10061..8e744593 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -203,6 +203,7 @@ enum vkd3d_shader_error VKD3D_SHADER_ERROR_VSIR_INVALID_PRECISION = 9007, VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE = 9008, VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION = 9009, + VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT = 9010, }; enum vkd3d_shader_opcode