Commit 2da4d64a authored by Nick Mathewson's avatar Nick Mathewson 🐚
Browse files

Avoid a crash if our "current" and "old" ntor onion keys are equal

Our dimap code asserts if you try to add the same key twice; this
can't happen if everything is running smoothly, but it's possible if
you try to start a relay where secret_onion_key_ntor is the same as
secret_onion_key_ntor.old.

Fixes bug 30916; bugfix on 0.2.4.8-alpha when ntor keys were
introduced.
parent 1e9488f2
Loading
Loading
Loading
Loading

changes/bug30916

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Minor bugfixes (relay):
    - Avoid crashing when starting with a corrupt keys directory where
      the old ntor key and the new ntor key are identical. Fixes bug 30916;
      bugfix on 0.2.4.8-alpha.
+2 −1
Original line number Diff line number Diff line
@@ -286,7 +286,8 @@ construct_ntor_key_map(void)
                    tor_memdup(&curve25519_onion_key,
                               sizeof(curve25519_keypair_t)));
  }
  if (!tor_mem_is_zero((const char*)last_pk, CURVE25519_PUBKEY_LEN)) {
  if (!tor_mem_is_zero((const char*)last_pk, CURVE25519_PUBKEY_LEN) &&
      tor_memneq(cur_pk, last_pk, CURVE25519_PUBKEY_LEN)) {
    dimap_add_entry(&m, last_pk,
                    tor_memdup(&last_curve25519_onion_key,
                               sizeof(curve25519_keypair_t)));