diff options
author | Karol Lewandowski <k.lewandowsk@samsung.com> | 2017-12-08 10:53:02 +0100 |
---|---|---|
committer | Paweł Szewczyk <p.szewczyk@samsung.com> | 2017-12-08 14:34:56 +0100 |
commit | a03d694b869fc50edd33332d648d7627f1ddfbac (patch) | |
tree | c5a9d03c82f082081081f1c9cf758f1392b4efb1 | |
parent | 12ab2bafcffee1052c0dc9cf900567e0916594ef (diff) | |
download | initrd-recovery-submit/tizen_4.0/20171211.145004.tar.gz initrd-recovery-submit/tizen_4.0/20171211.145004.tar.bz2 initrd-recovery-submit/tizen_4.0/20171211.145004.zip |
Fix possible null-pointer dereferencessubmit/tizen_4.0/20171211.145004accepted/tizen/4.0/unified/20171213.040814
Change-Id: Ifef7e0a02ee9c8a993dd060d51bb0a3420603f54
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
-rw-r--r-- | src/system-recovery/recovery-rui.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/system-recovery/recovery-rui.c b/src/system-recovery/recovery-rui.c index 37c4dd5..0deefad 100644 --- a/src/system-recovery/recovery-rui.c +++ b/src/system-recovery/recovery-rui.c @@ -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); |