From 7a2dc19e505deaaa18cb5fa5de78f9a3d8690c68 Mon Sep 17 00:00:00 2001 From: Lenny Komow Date: Wed, 9 May 2018 10:48:41 -0600 Subject: [PATCH] loader: Fix unhandled out of memory errors Change-Id: I3b672a9d54e1509b550407f1b4ffae58b48beb85 --- loader/loader.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/loader/loader.c b/loader/loader.c index 26ff520..3d3f9be 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -2837,6 +2837,10 @@ static VkResult loader_read_json_layer(const struct loader_instance *inst, struc cJSON *inst_ext_json = cJSON_GetObjectItem(pre_instance, "vkEnumerateInstanceExtensionProperties"); if (inst_ext_json) { char *inst_ext_name = cJSON_Print(inst_ext_json); + if (inst_ext_name == NULL) { + result = VK_ERROR_OUT_OF_HOST_MEMORY; + goto out; + } size_t len = strlen(inst_ext_name) >= MAX_STRING_SIZE ? MAX_STRING_SIZE - 3 : strlen(inst_ext_name) - 2; strncpy(props->pre_instance_functions.enumerate_instance_extension_properties, inst_ext_name + 1, len); props->pre_instance_functions.enumerate_instance_extension_properties[len] = '\0'; @@ -2846,6 +2850,10 @@ static VkResult loader_read_json_layer(const struct loader_instance *inst, struc cJSON *inst_layer_json = cJSON_GetObjectItem(pre_instance, "vkEnumerateInstanceLayerProperties"); if (inst_layer_json) { char *inst_layer_name = cJSON_Print(inst_layer_json); + if (inst_layer_name == NULL) { + result = VK_ERROR_OUT_OF_HOST_MEMORY; + goto out; + } size_t len = strlen(inst_layer_name) >= MAX_STRING_SIZE ? MAX_STRING_SIZE - 3 : strlen(inst_layer_name) - 2; strncpy(props->pre_instance_functions.enumerate_instance_layer_properties, inst_layer_name + 1, len); props->pre_instance_functions.enumerate_instance_layer_properties[len] = '\0'; @@ -2855,6 +2863,10 @@ static VkResult loader_read_json_layer(const struct loader_instance *inst, struc cJSON *inst_version_json = cJSON_GetObjectItem(pre_instance, "vkEnumerateInstanceVersion"); if (inst_version_json) { char *inst_version_name = cJSON_Print(inst_version_json); + if (inst_version_json) { + result = VK_ERROR_OUT_OF_HOST_MEMORY; + goto out; + } size_t len = strlen(inst_version_name) >= MAX_STRING_SIZE ? MAX_STRING_SIZE - 3 : strlen(inst_version_name) - 2; strncpy(props->pre_instance_functions.enumerate_instance_version, inst_version_name + 1, len); props->pre_instance_functions.enumerate_instance_version[len] = '\0'; -- 2.7.4