Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6616c482 authored by Nikita Gupta's avatar Nikita Gupta
Browse files

Fix nullpointer dereference at VKJson

Set array values of VkPhysicalDeviceVulkan14Properties.

Contributers- angrak.oh@samsung.com

Test: adb shell cmd gpu vkjson
Flag: NONE infeasible
Bug: b/403413507
Change-Id: I8df894343ec759f00f56d55f21a6ed533a15a460
parent fe45ac6d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@
#include <type_traits>
#include <utility>

/*
 * This file is autogenerated by vkjson_generator.py. Do not edit directly.
 */
namespace {

/*
+21 −4
Original line number Diff line number Diff line
@@ -33,6 +33,9 @@
#undef max
#endif

/*
 * This file is autogenerated by vkjson_generator.py. Do not edit directly.
 */
struct VkJsonLayer {
  VkLayerProperties properties;
  std::vector<VkExtensionProperties> extensions;
@@ -263,23 +266,41 @@ struct VkJsonKHRDriverProperties {
};

struct VkJsonCore11 {
  VkJsonCore11() {
    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan11Properties));
    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan11Features));
  }
  VkPhysicalDeviceVulkan11Properties properties;
  VkPhysicalDeviceVulkan11Features features;
};

struct VkJsonCore12 {
  VkJsonCore12() {
    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan12Properties));
    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan12Features));
  }
  VkPhysicalDeviceVulkan12Properties properties;
  VkPhysicalDeviceVulkan12Features features;
};

struct VkJsonCore13 {
  VkJsonCore13() {
    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan13Properties));
    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan13Features));
  }
  VkPhysicalDeviceVulkan13Properties properties;
  VkPhysicalDeviceVulkan13Features features;
};

struct VkJsonCore14 {
  VkJsonCore14() {
    memset(&properties, 0, sizeof(VkPhysicalDeviceVulkan14Properties));
    memset(&features, 0, sizeof(VkPhysicalDeviceVulkan14Features));
  }
  VkPhysicalDeviceVulkan14Properties properties;
  VkPhysicalDeviceVulkan14Features features;
  std::vector<VkImageLayout> copy_src_layouts;
  std::vector<VkImageLayout> copy_dst_layouts;
};

struct VkJsonDevice {
@@ -306,10 +327,6 @@ struct VkJsonDevice {
           sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
    memset(&shader_draw_parameter_features, 0,
           sizeof(VkPhysicalDeviceShaderDrawParameterFeatures));
    memset(&core11, 0, sizeof(VkJsonCore11));
    memset(&core12, 0, sizeof(VkJsonCore12));
    memset(&core13, 0, sizeof(VkJsonCore13));
    memset(&core14, 0, sizeof(VkJsonCore14));
  }
  VkJsonKHRVariablePointers khr_variable_pointers;
  VkJsonKHRShaderFloat16Int8 khr_shader_float16_int8;
+20 −0
Original line number Diff line number Diff line
@@ -27,6 +27,9 @@
#include <algorithm>
#include <utility>

/*
 * This file is autogenerated by vkjson_generator.py. Do not edit directly.
 */
namespace {

bool EnumerateExtensions(const char* layer_name,
@@ -512,6 +515,23 @@ VkJsonDevice VkJsonGetDevice(VkPhysicalDevice physical_device) {

    vkGetPhysicalDeviceProperties2(physical_device, &properties);

    if (device.core14.properties.copySrcLayoutCount > 0 ||
        device.core14.properties.copyDstLayoutCount > 0) {
      if (device.core14.properties.copySrcLayoutCount > 0) {
        device.core14.copy_src_layouts.resize(
            device.core14.properties.copySrcLayoutCount);
        device.core14.properties.pCopySrcLayouts =
            device.core14.copy_src_layouts.data();
      }
      if (device.core14.properties.copyDstLayoutCount > 0) {
        device.core14.copy_dst_layouts.resize(
            device.core14.properties.copyDstLayoutCount);
        device.core14.properties.pCopyDstLayouts =
            device.core14.copy_dst_layouts.data();
      }
      vkGetPhysicalDeviceProperties2(physical_device, &properties);
    }

    device.core14.features.sType =
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
    device.core14.features.pNext = features.pNext;