summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-08-17 12:29:29 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-08-17 12:29:29 +0200
commitc1dbc3dd04ea252c30ff73e94fb226bd2e6c12a4 (patch)
tree1d572568b635a7593415e123c6703a01c0693bc6 /drivers/vulkan
parent08690d6af5f66ae165881b802a5729b54e5f34b2 (diff)
parent77b02359c9bb5a9ff7c056b0a186e1c77b32ab32 (diff)
downloadredot-engine-c1dbc3dd04ea252c30ff73e94fb226bd2e6c12a4.tar.gz
Merge pull request #80288 from pkpro/memcpy_into_nullptr
Vulkan: Fix sanitizers error with empty shader name
Diffstat (limited to 'drivers/vulkan')
-rw-r--r--drivers/vulkan/rendering_device_vulkan.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp
index a55abe6a82..59b1d176c6 100644
--- a/drivers/vulkan/rendering_device_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_vulkan.cpp
@@ -4812,11 +4812,14 @@ Vector<uint8_t> RenderingDeviceVulkan::shader_compile_binary_from_spirv(const Ve
offset += sizeof(uint32_t);
memcpy(binptr + offset, &binary_data, sizeof(RenderingDeviceVulkanShaderBinaryData));
offset += sizeof(RenderingDeviceVulkanShaderBinaryData);
- memcpy(binptr + offset, shader_name_utf.ptr(), binary_data.shader_name_len);
- offset += binary_data.shader_name_len;
- if ((binary_data.shader_name_len % 4) != 0) { // Alignment rules are really strange.
- offset += 4 - (binary_data.shader_name_len % 4);
+ if (binary_data.shader_name_len > 0) {
+ memcpy(binptr + offset, shader_name_utf.ptr(), binary_data.shader_name_len);
+ offset += binary_data.shader_name_len;
+
+ if ((binary_data.shader_name_len % 4) != 0) { // Alignment rules are really strange.
+ offset += 4 - (binary_data.shader_name_len % 4);
+ }
}
for (int i = 0; i < uniform_info.size(); i++) {