Browse Source

Don't allow v0 HS auths to act as clients

A v0 HS authority stores v0 HS descriptors in the same descriptor
cache that its HS client functionality uses.  Thus, if the HS
authority operator clears its client HS descriptor cache, ALL v0
HS descriptors will be lost.  That would be bad.
Robert Ransom 14 years ago
parent
commit
df5c7fedbd
2 changed files with 7 additions and 0 deletions
  1. 3 0
      changes/forget-rend-descs-on-newnym
  2. 4 0
      src/or/config.c

+ 3 - 0
changes/forget-rend-descs-on-newnym

@@ -2,6 +2,9 @@
     - Forget all hidden service descriptors cached as a client when
     - Forget all hidden service descriptors cached as a client when
       processing a SIGNAL NEWNYM command.  Fixes bug 3000.  Bugfix on
       processing a SIGNAL NEWNYM command.  Fixes bug 3000.  Bugfix on
       0.0.6.
       0.0.6.
+  o Minor bugfixes:
+    - Don't allow v0 hidden service authorities to act as clients.
+      Required by fix for bug 3000.
   o Code simplifications and refactoring:
   o Code simplifications and refactoring:
     - Allow rend_client_send_introduction to fail without closing the
     - Allow rend_client_send_introduction to fail without closing the
       AP connection permanently.
       AP connection permanently.

+ 4 - 0
src/or/config.c

@@ -3078,6 +3078,10 @@ options_validate(or_options_t *old_options, or_options_t *options,
     REJECT("FetchDirInfoExtraEarly requires that you also set "
     REJECT("FetchDirInfoExtraEarly requires that you also set "
            "FetchDirInfoEarly");
            "FetchDirInfoEarly");
 
 
+  if (options->HSAuthoritativeDir && proxy_mode(options))
+    REJECT("Running as authoritative v0 HS directory, but also configured "
+           "as a client.");
+
   if (options->ConnLimit <= 0) {
   if (options->ConnLimit <= 0) {
     tor_asprintf(msg,
     tor_asprintf(msg,
         "ConnLimit must be greater than 0, but was set to %d",
         "ConnLimit must be greater than 0, but was set to %d",