mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
Validate intro point limits to avoid asserts.
This commit is contained in:
parent
7c507a1f7f
commit
3bc52dae89
@ -346,12 +346,25 @@ service_intro_point_new(const extend_info_t *ei, unsigned int is_legacy)
|
|||||||
* term keys. */
|
* term keys. */
|
||||||
ed25519_keypair_generate(&ip->auth_key_kp, 0);
|
ed25519_keypair_generate(&ip->auth_key_kp, 0);
|
||||||
|
|
||||||
ip->introduce2_max =
|
{ /* Set introduce2 max cells limit */
|
||||||
crypto_rand_int_range(get_intro_point_min_introduce2(),
|
int32_t min_introduce2_cells = get_intro_point_min_introduce2();
|
||||||
get_intro_point_max_introduce2());
|
int32_t max_introduce2_cells = get_intro_point_max_introduce2();
|
||||||
ip->time_to_expire = time(NULL) +
|
if (BUG(max_introduce2_cells < min_introduce2_cells)) {
|
||||||
crypto_rand_int_range(get_intro_point_min_lifetime(),
|
goto err;
|
||||||
get_intro_point_max_lifetime());
|
}
|
||||||
|
ip->introduce2_max = crypto_rand_int_range(min_introduce2_cells,
|
||||||
|
max_introduce2_cells);
|
||||||
|
}
|
||||||
|
{ /* Set intro point lifetime */
|
||||||
|
int32_t intro_point_min_lifetime = get_intro_point_min_lifetime();
|
||||||
|
int32_t intro_point_max_lifetime = get_intro_point_max_lifetime();
|
||||||
|
if (BUG(intro_point_max_lifetime < intro_point_min_lifetime)) {
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
ip->time_to_expire = time(NULL) +
|
||||||
|
crypto_rand_int_range(intro_point_min_lifetime,intro_point_max_lifetime);
|
||||||
|
}
|
||||||
|
|
||||||
ip->replay_cache = replaycache_new(0, 0);
|
ip->replay_cache = replaycache_new(0, 0);
|
||||||
|
|
||||||
/* Initialize the base object. We don't need the certificate object. */
|
/* Initialize the base object. We don't need the certificate object. */
|
||||||
|
Loading…
Reference in New Issue
Block a user