]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Pre-check hidden-service-dir permissions/ownership
authormeejah <meejah@meejah.ca>
Thu, 11 Dec 2014 05:15:04 +0000 (22:15 -0700)
committermeejah <meejah@meejah.ca>
Fri, 12 Dec 2014 01:46:56 +0000 (18:46 -0700)
See ticket #13942 where Tor dies if you feed it a hidden service
directory with the wrong owner via SETCONF.

changes/bug13942 [new file with mode: 0644]
src/or/rendservice.c

diff --git a/changes/bug13942 b/changes/bug13942
new file mode 100644 (file)
index 0000000..c1247b6
--- /dev/null
@@ -0,0 +1,5 @@
+  o Minor bugfixes (hidden services):
+    - Pre-check directory permissions for new hidden-services to avoid
+      at least one case of "Bug: Acting on config options left us in a
+      broken state. Dying."
+
index 26e5659123d33d5964df0741d6f72a32e8c0443d..a354d9062c14e591870e4ac49c18e7760a2020e5 100644 (file)
@@ -531,6 +531,16 @@ rend_config_services(const or_options_t *options, int validate_only)
     }
   }
   if (service) {
+      cpd_check_t check_opts = CPD_CHECK_MODE_ONLY;
+      if (service->dir_group_readable) {
+          check_opts |= CPD_GROUP_READ;
+      }
+
+      if (check_private_dir(service->directory, check_opts, options->User) < 0) {
+          rend_service_free(service);
+          return -1;
+      }
+
     if (validate_only) {
       rend_service_free(service);
     } else {