mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Merge remote-tracking branch 'ahf-github/maint-0.3.2' into maint-0.3.2
This commit is contained in:
commit
6e9d5fc4ec
@ -365,14 +365,12 @@ pick_hsdir_v3(const ed25519_public_key_t *onion_identity_pk)
|
|||||||
int retval;
|
int retval;
|
||||||
char base64_blinded_pubkey[ED25519_BASE64_LEN + 1];
|
char base64_blinded_pubkey[ED25519_BASE64_LEN + 1];
|
||||||
uint64_t current_time_period = hs_get_time_period_num(0);
|
uint64_t current_time_period = hs_get_time_period_num(0);
|
||||||
smartlist_t *responsible_hsdirs;
|
smartlist_t *responsible_hsdirs = NULL;
|
||||||
ed25519_public_key_t blinded_pubkey;
|
ed25519_public_key_t blinded_pubkey;
|
||||||
routerstatus_t *hsdir_rs = NULL;
|
routerstatus_t *hsdir_rs = NULL;
|
||||||
|
|
||||||
tor_assert(onion_identity_pk);
|
tor_assert(onion_identity_pk);
|
||||||
|
|
||||||
responsible_hsdirs = smartlist_new();
|
|
||||||
|
|
||||||
/* Get blinded pubkey of hidden service */
|
/* Get blinded pubkey of hidden service */
|
||||||
hs_build_blinded_pubkey(onion_identity_pk, NULL, 0,
|
hs_build_blinded_pubkey(onion_identity_pk, NULL, 0,
|
||||||
current_time_period, &blinded_pubkey);
|
current_time_period, &blinded_pubkey);
|
||||||
@ -383,6 +381,8 @@ pick_hsdir_v3(const ed25519_public_key_t *onion_identity_pk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Get responsible hsdirs of service for this time period */
|
/* Get responsible hsdirs of service for this time period */
|
||||||
|
responsible_hsdirs = smartlist_new();
|
||||||
|
|
||||||
hs_get_responsible_hsdirs(&blinded_pubkey, current_time_period,
|
hs_get_responsible_hsdirs(&blinded_pubkey, current_time_period,
|
||||||
0, 1, responsible_hsdirs);
|
0, 1, responsible_hsdirs);
|
||||||
|
|
||||||
|
@ -284,6 +284,7 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
|
|||||||
routerinfo_t *ri = tor_malloc_zero(sizeof(routerinfo_t));
|
routerinfo_t *ri = tor_malloc_zero(sizeof(routerinfo_t));
|
||||||
uint8_t identity[DIGEST_LEN];
|
uint8_t identity[DIGEST_LEN];
|
||||||
tor_addr_t ipv4_addr;
|
tor_addr_t ipv4_addr;
|
||||||
|
node_t *node = NULL;
|
||||||
|
|
||||||
memset(identity, identity_idx, sizeof(identity));
|
memset(identity, identity_idx, sizeof(identity));
|
||||||
|
|
||||||
@ -302,7 +303,8 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
|
|||||||
memset(&ri->cache_info.signing_key_cert->signing_key,
|
memset(&ri->cache_info.signing_key_cert->signing_key,
|
||||||
identity_idx, ED25519_PUBKEY_LEN);
|
identity_idx, ED25519_PUBKEY_LEN);
|
||||||
tt_assert(nodelist_set_routerinfo(ri, NULL));
|
tt_assert(nodelist_set_routerinfo(ri, NULL));
|
||||||
node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest);
|
|
||||||
|
node = node_get_mutable_by_id(ri->cache_info.identity_digest);
|
||||||
tt_assert(node);
|
tt_assert(node);
|
||||||
node->rs = rs;
|
node->rs = rs;
|
||||||
/* We need this to exist for node_has_descriptor() to return true. */
|
/* We need this to exist for node_has_descriptor() to return true. */
|
||||||
@ -314,6 +316,9 @@ helper_add_hsdir_to_networkstatus(networkstatus_t *ns,
|
|||||||
smartlist_add(ns->routerstatus_list, rs);
|
smartlist_add(ns->routerstatus_list, rs);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
if (node == NULL)
|
||||||
|
routerstatus_free(rs);
|
||||||
|
|
||||||
routerinfo_free(ri);
|
routerinfo_free(ri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +43,10 @@ new_establish_intro_cell(const char *circ_nonce,
|
|||||||
trn_cell_establish_intro_t *cell = NULL;
|
trn_cell_establish_intro_t *cell = NULL;
|
||||||
hs_service_intro_point_t *ip = NULL;
|
hs_service_intro_point_t *ip = NULL;
|
||||||
|
|
||||||
|
/* Ensure that *cell_out is NULL such that we can use to check if we need to
|
||||||
|
* free `cell` in case of an error. */
|
||||||
|
*cell_out = NULL;
|
||||||
|
|
||||||
/* Auth key pair is generated in the constructor so we are all set for
|
/* Auth key pair is generated in the constructor so we are all set for
|
||||||
* using this IP object. */
|
* using this IP object. */
|
||||||
ip = service_intro_point_new(NULL, 0);
|
ip = service_intro_point_new(NULL, 0);
|
||||||
@ -56,6 +60,9 @@ new_establish_intro_cell(const char *circ_nonce,
|
|||||||
*cell_out = cell;
|
*cell_out = cell;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
if (*cell_out == NULL)
|
||||||
|
trn_cell_establish_intro_free(cell);
|
||||||
|
|
||||||
service_intro_point_free(ip);
|
service_intro_point_free(ip);
|
||||||
return cell_len;
|
return cell_len;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user