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,
|
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)
|
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));
|
hlsl_src_from_node(&load->byte_offset, hlsl_block_add_uint_constant(ctx, block, 0, loc));
|
||||||
|
|
||||||
return append_new_instr(ctx, block, &load->node);
|
return append_new_instr(ctx, block, &load->node);
|
||||||
|
|||||||
Reference in New Issue
Block a user