diff options
| author | Lenny Komow <lenny@lunarg.com> | 2018-05-09 10:48:41 -0600 |
|---|---|---|
| committer | Lenny Komow <lenny@lunarg.com> | 2018-05-10 11:10:43 -0600 |
| commit | 7a2dc19e505deaaa18cb5fa5de78f9a3d8690c68 (patch) | |
| tree | 5412fb97f93bad8ee12d84280e22093ee5adc0b7 | |
| parent | 03f8772aa6da74d38dde1ef3737491e2e214b619 (diff) | |
| download | usermoji-7a2dc19e505deaaa18cb5fa5de78f9a3d8690c68.tar.xz | |
loader: Fix unhandled out of memory errors
Change-Id: I3b672a9d54e1509b550407f1b4ffae58b48beb85
| -rw-r--r-- | loader/loader.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/loader/loader.c b/loader/loader.c index 26ff5200..3d3f9be3 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'; |
