vulkan/runtime: allow null/empty debug names

VkDebugUtilsObjectNameInfoEXT::pObjectName can be NULL [1] :

   "Applications may change the name associated with an object simply
    by calling vkSetDebugUtilsObjectNameEXT again with a new string. If
    pObjectName is either NULL or an empty string, then any previously
    set name is removed."

The current code will segfault.

[1] : https://registry.khronos.org/vulkan/specs/1.3-extensions/html/chap50.html#VkDebugUtilsObjectNameInfoEXT

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 3b361b234a ("vulkan: Implement VK_EXT_debug_utils")
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30516>
(cherry picked from commit ae9a249dfe)
This commit is contained in:
Lionel Landwerlin 2024-08-05 15:44:28 +03:00 committed by Eric Engestrom
parent b00b73c046
commit f80caae143
2 changed files with 7 additions and 5 deletions

View file

@ -114,7 +114,7 @@
"description": "vulkan/runtime: allow null/empty debug names",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "3b361b234ac49f41a94a9bcf94fb68d5407b4b83",
"notes": null

View file

@ -302,10 +302,12 @@ vk_common_SetDebugUtilsObjectNameEXT(
vk_free(alloc, object->object_name);
object->object_name = NULL;
}
object->object_name = vk_strdup(alloc, pNameInfo->pObjectName,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!object->object_name)
return VK_ERROR_OUT_OF_HOST_MEMORY;
if (pNameInfo->pObjectName != NULL) {
object->object_name = vk_strdup(alloc, pNameInfo->pObjectName,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
if (!object->object_name)
return VK_ERROR_OUT_OF_HOST_MEMORY;
}
return VK_SUCCESS;
}