diff --git a/changes/ticket23966 b/changes/ticket23966 new file mode 100644 index 0000000000..72889c4cb6 --- /dev/null +++ b/changes/ticket23966 @@ -0,0 +1,5 @@ + o Code simplification and refactoring: + - Remove duplicate code in node_has_curve25519_onion_key() and + node_get_curve25519_onion_key(), and add a check for a zero microdesc + curve25519 onion key. Closes ticket 23966, patch by "aruna1234" and + "teor". diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 4eafe6d7a7..95fef43020 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -1637,24 +1637,18 @@ microdesc_has_curve25519_onion_key(const microdesc_t *md) int node_has_curve25519_onion_key(const node_t *node) { - if (!node) - return 0; - - if (node->ri) - return routerinfo_has_curve25519_onion_key(node->ri); - else if (node->md) - return microdesc_has_curve25519_onion_key(node->md); - else - return 0; + return(node_get_curve25519_onion_key(node)!=NULL); } /** Return the curve25519 key of node, or NULL if none. */ const curve25519_public_key_t * node_get_curve25519_onion_key(const node_t *node) { - if (node->ri) + if (!node) + return NULL; + if (routerinfo_has_curve25519_onion_key(node->ri)) return node->ri->onion_curve25519_pkey; - else if (node->md) + else if (microdesc_has_curve25519_onion_key(node->md)) return node->md->onion_curve25519_pkey; else return NULL;