anv: pCreateInfo->pApplicationInfo parameter to vkCreateInstance may be NULL
authorPhilipp Zabel <philipp.zabel@gmail.com>
Tue, 16 Feb 2016 21:55:33 +0000 (22:55 +0100)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 16 Feb 2016 22:42:26 +0000 (14:42 -0800)
Fix a NULL pointer dereference in anv_CreateInstance in case
the pApplicationInfo field of the supplied VkInstanceCreateInfo
structure is NULL [1].

[1] https://www.khronos.org/registry/vulkan/specs/1.0/apispec.html#VkInstanceCreateInfo

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
src/vulkan/anv_device.c

index a6ce1764f6bfe1e1c52a6b293ebc19bcdd59d54e..68639068324bcf8a8e7b3506c43139301b22060e 100644 (file)
@@ -214,7 +214,9 @@ VkResult anv_CreateInstance(
 
    assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO);
 
-   uint32_t client_version = pCreateInfo->pApplicationInfo->apiVersion;
+   uint32_t client_version = pCreateInfo->pApplicationInfo ?
+                             pCreateInfo->pApplicationInfo->apiVersion :
+                             VK_MAKE_VERSION(1, 0, 0);
    if (VK_MAKE_VERSION(1, 0, 0) > client_version ||
        client_version > VK_MAKE_VERSION(1, 0, 3)) {
       return vk_errorf(VK_ERROR_INCOMPATIBLE_DRIVER,
@@ -249,7 +251,7 @@ VkResult anv_CreateInstance(
    else
       instance->alloc = default_alloc;
 
-   instance->apiVersion = pCreateInfo->pApplicationInfo->apiVersion;
+   instance->apiVersion = client_version;
    instance->physicalDeviceCount = -1;
 
    _mesa_locale_init();