Fix unit tests to work after own_link_cert assertion

The assert_nonfatal() I had added was triggered by some of the code
that tested the pre-ed case of CERTS cell generation.
This commit is contained in:
Nick Mathewson 2017-06-05 15:51:11 -04:00
parent d5acdadaef
commit 91f49bc0f0
3 changed files with 14 additions and 1 deletions

View File

@ -2270,6 +2270,12 @@ add_ed25519_cert(certs_cell_t *certs_cell,
cert->encoded, cert->encoded_len);
}
#ifdef TOR_UNIT_TESTS
int certs_cell_ed25519_disabled_for_testing = 0;
#else
#define certs_cell_ed25519_disabled_for_testing 0
#endif
/** Send a CERTS cell on the connection <b>conn</b>. Return 0 on success, -1
* on failure. */
int
@ -2320,7 +2326,8 @@ connection_or_send_certs_cell(or_connection_t *conn)
CERTTYPE_ED_ID_SIGN,
get_master_signing_key_cert());
if (conn_in_server_mode) {
tor_assert_nonfatal(conn->handshake_state->own_link_cert);
tor_assert_nonfatal(conn->handshake_state->own_link_cert ||
certs_cell_ed25519_disabled_for_testing);
add_ed25519_cert(certs_cell,
CERTTYPE_ED_SIGN_LINK,
conn->handshake_state->own_link_cert);

View File

@ -112,5 +112,9 @@ void var_cell_free(var_cell_t *cell);
void connection_or_group_set_badness_(smartlist_t *group, int force);
#ifdef TOR_UNIT_TESTS
extern int certs_cell_ed25519_disabled_for_testing;
#endif
#endif

View File

@ -149,6 +149,8 @@ test_link_handshake_certs_ok(void *arg)
/* If we're making a CERTS cell for an ed handshake, let's make sure we
* have some Ed25519 certificates and keys. */
init_mock_ed_keys(key2);
} else {
certs_cell_ed25519_disabled_for_testing = 1;
}
/* c1 has started_here == 1 */