diff options
author | Nick Mathewson <nickm@torproject.org> | 2020-02-26 14:16:55 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2020-02-26 14:18:40 -0500 |
commit | 2c792d1e0e6f92c33287ba8e87055142745a6532 (patch) | |
tree | 37043dd76020004a96ba70541bbd836a59283189 /src | |
parent | 7e7aff9b6a3bcf240fe30320e1bcd5ffdab92f13 (diff) | |
download | tor-2c792d1e0e6f92c33287ba8e87055142745a6532.tar.gz tor-2c792d1e0e6f92c33287ba8e87055142745a6532.zip |
In typed_var_kvassign, include config names in error messages.
This should improve the usability of our configuration error messages.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/confmgt/typedvar.c | 11 | ||||
-rw-r--r-- | src/test/test_options.c | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/confmgt/typedvar.c b/src/lib/confmgt/typedvar.c index 3a188db953..1955302cdc 100644 --- a/src/lib/confmgt/typedvar.c +++ b/src/lib/confmgt/typedvar.c @@ -24,6 +24,7 @@ #include "lib/log/log.h" #include "lib/log/util_bug.h" #include "lib/malloc/malloc.h" +#include "lib/string/printf.h" #include "lib/string/util_string.h" #include "lib/confmgt/var_type_def_st.h" @@ -75,7 +76,15 @@ typed_var_kvassign(void *target, const config_line_t *line, return def->fns->kv_parse(target, line, errmsg, def->params); } - return typed_var_assign(target, line->value, errmsg, def); + int rv = typed_var_assign(target, line->value, errmsg, def); + if (rv < 0 && *errmsg != NULL) { + /* typed_var_assign() didn't know the line's keyword, but we do. + * Let's add it to the error message. */ + char *oldmsg = *errmsg; + tor_asprintf(errmsg, "Could not parse %s: %s", line->key, oldmsg); + tor_free(oldmsg); + } + return rv; } /** diff --git a/src/test/test_options.c b/src/test/test_options.c index 129a8299e3..636d3c0e54 100644 --- a/src/test/test_options.c +++ b/src/test/test_options.c @@ -4269,7 +4269,8 @@ test_options_trial_assign(void *arg) v = options_trial_assign(lines, 0, &msg); tt_int_op(v, OP_EQ, SETOPT_ERR_PARSE); tt_str_op(msg, OP_EQ, - "Unrecognized value ambidextrous. Allowed values are 0 and 1."); + "Could not parse UseBridges: Unrecognized value ambidextrous. " + "Allowed values are 0 and 1."); tor_free(msg); config_free_lines(lines); |