aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-09-02 15:00:09 -0400
committerNick Mathewson <nickm@torproject.org>2013-09-13 12:36:40 -0400
commit7972af7073a621f3affa69d04bd05e0e432d7309 (patch)
tree481943c2867f718d2efd708a9c7ee7b253e9ede3
parenta6cad4db7063885aee2eceea7c481bc7583e1a4f (diff)
downloadtor-7972af7073a621f3affa69d04bd05e0e432d7309.tar
tor-7972af7073a621f3affa69d04bd05e0e432d7309.tar.gz
Whoops; make options_validate conform to validate_fn_t.
This just goes to show: never cast a function pointer. Found while testing new command line parse logic. Bugfix on 1293835440dd4debf6fbfc66e755d9b9384aa362, which implemented 6752: Not in any released tor.
-rw-r--r--src/or/config.c13
-rw-r--r--src/or/config.h6
2 files changed, 17 insertions, 2 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 7f1b77c4b..40bdf91af 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -550,6 +550,9 @@ static int parse_outbound_addresses(or_options_t *options, int validate_only,
char **msg);
static void config_maybe_load_geoip_files_(const or_options_t *options,
const or_options_t *old_options);
+static int options_validate_cb(void *old_options, void *options,
+ void *default_options,
+ int from_setconf, char **msg);
/** Magic value for or_options_t. */
#define OR_OPTIONS_MAGIC 9090909
@@ -561,7 +564,7 @@ STATIC config_format_t options_format = {
STRUCT_OFFSET(or_options_t, magic_),
option_abbrevs_,
option_vars_,
- (validate_fn_t)options_validate,
+ options_validate_cb,
NULL
};
@@ -2385,6 +2388,14 @@ compute_publishserverdescriptor(or_options_t *options)
* */
#define RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT (10)
+static int
+options_validate_cb(void *old_options, void *options, void *default_options,
+ int from_setconf, char **msg)
+{
+ return options_validate(old_options, options, default_options,
+ from_setconf, msg);
+}
+
/** Return 0 if every setting in <b>options</b> is reasonable, is a
* permissible transition from <b>old_options</b>, and none of the
* testing-only settings differ from <b>default_options</b> unless in
diff --git a/src/or/config.h b/src/or/config.h
index 0ed5a5b5f..8ee2a4572 100644
--- a/src/or/config.h
+++ b/src/or/config.h
@@ -32,7 +32,11 @@ int resolve_my_address(int warn_severity, const or_options_t *options,
const char **method_out, char **hostname_out);
int is_local_addr(const tor_addr_t *addr);
void options_init(or_options_t *options);
-char *options_dump(const or_options_t *options, int minimal);
+
+#define OPTIONS_DUMP_MINIMAL 1
+#define OPTIONS_DUMP_DEFAULTS 2
+#define OPTIONS_DUMP_ALL 3
+char *options_dump(const or_options_t *options, int how_to_dump);
int options_init_from_torrc(int argc, char **argv);
setopt_err_t options_init_from_string(const char *cf_defaults, const char *cf,
int command, const char *command_arg, char **msg);