From: Mark Young Date: Thu, 9 Mar 2017 21:17:40 +0000 (-0700) Subject: loader: Set pointer to NULL X-Git-Tag: sdk-1.0.46.0~157 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ee200198a7f12979e0cb51019775423330df44b;p=platform%2Fupstream%2FVulkan-LoaderAndValidationLayers.git loader: Set pointer to NULL Cleanup enabled extension array pointer passed down to driver. If the loader overrode the create info struct, the pointer could be garbage if the enabled extension count was 0. Now, make sure it is NULL. Change-Id: I558d768e786892e7afc44f58b4173a2b8db3deee --- diff --git a/loader/loader.c b/loader/loader.c index 639e764..9f1a806 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -4516,17 +4516,18 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice(VkPhysicalDevice physical memcpy(&localCreateInfo, pCreateInfo, sizeof(localCreateInfo)); // NOTE: Need to filter the extensions to only those supported by the ICD. - // No ICD will advertise support for layers. An ICD library could - // support a layer, but it would be independent of the actual ICD, - // just in the same library. + // No ICD will advertise support for layers. An ICD library could support a layer, + // but it would be independent of the actual ICD, just in the same library. char **filtered_extension_names = NULL; - filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionCount * sizeof(char *)); - if (NULL == filtered_extension_names) { - loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, - "terminator_CreateDevice: Failed to create extension name " - "storage for %d extensions %d", - pCreateInfo->enabledExtensionCount); - return VK_ERROR_OUT_OF_HOST_MEMORY; + if (0 < pCreateInfo->enabledExtensionCount) { + filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionCount * sizeof(char *)); + if (NULL == filtered_extension_names) { + loader_log(icd_term->this_instance, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0, + "terminator_CreateDevice: Failed to create extension name " + "storage for %d extensions %d", + pCreateInfo->enabledExtensionCount); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } } localCreateInfo.enabledLayerCount = 0;