aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLenny Komow <lenny@lunarg.com>2018-05-09 10:48:41 -0600
committerLenny Komow <lenny@lunarg.com>2018-05-10 11:10:43 -0600
commit7a2dc19e505deaaa18cb5fa5de78f9a3d8690c68 (patch)
tree5412fb97f93bad8ee12d84280e22093ee5adc0b7
parent03f8772aa6da74d38dde1ef3737491e2e214b619 (diff)
downloadusermoji-7a2dc19e505deaaa18cb5fa5de78f9a3d8690c68.tar.xz
loader: Fix unhandled out of memory errors
Change-Id: I3b672a9d54e1509b550407f1b4ffae58b48beb85
-rw-r--r--loader/loader.c12
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';