From 9396005428c40cf7ef9f1e6ae1d725f3155391f5 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 6 Jan 2015 16:28:11 -0500 Subject: [PATCH 1/5] Remove a check for an ancient bad dirserver fingerprint --- src/or/config.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 2fa077e146..d966ee0210 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -5329,14 +5329,6 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type, fingerprint, (int)strlen(fingerprint)); goto err; } - if (!strcmp(fingerprint, "E623F7625FBE0C87820F11EC5F6D5377ED816294")) { - /* a known bad fingerprint. refuse to use it. We can remove this - * clause once Tor 0.1.2.17 is obsolete. */ - log_warn(LD_CONFIG, "Dangerous dirserver line. To correct, erase your " - "torrc file (%s), or reinstall Tor and use the default torrc.", - get_torrc_fname(0)); - goto err; - } if (base16_decode(digest, DIGEST_LEN, fingerprint, HEX_DIGEST_LEN)<0) { log_warn(LD_CONFIG, "Unable to decode DirAuthority key digest."); goto err; From 14dedff0abd8b6b9c1c2766fe0ce5844c77d58ac Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 6 Jan 2015 16:29:52 -0500 Subject: [PATCH 2/5] Drop assumption that get_torrc_fname() can't return NULL. --- src/or/config.c | 18 +++++++++++------- src/or/control.c | 6 ++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index d966ee0210..543d7fa285 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -4147,14 +4147,14 @@ find_torrc_filename(config_line_t *cmd_arg, char *fn = NULL; if (!defaults_file) fn = expand_filename("~/.torrc"); - if (fn && file_status(fn) == FN_FILE) { + if (fn && (file_status(fn) == FN_FILE || dflt == NULL)) { fname = fn; } else { tor_free(fn); - fname = tor_strdup(dflt); + fname = dflt ? tor_strdup(dflt) : NULL; } #else - fname = tor_strdup(dflt); + fname = dflt ? tor_strdup(dflt) : NULL; #endif } } @@ -4179,14 +4179,15 @@ load_torrc_from_disk(config_line_t *cmd_arg, int defaults_file) fname = find_torrc_filename(cmd_arg, defaults_file, &using_default_torrc, &ignore_missing_torrc); - tor_assert(fname); - log_debug(LD_CONFIG, "Opening config file \"%s\"", fname); + + log_debug(LD_CONFIG, "Opening config file \"%s\"", fname?fname:""); tor_free(*fname_var); *fname_var = fname; /* Open config file */ - if (file_status(fname) != FN_FILE || + if (fname == NULL || + file_status(fname) != FN_FILE || !(cf = read_file_to_str(fname,0,NULL))) { if (using_default_torrc == 1 || ignore_missing_torrc) { if (!defaults_file) @@ -4475,7 +4476,7 @@ options_init_from_string(const char *cf_defaults, const char *cf, return err; } -/** Return the location for our configuration file. +/** Return the location for our configuration file. May return NULL. */ const char * get_torrc_fname(int defaults_fname) @@ -6434,6 +6435,9 @@ write_configuration_file(const char *fname, const or_options_t *options) char *old_val=NULL, *new_val=NULL, *new_conf=NULL; int rename_old = 0, r; + if (!fname) + return -1; + tor_assert(fname); switch (file_status(fname)) { diff --git a/src/or/control.c b/src/or/control.c index 3dbaa1bdf2..21d2e09856 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1439,9 +1439,11 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, if (!strcmp(question, "version")) { *answer = tor_strdup(get_version()); } else if (!strcmp(question, "config-file")) { - *answer = tor_strdup(get_torrc_fname(0)); + if (get_torrc_fname(0)) + *answer = tor_strdup(get_torrc_fname(0)); } else if (!strcmp(question, "config-defaults-file")) { - *answer = tor_strdup(get_torrc_fname(1)); + if (get_torrc_fname(1)) + *answer = tor_strdup(get_torrc_fname(1)); } else if (!strcmp(question, "config-text")) { *answer = options_dump(get_options(), OPTIONS_DUMP_MINIMAL); } else if (!strcmp(question, "info/names")) { From 6bb31cba1286e843ac7d32a24a9424587bc29623 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 6 Jan 2015 17:07:01 -0500 Subject: [PATCH 3/5] New option "--disable-system-torrc" to not read torrc from etc Implements 13037. --- changes/ticket13037 | 4 ++++ configure.ac | 7 +++++++ src/or/config.c | 5 ++++- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 changes/ticket13037 diff --git a/changes/ticket13037 b/changes/ticket13037 new file mode 100644 index 0000000000..24c4100454 --- /dev/null +++ b/changes/ticket13037 @@ -0,0 +1,4 @@ + o Minor features (build): + - New --disable-system-torrc compile-time option to prevent Tor from + looking for a system-wide torrc or torrc-defaults tile. Resolves + ticket 13037. diff --git a/configure.ac b/configure.ac index 2c92a6c409..920a12f4bd 100644 --- a/configure.ac +++ b/configure.ac @@ -45,6 +45,8 @@ AC_ARG_ENABLE(unittests, AS_HELP_STRING(--disable-unittests, [Don't build unit tests for Tor. Risky!])) AC_ARG_ENABLE(coverage, AS_HELP_STRING(--enable-coverage, [Enable coverage support in the unit-test build])) +AC_ARG_ENABLE(system-torrc, + AS_HELP_STRING(--disable-system-torrc, [Don't look for a system-wide torrc file])) AM_CONDITIONAL(UNITTESTS_ENABLED, test x$enable_unittests != xno) AM_CONDITIONAL(COVERAGE_ENABLED, test x$enable_coverage = xyes) @@ -56,6 +58,11 @@ if test "$enable_static_tor" = "yes"; then CFLAGS="$CFLAGS -static" fi +if test "$enable_system_torrc" = "no"; then + AC_DEFINE(DISABLE_SYSTEM_TORRC, 1, + [Defined if we're not going to look for a torrc in SYSCONF]) +fi + if test x$enable_buf_freelists = xyes; then AC_DEFINE(ENABLE_BUF_FREELISTS, 1, [Defined if we try to use freelists for buffer RAM chunks]) diff --git a/src/or/config.c b/src/or/config.c index 543d7fa285..5bd5ff4770 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -4013,7 +4013,10 @@ get_windows_conf_root(void) static const char * get_default_conf_file(int defaults_file) { -#ifdef _WIN32 +#ifdef DISABLE_SYSTEM_TORRC + (void) defaults_file; + return NULL; +#elif defined(_WIN32) if (defaults_file) { static char defaults_path[MAX_PATH+1]; tor_snprintf(defaults_path, MAX_PATH, "%s\\torrc-defaults", From 31838bd7833b231e818fed7c1774cee8bd6ca4d7 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 16 Jan 2015 11:46:20 -0500 Subject: [PATCH 4/5] changes suggested by weasel --- src/or/config.c | 2 -- src/or/control.c | 10 ++++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 5bd5ff4770..b9a567b741 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -6441,8 +6441,6 @@ write_configuration_file(const char *fname, const or_options_t *options) if (!fname) return -1; - tor_assert(fname); - switch (file_status(fname)) { case FN_FILE: old_val = read_file_to_str(fname, 0, NULL); diff --git a/src/or/control.c b/src/or/control.c index 21d2e09856..a569c962c4 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -1439,11 +1439,13 @@ getinfo_helper_misc(control_connection_t *conn, const char *question, if (!strcmp(question, "version")) { *answer = tor_strdup(get_version()); } else if (!strcmp(question, "config-file")) { - if (get_torrc_fname(0)) - *answer = tor_strdup(get_torrc_fname(0)); + const char *a = get_torrc_fname(0); + if (a) + *answer = tor_strdup(a); } else if (!strcmp(question, "config-defaults-file")) { - if (get_torrc_fname(1)) - *answer = tor_strdup(get_torrc_fname(1)); + const char *a = get_torrc_fname(1); + if (a) + *answer = tor_strdup(a); } else if (!strcmp(question, "config-text")) { *answer = options_dump(get_options(), OPTIONS_DUMP_MINIMAL); } else if (!strcmp(question, "info/names")) { From ffa4ed8d3dea0ffdde2369b1feb24bc3a9b6c101 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 16 Jan 2015 11:47:49 -0500 Subject: [PATCH 5/5] changes file for 9396005428c40cf7ef9f1e6ae1d725f3155391f5 --- changes/remove-bad-fp | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changes/remove-bad-fp diff --git a/changes/remove-bad-fp b/changes/remove-bad-fp new file mode 100644 index 0000000000..a07e3ba00c --- /dev/null +++ b/changes/remove-bad-fp @@ -0,0 +1,4 @@ + + o Removed features: + - Remove a test for a long-defunct broken directory server. +