Pārlūkot izejas kodu

Reject relative control socket paths and emit a warning.

Previously we would accept relative paths, but only if they contained a
slash somewhere (not at the end).

Otherwise we would silently not work.  Closes: #9258.  Bugfix on
0.2.3.16-alpha.
Peter Palfrader 11 gadi atpakaļ
vecāks
revīzija
783c52b6df
1 mainītis faili ar 4 papildinājumiem un 1 dzēšanām
  1. 4 1
      src/or/connection.c

+ 4 - 1
src/or/connection.c

@@ -877,8 +877,11 @@ check_location_for_unix_socket(const or_options_t *options, const char *path)
   int r = -1;
   char *p = tor_strdup(path);
   cpd_check_t flags = CPD_CHECK_MODE_ONLY;
-  if (get_parent_directory(p)<0)
+  if (get_parent_directory(p)<0 || p[0] != '/') {
+    log_warn(LD_GENERAL, "Bad unix socket address '%s'.  Tor does not support "
+             "relative patchs for unix sockets.", path);
     goto done;
+  }
 
   if (options->ControlSocketsGroupWritable)
     flags |= CPD_GROUP_OK;