Fix possible null-pointer dereferences 72/163172/2 accepted/tizen/unified/20171213.040817 submit/tizen/20171211.144513
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 8 Dec 2017 09:53:02 +0000 (10:53 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 8 Dec 2017 09:53:02 +0000 (10:53 +0100)
Change-Id: Ifef7e0a02ee9c8a993dd060d51bb0a3420603f54
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
src/system-recovery/recovery-rui.c

index 37c4dd5..0deefad 100644 (file)
@@ -448,7 +448,13 @@ static int labels_list_parse(config_setting_t *root, int **out,
 
        for (i = 0; i < num; ++i) {
                elem = config_setting_get_elem(node, i);
+               if (!elem)
+                       goto err_nomem;
+
                value = config_setting_get_string(elem);
+               if (!value)
+                       goto err_nomem;
+
                list[i] = find_string(labels, value);
        }
 
@@ -456,6 +462,10 @@ static int labels_list_parse(config_setting_t *root, int **out,
 
        *out = list;
        return 0;
+
+err_nomem:
+       free(list);
+       return -ENOMEM;
 }
 
 static int screen_entry_parse(config_setting_t *root, void *data)
@@ -497,6 +507,9 @@ static int ruler_entry_parse(config_setting_t *root, void *data)
 
        for (i = 0; i < num; ++i) {
                node = config_setting_get_elem(root, i);
+               if (!node)
+                       return -ENOMEM;
+
                config_setting_lookup_int(node, "pos_x", &ruler[i].pos_x);
                config_setting_lookup_int(node, "pos_y", &ruler[i].pos_y);
                config_setting_lookup_int(node, "height", &ruler[i].height);