summaryrefslogtreecommitdiff
path: root/src/or/router.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-04-24 08:51:55 -0400
committerNick Mathewson <nickm@torproject.org>2018-04-24 08:51:55 -0400
commit6182f60f758f85a214a7e84d76f6fddb2bffd730 (patch)
treee7e177590a44a782a373bfbb15348741a5ed1539 /src/or/router.c
parente8683bcbb19318fcd9df04464296d6581adc959d (diff)
parentd2951b381bcbd45798b6cf8f01c5ce7a4d9ad4b9 (diff)
downloadtor-6182f60f758f85a214a7e84d76f6fddb2bffd730.tar.gz
tor-6182f60f758f85a214a7e84d76f6fddb2bffd730.zip
Merge branch 'maint-0.3.2' into maint-0.3.3
Diffstat (limited to 'src/or/router.c')
-rw-r--r--src/or/router.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 9c053cad46..a7a855555c 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -131,7 +131,8 @@ get_onion_key(void)
}
/** Store a full copy of the current onion key into *<b>key</b>, and a full
- * copy of the most recent onion key into *<b>last</b>.
+ * copy of the most recent onion key into *<b>last</b>. Store NULL into
+ * a pointer if the corresponding key does not exist.
*/
void
dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
@@ -139,8 +140,10 @@ dup_onion_keys(crypto_pk_t **key, crypto_pk_t **last)
tor_assert(key);
tor_assert(last);
tor_mutex_acquire(key_lock);
- tor_assert(onionkey);
- *key = crypto_pk_copy_full(onionkey);
+ if (onionkey)
+ *key = crypto_pk_copy_full(onionkey);
+ else
+ *last = NULL;
if (lastonionkey)
*last = crypto_pk_copy_full(lastonionkey);
else
@@ -207,10 +210,14 @@ construct_ntor_key_map(void)
{
di_digest256_map_t *m = NULL;
- dimap_add_entry(&m,
- curve25519_onion_key.pubkey.public_key,
- tor_memdup(&curve25519_onion_key,
- sizeof(curve25519_keypair_t)));
+ if (!tor_mem_is_zero((const char*)
+ curve25519_onion_key.pubkey.public_key,
+ CURVE25519_PUBKEY_LEN)) {
+ dimap_add_entry(&m,
+ curve25519_onion_key.pubkey.public_key,
+ tor_memdup(&curve25519_onion_key,
+ sizeof(curve25519_keypair_t)));
+ }
if (!tor_mem_is_zero((const char*)
last_curve25519_onion_key.pubkey.public_key,
CURVE25519_PUBKEY_LEN)) {