[tor-commits] [tor/master] Use FILENAME to determine which options to check for relative paths

teor at torproject.org teor at torproject.org
Tue Nov 5 04:28:52 UTC 2019


commit 14831ea0ab7afbcdb1c0d91242f924d99ed4fcac
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Oct 30 15:32:12 2019 -0400

    Use FILENAME to determine which options to check for relative paths
    
    This is part of ticket 32344.
---
 changes/ticket32339_relative |  4 ++++
 src/app/config/config.c      | 31 +++++++++++++------------------
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/changes/ticket32339_relative b/changes/ticket32339_relative
new file mode 100644
index 000000000..83af9f031
--- /dev/null
+++ b/changes/ticket32339_relative
@@ -0,0 +1,4 @@
+  o Code simplification and refactoring:
+    - Instead of keeping a list of configuration options to check for
+      relative paths, check all the options whose type is "FILENAME".
+      Solves part of ticket 32339.
diff --git a/src/app/config/config.c b/src/app/config/config.c
index cda244096..275ac9e76 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -3324,25 +3324,20 @@ warn_about_relative_paths(or_options_t *options)
 {
   tor_assert(options);
   int n = 0;
+  const config_mgr_t *mgr = get_options_mgr();
 
-  n += warn_if_option_path_is_relative("CookieAuthFile",
-                                       options->CookieAuthFile);
-  n += warn_if_option_path_is_relative("ExtORPortCookieAuthFile",
-                                       options->ExtORPortCookieAuthFile);
-  n += warn_if_option_path_is_relative("DirPortFrontPage",
-                                       options->DirPortFrontPage);
-  n += warn_if_option_path_is_relative("V3BandwidthsFile",
-                                       options->V3BandwidthsFile);
-  n += warn_if_option_path_is_relative("ControlPortWriteToFile",
-                                       options->ControlPortWriteToFile);
-  n += warn_if_option_path_is_relative("GeoIPFile",options->GeoIPFile);
-  n += warn_if_option_path_is_relative("GeoIPv6File",options->GeoIPv6File);
-  n += warn_if_option_path_is_relative("Log",options->DebugLogFile);
-  n += warn_if_option_path_is_relative("AccelDir",options->AccelDir);
-  n += warn_if_option_path_is_relative("DataDirectory",options->DataDirectory);
-  n += warn_if_option_path_is_relative("PidFile",options->PidFile);
-  n += warn_if_option_path_is_relative("ClientOnionAuthDir",
-                                        options->ClientOnionAuthDir);
+  smartlist_t *vars = config_mgr_list_vars(mgr);
+  SMARTLIST_FOREACH_BEGIN(vars, const config_var_t *, cv) {
+    config_line_t *line;
+    if (cv->member.type != CONFIG_TYPE_FILENAME)
+      continue;
+    const char *name = cv->member.name;
+    line = config_get_assigned_option(mgr, options, name, 0);
+    if (line)
+      n += warn_if_option_path_is_relative(name, line->value);
+    config_free_lines(line);
+  } SMARTLIST_FOREACH_END(cv);
+  smartlist_free(vars);
 
   for (config_line_t *hs_line = options->RendConfigLines; hs_line;
        hs_line = hs_line->next) {





More information about the tor-commits mailing list