summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-06-05 15:51:11 -0400
committerNick Mathewson <nickm@torproject.org>2017-06-05 15:51:11 -0400
commit91f49bc0f0759d0e0a794fbfe8cce5a9bb07e607 (patch)
treec1f8700691b13fd3a1f343ae9b2db68cd31d32e7
parentd5acdadaeffa8e1c61abef5881e9cc6e42d9a755 (diff)
downloadtor-91f49bc0f0759d0e0a794fbfe8cce5a9bb07e607.tar.gz
tor-91f49bc0f0759d0e0a794fbfe8cce5a9bb07e607.zip
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.
-rw-r--r--src/or/connection_or.c9
-rw-r--r--src/or/connection_or.h4
-rw-r--r--src/test/test_link_handshake.c2
3 files changed, 14 insertions, 1 deletions
diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index 1e2d731f53..6eb62a99de 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -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);
diff --git a/src/or/connection_or.h b/src/or/connection_or.h
index 80a5bddb14..514a0fd008 100644
--- a/src/or/connection_or.h
+++ b/src/or/connection_or.h
@@ -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
diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c
index ade7cf6998..66eeb724a2 100644
--- a/src/test/test_link_handshake.c
+++ b/src/test/test_link_handshake.c
@@ -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 */