diff options
| author | Courtney Goeltzenleuchter <courtneygo@google.com> | 2016-02-10 14:00:52 -0700 |
|---|---|---|
| committer | Ian Elliott <ianelliott@google.com> | 2016-02-11 09:41:54 -0700 |
| commit | 7490b57472901e0ade746cea34c961b2481bbe23 (patch) | |
| tree | ee8ac02f97585c53a317cf3e912bf5ee0f8fb38c /layers/param_checker.cpp | |
| parent | 658a6c2b5cfaf951825326df2b52b8e805f502a2 (diff) | |
| download | usermoji-7490b57472901e0ade746cea34c961b2481bbe23.tar.xz | |
bug 134: param_checker using layer private data before it's been created
https://gitlab.khronos.org/vulkan/LoaderAndTools/issues/134
Diffstat (limited to 'layers/param_checker.cpp')
| -rw-r--r-- | layers/param_checker.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index f3aaece4..3cbfd23e 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -1796,13 +1796,6 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( { VkResult result = VK_ERROR_VALIDATION_FAILED_EXT; VkBool32 skipCall = VK_FALSE; - layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); - - skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pApplicationName", - pCreateInfo->pApplicationInfo->pApplicationName); - - skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pEngineName", - pCreateInfo->pApplicationInfo->pEngineName); if (skipCall == VK_FALSE) { VkLayerInstanceCreateInfo *chain_info = get_chain_info(pCreateInfo, VK_LAYER_LINK_INFO); @@ -1832,6 +1825,17 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( InitParamChecker(my_data, pAllocator); } + // Ordinarily we'd check these before calling down the chain, but none of the layer + // support is in place until now, if we survive we can report the issue now. + layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); + if (pCreateInfo->pApplicationInfo) { + skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pApplicationName", + pCreateInfo->pApplicationInfo->pApplicationName); + + skipCall |= validate_string(my_device_data, "vkCreateInstance()", "VkInstanceCreateInfo->VkApplicationInfo->pEngineName", + pCreateInfo->pApplicationInfo->pEngineName); + } + return result; } |
