From 7638684146e50f6d382925634847643a04213528 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 20 Jul 2016 17:18:14 +0200 Subject: [PATCH] [Coverity] Fix some NULL dereferences that should be checked --- renderdoc/driver/vulkan/vk_debug.cpp | 2 +- renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp | 12 ++++++++++++ renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index 6546cea77..8e0dd364f 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -6203,7 +6203,7 @@ void VulkanDebugManager::InitPostVSBuffers(uint32_t eventID) const FetchDrawcall *drawcall = m_pDriver->GetDrawcall(eventID); - if(drawcall->numIndices == 0 || drawcall->numInstances == 0) + if(drawcall == NULL || drawcall->numIndices == 0 || drawcall->numInstances == 0) return; uint32_t descSet = (uint32_t)creationInfo.m_PipelineLayout[pipeInfo.layout].descSetLayouts.size(); diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 18b3a4791..b52b52abc 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -262,6 +262,12 @@ VkResult WrappedVulkan::vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo } RDCASSERT(layerCreateInfo); + if(layerCreateInfo == NULL) + { + RDCERR("Couldn't find loader instance create info, which is required. Incompatible loader?"); + return VK_ERROR_INITIALIZATION_FAILED; + } + PFN_vkGetInstanceProcAddr gpa = layerCreateInfo->u.pLayerInfo->pfnNextGetInstanceProcAddr; // move chain on for next layer layerCreateInfo->u.pLayerInfo = layerCreateInfo->u.pLayerInfo->pNext; @@ -1119,6 +1125,12 @@ VkResult WrappedVulkan::vkCreateDevice(VkPhysicalDevice physicalDevice, } RDCASSERT(layerCreateInfo); + if(layerCreateInfo == NULL) + { + RDCERR("Couldn't find loader device create info, which is required. Incompatible loader?"); + return VK_ERROR_INITIALIZATION_FAILED; + } + PFN_vkGetDeviceProcAddr gdpa = layerCreateInfo->u.pLayerInfo->pfnNextGetDeviceProcAddr; PFN_vkGetInstanceProcAddr gipa = layerCreateInfo->u.pLayerInfo->pfnNextGetInstanceProcAddr; // move chain on for next layer diff --git a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp index 11272afb3..9cbd49d36 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp @@ -190,7 +190,7 @@ VkResult WrappedVulkan::vkGetPipelineCacheData(VkDevice device, VkPipelineCache if(pDataSize && !pData) *pDataSize = totalSize; - if(pData) + if(pDataSize && pData) { if(*pDataSize < totalSize) {