summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2019-11-15 15:13:02 -0800
committerVito Caputo <vcaputo@pengaru.com>2019-11-15 15:13:02 -0800
commit75875b67bf8a5a4142a5faaaab7a434a7b68772c (patch)
tree602173457c8cf24c326d8c084037dcc586aa66de /src
parente4cb7995ab7ffb0326e35ef15e6314abeabecd16 (diff)
settings: check value in settings_apply_desc_generators()
Use setting_desc_check() before storing a value.
Diffstat (limited to 'src')
-rw-r--r--src/settings.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/settings.c b/src/settings.c
index c7419e1..e5560b0 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -191,20 +191,28 @@ int settings_apply_desc_generators(const settings_t *settings, const setting_des
for (i = 0; i < n_generators; i++) {
const setting_desc_generator_t *g = &generators[i];
const char *value;
+ setting_desc_t *desc;
+
+ desc = g->func(setup_context);
+ if (!desc)
+ return -ENOMEM;
value = settings_get_value(settings, g->key);
if (value) {
+ int r;
+
+ r = setting_desc_check(desc, value);
+ setting_desc_free(desc);
+ if (r < 0)
+ return r;
+
if (g->value_ptr)
*g->value_ptr = value;
continue;
}
- next = g->func(setup_context);
- if (!next)
- return -ENOMEM;
-
- *next_setting = next;
+ *next_setting = desc;
return 1;
}
© All Rights Reserved