Giovanni Mascellani : vkd3d-shader/ir: Validate the register index count.
Module: vkd3d Branch: master Commit: 79fa5fd8bbd534eec9fd9a09c7d9894dfa92e4d4 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/79fa5fd8bbd534eec9fd9a09c7d989... Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Tue Oct 24 19:46:07 2023 -0500 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
participants (1)
-
Alexandre Julliard