mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader/hlsl: Avoid member access on NULL resource load (ubsan).
In some scenarios this resource load is NULL, and we are still doing
&load->node on it.
vkd3d/libs/vkd3d-shader/hlsl.c:2195:12: runtime error: member access
within null pointer of type 'struct hlsl_ir_resource_load'
This happens in tests/hlsl/sampler-state.shader_test, in the following
test:
[pixel shader fail]
Texture2D tex;
float4 main(): sv_target
{
return tex.Sample(sampler_state {}, float2(0, 0));
}
This commit is contained in:
committed by
Henri Verbeet
parent
654c96fc94
commit
06a503975f
Notes:
Henri Verbeet
2025-11-18 18:02:19 +01:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1832
@@ -2199,9 +2199,12 @@ static struct hlsl_ir_resource_load *hlsl_new_resource_load(struct hlsl_ctx *ctx
|
||||
struct hlsl_ir_node *hlsl_block_add_resource_load(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
const struct hlsl_resource_load_params *params, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_resource_load *load = hlsl_new_resource_load(ctx, params, loc);
|
||||
struct hlsl_ir_resource_load *load;
|
||||
|
||||
if (load && load->sampling_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
if (!(load = hlsl_new_resource_load(ctx, params, loc)))
|
||||
return NULL;
|
||||
|
||||
if (load->sampling_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
hlsl_src_from_node(&load->byte_offset, hlsl_block_add_uint_constant(ctx, block, 0, loc));
|
||||
|
||||
return append_new_instr(ctx, block, &load->node);
|
||||
|
||||
Reference in New Issue
Block a user