commit a114df9a040dbdedfc89f7d2ff777476e204a2cf Author: Nick Mathewson nickm@torproject.org Date: Wed Jun 19 16:06:15 2019 -0400
Add a function to make sure all values in a config object are ok --- src/app/config/confparse.c | 18 ++++++++++++++++++ src/app/config/confparse.h | 2 ++ 2 files changed, 20 insertions(+)
diff --git a/src/app/config/confparse.c b/src/app/config/confparse.c index b9b5fddb9..2890d8c81 100644 --- a/src/app/config/confparse.c +++ b/src/app/config/confparse.c @@ -673,3 +673,21 @@ config_dump(const config_format_t *fmt, const void *default_options, } return result; } + +/** + * Return true if every member of <b>options</b> is in-range and well-formed. + * Return false otherwise. Log errors at level <b>severity</b>. + */ +bool +config_check_ok(const config_format_t *fmt, const void *options, int severity) +{ + bool all_ok = true; + for (int i=0; fmt->vars[i].member.name; ++i) { + if (!struct_var_ok(options, &fmt->vars[i].member)) { + log_fn(severity, LD_BUG, "Invalid value for %s", + fmt->vars[i].member.name); + all_ok = false; + } + } + return all_ok; +} diff --git a/src/app/config/confparse.h b/src/app/config/confparse.h index 4ef4e708f..b91ea1c13 100644 --- a/src/app/config/confparse.h +++ b/src/app/config/confparse.h @@ -138,6 +138,8 @@ void *config_dup(const config_format_t *fmt, const void *old); char *config_dump(const config_format_t *fmt, const void *default_options, const void *options, int minimal, int comment_defaults); +bool config_check_ok(const config_format_t *fmt, const void *options, + int severity); int config_assign(const config_format_t *fmt, void *options, struct config_line_t *list, unsigned flags, char **msg);
tor-commits@lists.torproject.org