mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 22:53:44 +01:00
fix bug reported by gozu: if we get a linelist or linelist_s
config option from the torrc and it has no value, warn and skip rather than silently resetting it to its default. svn:r6125
This commit is contained in:
parent
c8e2a051ac
commit
0bd46086c3
@ -992,7 +992,7 @@ config_find_option(config_format_t *fmt, const char *key)
|
|||||||
return &fmt->vars[i];
|
return &fmt->vars[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Okay, unrecognized options */
|
/* Okay, unrecognized option */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1143,9 +1143,19 @@ config_assign_line(config_format_t *fmt, or_options_t *options,
|
|||||||
c->key = tor_strdup(var->name);
|
c->key = tor_strdup(var->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strlen(c->value)) { /* reset or clear it, then return */
|
if (!strlen(c->value)) {
|
||||||
if (!clear_first) /* not already cleared */
|
/* reset or clear it, then return */
|
||||||
|
if (!clear_first) {
|
||||||
|
if (var->type == CONFIG_TYPE_LINELIST ||
|
||||||
|
var->type == CONFIG_TYPE_LINELIST_S) {
|
||||||
|
/* We got an empty linelist from the torrc or commandline.
|
||||||
|
As a special case, call this an error. Warn and ignore. */
|
||||||
|
log_warn(LD_CONFIG,
|
||||||
|
"Linelist option '%s' has no value. Skipping.", c->key);
|
||||||
|
} else { /* not already cleared */
|
||||||
option_reset(fmt, options, var, use_defaults);
|
option_reset(fmt, options, var, use_defaults);
|
||||||
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1330,6 +1340,9 @@ get_assigned_option(config_format_t *fmt, or_options_t *options,
|
|||||||
* 0 1 "set to null first"
|
* 0 1 "set to null first"
|
||||||
* 1 1 "set to defaults first"
|
* 1 1 "set to defaults first"
|
||||||
* Return 0 on success, -1 on bad key, -2 on bad value.
|
* Return 0 on success, -1 on bad key, -2 on bad value.
|
||||||
|
*
|
||||||
|
* As an additional special case, if a LINELIST config option has
|
||||||
|
* no value and clear_first is 0, then warn and ignore it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1700,7 +1713,7 @@ options_dup(config_format_t *fmt, or_options_t *old)
|
|||||||
line = get_assigned_option(fmt, old, fmt->vars[i].name);
|
line = get_assigned_option(fmt, old, fmt->vars[i].name);
|
||||||
if (line) {
|
if (line) {
|
||||||
if (config_assign(fmt, newopts, line, 0, 0) < 0) {
|
if (config_assign(fmt, newopts, line, 0, 0) < 0) {
|
||||||
log_warn(LD_BUG, "Bug: config_get_assigned_option() generated "
|
log_err(LD_BUG, "Bug: config_get_assigned_option() generated "
|
||||||
"something we couldn't config_assign().");
|
"something we couldn't config_assign().");
|
||||||
tor_assert(0);
|
tor_assert(0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user