prop224: Add a function to clear INTRO data

New function named hs_cell_introduce1_data_clear() is introduced to clear off
an hs_cell_introduce1_data_t object.

Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
David Goulet 2017-08-22 14:37:33 -04:00
parent cb462b95b7
commit 7c543412fc
3 changed files with 19 additions and 5 deletions

View File

@ -931,3 +931,18 @@ hs_cell_parse_rendezvous2(const uint8_t *payload, size_t payload_len,
return ret;
}
/* Clear the given INTRODUCE1 data structure data. */
void
hs_cell_introduce1_data_clear(hs_cell_introduce1_data_t *data)
{
if (data == NULL) {
return;
}
/* Object in this list have been moved to the cell object when building it
* so they've been freed earlier. We do that in order to avoid duplicating
* them leading to more memory and CPU time being used for nothing. */
smartlist_free(data->link_specifiers);
/* The data object has no ownership of any members. */
memwipe(data, 0, sizeof(hs_cell_introduce1_data_t));
}

View File

@ -115,5 +115,8 @@ int hs_cell_parse_rendezvous2(const uint8_t *payload, size_t payload_len,
uint8_t *handshake_info,
size_t handshake_info_len);
/* Util API. */
void hs_cell_introduce1_data_clear(hs_cell_introduce1_data_t *data);
#endif /* TOR_HS_CELL_H */

View File

@ -1079,11 +1079,7 @@ hs_circ_send_introduce1(origin_circuit_t *intro_circ,
goto done;
done:
/* Object in this list have been moved to the cell object when building it
* so they've been freed earlier. We do that in order to avoid duplicating
* them leading to more memory and CPU time being used for nothing. */
smartlist_free(intro1_data.link_specifiers);
memwipe(&intro1_data, 0, sizeof(intro1_data));
hs_cell_introduce1_data_clear(&intro1_data);
memwipe(payload, 0, sizeof(payload));
return ret;
}