mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d-shader/fx: Output error messages for invalid sizes.
This commit is contained in:
Notes:
Henri Verbeet
2025-03-06 17:32:54 +01:00
Approved-by: Nikolay Sivov (@nsivov) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1402
@ -4376,7 +4376,8 @@ static int fx_4_parse(struct fx_parser *parser)
|
|||||||
|
|
||||||
if (parser->end - parser->ptr < header.unstructured_size)
|
if (parser->end - parser->ptr < header.unstructured_size)
|
||||||
{
|
{
|
||||||
parser->failed = true;
|
fx_parser_error(parser, VKD3D_SHADER_ERROR_FX_INVALID_SIZE,
|
||||||
|
"Invalid unstructured data size %u.", header.unstructured_size);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4432,7 +4433,8 @@ static int fx_5_parse(struct fx_parser *parser)
|
|||||||
|
|
||||||
if (parser->end - parser->ptr < header.unstructured_size)
|
if (parser->end - parser->ptr < header.unstructured_size)
|
||||||
{
|
{
|
||||||
parser->failed = true;
|
fx_parser_error(parser, VKD3D_SHADER_ERROR_FX_INVALID_SIZE,
|
||||||
|
"Invalid unstructured data size %u.", header.unstructured_size);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4465,7 +4467,11 @@ int fx_parse(const struct vkd3d_shader_compile_info *compile_info,
|
|||||||
vkd3d_string_buffer_init(&parser.buffer);
|
vkd3d_string_buffer_init(&parser.buffer);
|
||||||
|
|
||||||
if (parser.end - parser.start < sizeof(version))
|
if (parser.end - parser.start < sizeof(version))
|
||||||
|
{
|
||||||
|
fx_parser_error(&parser, VKD3D_SHADER_ERROR_FX_INVALID_SIZE,
|
||||||
|
"Source size %zu is smaller than the FX header size.", compile_info->source.size);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
version = *(uint32_t *)parser.ptr;
|
version = *(uint32_t *)parser.ptr;
|
||||||
|
|
||||||
switch (version)
|
switch (version)
|
||||||
|
@ -263,6 +263,7 @@ enum vkd3d_shader_error
|
|||||||
VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED = 11000,
|
VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED = 11000,
|
||||||
VKD3D_SHADER_ERROR_FX_INVALID_VERSION = 11001,
|
VKD3D_SHADER_ERROR_FX_INVALID_VERSION = 11001,
|
||||||
VKD3D_SHADER_ERROR_FX_INVALID_DATA = 11002,
|
VKD3D_SHADER_ERROR_FX_INVALID_DATA = 11002,
|
||||||
|
VKD3D_SHADER_ERROR_FX_INVALID_SIZE = 11003,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum vkd3d_shader_opcode
|
enum vkd3d_shader_opcode
|
||||||
|
Reference in New Issue
Block a user