From 2587f7482c5f1b2e4ca354d3729b31862705b03d Mon Sep 17 00:00:00 2001 From: Boquan Fang Date: Wed, 16 Oct 2024 21:37:44 -0700 Subject: [PATCH] fix: fix opened AF_UNIX sockets that didn't call s2n_io_pair_close (#4833) --- tests/unit/s2n_certificate_test.c | 4 +- tests/unit/s2n_client_hello_retry_test.c | 48 +++++++-------- tests/unit/s2n_client_psk_extension_test.c | 2 +- ...client_supported_versions_extension_test.c | 2 +- tests/unit/s2n_config_test.c | 4 +- tests/unit/s2n_crypto_test.c | 2 +- tests/unit/s2n_early_data_io_api_test.c | 32 ++++++---- tests/unit/s2n_early_data_io_test.c | 59 ++++++++++++------- tests/unit/s2n_extension_type_test.c | 6 +- tests/unit/s2n_handshake_partial_test.c | 22 ++++--- tests/unit/s2n_io_test.c | 2 + tests/unit/s2n_key_update_threads_test.c | 1 + tests/unit/s2n_ktls_io_sendfile_test.c | 3 +- tests/unit/s2n_mem_usage_test.c | 7 +-- tests/unit/s2n_recv_test.c | 6 +- .../unit/s2n_release_non_empty_buffers_test.c | 2 +- tests/unit/s2n_self_talk_broken_pipe_test.c | 2 +- tests/unit/s2n_self_talk_io_mem_test.c | 8 +-- tests/unit/s2n_self_talk_session_id_test.c | 1 + tests/unit/s2n_testlib_test.c | 2 +- tests/unit/s2n_tls13_cert_verify_test.c | 2 +- 21 files changed, 124 insertions(+), 93 deletions(-) diff --git a/tests/unit/s2n_certificate_test.c b/tests/unit/s2n_certificate_test.c index bbe9fca0cd0..48797611486 100644 --- a/tests/unit/s2n_certificate_test.c +++ b/tests/unit/s2n_certificate_test.c @@ -698,7 +698,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(tls12_client_conn, "test_all_tls12")); EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(tls12_server_conn, "test_all_tls12")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(tls12_client_conn, tls12_server_conn, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(tls12_server_conn, tls12_client_conn)); @@ -719,7 +719,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(tls13_client_conn, "default_tls13")); EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(tls13_server_conn, "default_tls13")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(tls13_client_conn, tls13_server_conn, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(tls13_server_conn, tls13_client_conn)); diff --git a/tests/unit/s2n_client_hello_retry_test.c b/tests/unit/s2n_client_hello_retry_test.c index 00ab2bcd5d8..c817ed54213 100644 --- a/tests/unit/s2n_client_hello_retry_test.c +++ b/tests/unit/s2n_client_hello_retry_test.c @@ -712,7 +712,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -741,7 +741,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -777,7 +777,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -810,7 +810,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -844,7 +844,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -886,7 +886,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -948,7 +948,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1001,7 +1001,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1067,7 +1067,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1118,7 +1118,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1185,7 +1185,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); EXPECT_SUCCESS(s2n_set_server_name(client_conn, "localhost")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1219,7 +1219,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); EXPECT_SUCCESS(s2n_set_server_name(client_conn, "localhost")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1253,7 +1253,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1301,7 +1301,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1425,7 +1425,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config_with_cb)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1509,7 +1509,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1553,7 +1553,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1606,7 +1606,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1643,7 +1643,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1709,7 +1709,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1792,7 +1792,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1845,7 +1845,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1920,7 +1920,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -1986,7 +1986,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); diff --git a/tests/unit/s2n_client_psk_extension_test.c b/tests/unit/s2n_client_psk_extension_test.c index 676b4401cc3..72555bfa847 100644 --- a/tests/unit/s2n_client_psk_extension_test.c +++ b/tests/unit/s2n_client_psk_extension_test.c @@ -500,7 +500,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(server_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); diff --git a/tests/unit/s2n_client_supported_versions_extension_test.c b/tests/unit/s2n_client_supported_versions_extension_test.c index e76ff132c1a..f78a4ed8b7d 100644 --- a/tests/unit/s2n_client_supported_versions_extension_test.c +++ b/tests/unit/s2n_client_supported_versions_extension_test.c @@ -418,7 +418,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(client_conn); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config_with_cert)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); diff --git a/tests/unit/s2n_config_test.c b/tests/unit/s2n_config_test.c index 998754458a4..e43930bb188 100644 --- a/tests/unit/s2n_config_test.c +++ b/tests/unit/s2n_config_test.c @@ -910,7 +910,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(client_conn, client_config)); EXPECT_SUCCESS(s2n_set_server_name(client_conn, "localhost")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -945,7 +945,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(client_conn, client_config)); EXPECT_SUCCESS(s2n_connection_set_blinding(client_conn, S2N_SELF_SERVICE_BLINDING)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); diff --git a/tests/unit/s2n_crypto_test.c b/tests/unit/s2n_crypto_test.c index 744f25c4b99..e6a8fc8f768 100644 --- a/tests/unit/s2n_crypto_test.c +++ b/tests/unit/s2n_crypto_test.c @@ -142,7 +142,7 @@ int main() /* Set server master secret to known value to ensure overridden later */ memset(server->secrets.version.tls12.master_secret, 1, S2N_TLS_SECRET_LEN); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client, server, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(server, client)); diff --git a/tests/unit/s2n_early_data_io_api_test.c b/tests/unit/s2n_early_data_io_api_test.c index 38b56330e51..ba599a5b674 100644 --- a/tests/unit/s2n_early_data_io_api_test.c +++ b/tests/unit/s2n_early_data_io_api_test.c @@ -28,7 +28,8 @@ EXPECT_EQUAL((blocked), (expected_blocked)); \ EXPECT_EQUAL(s2n_conn_get_current_message_type(conn), (expected_msg)) -static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_conn, struct s2n_connection **server_conn) +static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_conn, struct s2n_connection **server_conn, + struct s2n_test_io_pair *io_pair) { *client_conn = s2n_connection_new(S2N_CLIENT); EXPECT_NOT_NULL(*client_conn); @@ -39,9 +40,8 @@ static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_ EXPECT_SUCCESS(s2n_connection_set_blinding(*server_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(*server_conn, "default_tls13")); - struct s2n_test_io_pair io_pair = { 0 }; - EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); - EXPECT_SUCCESS(s2n_connections_set_io_pair(*client_conn, *server_conn, &io_pair)); + EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(io_pair)); + EXPECT_SUCCESS(s2n_connections_set_io_pair(*client_conn, *server_conn, io_pair)); return S2N_RESULT_OK; } @@ -247,7 +247,8 @@ int main(int argc, char **argv) /* Propagate errors from s2n_recv */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -276,7 +277,8 @@ int main(int argc, char **argv) /* Send zero-length early data */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -308,7 +310,8 @@ int main(int argc, char **argv) /* Send early data once */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -342,7 +345,8 @@ int main(int argc, char **argv) /* Receive early data too large for buffer */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -393,7 +397,8 @@ int main(int argc, char **argv) /* Send multiple early data messages */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -432,7 +437,8 @@ int main(int argc, char **argv) /* Receive and combine multiple early data records */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -474,7 +480,8 @@ int main(int argc, char **argv) /* Early data not requested */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk_with_wrong_early_data)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -509,7 +516,8 @@ int main(int argc, char **argv) /* Early data rejected */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk_with_wrong_early_data)); diff --git a/tests/unit/s2n_early_data_io_test.c b/tests/unit/s2n_early_data_io_test.c index 75c133cc033..a388126f7e5 100644 --- a/tests/unit/s2n_early_data_io_test.c +++ b/tests/unit/s2n_early_data_io_test.c @@ -25,7 +25,8 @@ EXPECT_EQUAL(s2n_recv(conn, data_buffer, data_buffer_size, blocked), data_len); \ EXPECT_BYTEARRAY_EQUAL(data_buffer, data, data_len) -static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_conn, struct s2n_connection **server_conn) +static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_conn, struct s2n_connection **server_conn, + struct s2n_test_io_pair *io_pair) { *client_conn = s2n_connection_new(S2N_CLIENT); EXPECT_NOT_NULL(*client_conn); @@ -36,9 +37,8 @@ static S2N_RESULT s2n_test_client_and_server_new(struct s2n_connection **client_ EXPECT_SUCCESS(s2n_connection_set_blinding(*server_conn, S2N_SELF_SERVICE_BLINDING)); EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(*server_conn, "default_tls13")); - struct s2n_test_io_pair io_pair = { 0 }; - EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); - EXPECT_SUCCESS(s2n_connections_set_io_pair(*client_conn, *server_conn, &io_pair)); + EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(io_pair)); + EXPECT_SUCCESS(s2n_connections_set_io_pair(*client_conn, *server_conn, io_pair)); return S2N_RESULT_OK; } @@ -88,7 +88,8 @@ int main(int argc, char **argv) /* Early data not supported by server */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -115,7 +116,8 @@ int main(int argc, char **argv) /* Early data not supported by client */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -142,7 +144,8 @@ int main(int argc, char **argv) /* Server does not support TLS1.3 */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_set_early_data_expected(client_conn)); @@ -166,7 +169,8 @@ int main(int argc, char **argv) /* Early data accepted */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -212,7 +216,8 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(config); struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); @@ -255,7 +260,8 @@ int main(int argc, char **argv) /* Early data rejected */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk_without_early_data)); @@ -289,7 +295,8 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(config); struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); @@ -327,7 +334,8 @@ int main(int argc, char **argv) /* Early data rejected and ignored */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk_to_reject)); @@ -364,7 +372,8 @@ int main(int argc, char **argv) /* Early data rejected, but too much early data received */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk_to_reject)); @@ -403,7 +412,8 @@ int main(int argc, char **argv) /* Early data rejected due to HRR */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -494,7 +504,8 @@ int main(int argc, char **argv) /* PSK rejected altogether */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_config(client_conn, config_with_cert)); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config_with_cert)); @@ -526,7 +537,8 @@ int main(int argc, char **argv) /* End early data after the server accepts the early data request */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -589,7 +601,8 @@ int main(int argc, char **argv) /* End early data before the server accepts the early data request. */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -626,7 +639,8 @@ int main(int argc, char **argv) { DEFER_CLEANUP(struct s2n_connection *client_conn = NULL, s2n_connection_ptr_free); DEFER_CLEANUP(struct s2n_connection *server_conn = NULL, s2n_connection_ptr_free); - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -675,7 +689,8 @@ int main(int argc, char **argv) /* s2n_recv can read early data sent with s2n_send */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -742,7 +757,8 @@ int main(int argc, char **argv) /* s2n_recv fails if it encounters a handshake message instead of early data. */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); @@ -774,7 +790,8 @@ int main(int argc, char **argv) /* s2n_recv fails on too much early data */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_test_client_and_server_new(&client_conn, &server_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); diff --git a/tests/unit/s2n_extension_type_test.c b/tests/unit/s2n_extension_type_test.c index 2b5ea4e9ddf..97b60a97c34 100644 --- a/tests/unit/s2n_extension_type_test.c +++ b/tests/unit/s2n_extension_type_test.c @@ -487,7 +487,7 @@ int main() EXPECT_NOT_NULL(server_conn); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, test_all_config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -515,7 +515,7 @@ int main() EXPECT_NOT_NULL(server_conn); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, test_all_config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); @@ -544,7 +544,7 @@ int main() EXPECT_SUCCESS(s2n_connection_set_config(server_conn, test_all_config)); EXPECT_SUCCESS(s2n_connection_set_cipher_preferences(server_conn, "test_all_tls12")); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); diff --git a/tests/unit/s2n_handshake_partial_test.c b/tests/unit/s2n_handshake_partial_test.c index 0ec829635d8..1c689d63b4b 100644 --- a/tests/unit/s2n_handshake_partial_test.c +++ b/tests/unit/s2n_handshake_partial_test.c @@ -20,7 +20,7 @@ #include "tls/s2n_tls.h" static S2N_RESULT s2n_get_test_client_and_server(struct s2n_connection **client_conn, struct s2n_connection **server_conn, - struct s2n_config *config) + struct s2n_test_io_pair *io_pair, struct s2n_config *config) { *client_conn = s2n_connection_new(S2N_CLIENT); RESULT_ENSURE_REF(*client_conn); @@ -32,9 +32,8 @@ static S2N_RESULT s2n_get_test_client_and_server(struct s2n_connection **client_ RESULT_GUARD_POSIX(s2n_connection_set_config(*client_conn, config)); RESULT_GUARD_POSIX(s2n_connection_set_config(*server_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; - RESULT_GUARD_POSIX(s2n_io_pair_init_non_blocking(&io_pair)); - RESULT_GUARD_POSIX(s2n_connections_set_io_pair(*client_conn, *server_conn, &io_pair)); + RESULT_GUARD_POSIX(s2n_io_pair_init_non_blocking(io_pair)); + RESULT_GUARD_POSIX(s2n_connections_set_io_pair(*client_conn, *server_conn, io_pair)); return S2N_RESULT_OK; } @@ -75,7 +74,8 @@ int main() /* If message is never encountered, complete the handshake */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, config)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, &io_pair, config)); EXPECT_OK(s2n_negotiate_test_server_and_client_until_message(server_conn, client_conn, SERVER_KEY)); @@ -89,7 +89,8 @@ int main() /* Can stop on a given message */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, config)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, &io_pair, config)); EXPECT_OK(s2n_negotiate_test_server_and_client_until_message(server_conn, client_conn, SERVER_CERT_VERIFY)); @@ -103,7 +104,8 @@ int main() /* Can be called repeatedly */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, config)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, &io_pair, config)); EXPECT_OK(s2n_negotiate_test_server_and_client_until_message(server_conn, client_conn, CLIENT_HELLO)); @@ -142,7 +144,8 @@ int main() /* Can continue as normal after stopping */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, config)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, &io_pair, config)); EXPECT_OK(s2n_negotiate_test_server_and_client_until_message(server_conn, client_conn, CLIENT_FINISHED)); @@ -161,7 +164,8 @@ int main() * (This is the non-test use case for this feature) */ { struct s2n_connection *client_conn = NULL, *server_conn = NULL; - EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, config)); + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); + EXPECT_OK(s2n_get_test_client_and_server(&client_conn, &server_conn, &io_pair, config)); EXPECT_SUCCESS(s2n_connection_append_psk(client_conn, test_psk)); EXPECT_SUCCESS(s2n_connection_append_psk(server_conn, test_psk)); diff --git a/tests/unit/s2n_io_test.c b/tests/unit/s2n_io_test.c index c06782f9308..d3d7f0de42b 100644 --- a/tests/unit/s2n_io_test.c +++ b/tests/unit/s2n_io_test.c @@ -102,6 +102,8 @@ int main(int argc, char **argv) s2n_test_real_interrupt(io_pair.client, n_times, &counter)); EXPECT_EQUAL(result, S2N_TEST_SUCCESS); EXPECT_EQUAL(counter, n_times); + /* Child process exit doesn't close io_pair properly, so manually close it*/ + EXPECT_SUCCESS(s2n_io_pair_close(&io_pair)); exit(0); } diff --git a/tests/unit/s2n_key_update_threads_test.c b/tests/unit/s2n_key_update_threads_test.c index cf11f54bde6..418fbd4f152 100644 --- a/tests/unit/s2n_key_update_threads_test.c +++ b/tests/unit/s2n_key_update_threads_test.c @@ -232,6 +232,7 @@ static S2N_RESULT s2n_run_self_talk_test(s2n_test_scenario scenario_fn) EXPECT_SUCCESS(s2n_connection_free(server)); EXPECT_SUCCESS(s2n_cert_chain_and_key_free(chain_and_key)); EXPECT_SUCCESS(s2n_config_free(config)); + EXPECT_SUCCESS(s2n_io_pair_close_one_end(&io_pair, S2N_SERVER)); exit(EXIT_SUCCESS); } diff --git a/tests/unit/s2n_ktls_io_sendfile_test.c b/tests/unit/s2n_ktls_io_sendfile_test.c index 718d802fc5d..c23ea5fbc62 100644 --- a/tests/unit/s2n_ktls_io_sendfile_test.c +++ b/tests/unit/s2n_ktls_io_sendfile_test.c @@ -136,11 +136,10 @@ int main(int argc, char **argv) DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); int write_fd = io_pair.server; - int read_fd = io_pair.client; EXPECT_SUCCESS(s2n_connection_set_write_fd(conn, write_fd)); /* Close one side of the stream to make the fds invalid */ - close(read_fd); + EXPECT_SUCCESS(s2n_io_pair_close_one_end(&io_pair, S2N_CLIENT)); s2n_blocked_status blocked = S2N_NOT_BLOCKED; size_t bytes_written = 0; diff --git a/tests/unit/s2n_mem_usage_test.c b/tests/unit/s2n_mem_usage_test.c index 2eeeb90ecdb..de72cc216b2 100644 --- a/tests/unit/s2n_mem_usage_test.c +++ b/tests/unit/s2n_mem_usage_test.c @@ -17,7 +17,7 @@ /* FreeBSD requires POSIX compatibility off for its syscalls (enables __BSD_VISIBLE) * Without the below line, cannot be imported (it requires __BSD_VISIBLE) */ #undef _POSIX_C_SOURCE - /* clang-format off */ +/* clang-format off */ #include #include /* clang-format on */ @@ -25,7 +25,7 @@ #elif defined(__OpenBSD__) #undef _POSIX_C_SOURCE #include - /* clang-format off */ +/* clang-format off */ #include #include /* clang-format on */ @@ -155,7 +155,7 @@ int main(int argc, char **argv) BEGIN_TEST(); EXPECT_SUCCESS(s2n_disable_tls13_in_test()); - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); /* Skip the test when running under valgrind or address sanitizer, as those tools @@ -244,7 +244,6 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_free(servers[i])); } - EXPECT_SUCCESS(s2n_io_pair_close(&io_pair)); EXPECT_SUCCESS(s2n_cert_chain_and_key_free(chain_and_key)); EXPECT_SUCCESS(s2n_config_free(server_config)); EXPECT_SUCCESS(s2n_config_free(client_config)); diff --git a/tests/unit/s2n_recv_test.c b/tests/unit/s2n_recv_test.c index acb6e37ee12..93bd93aad58 100644 --- a/tests/unit/s2n_recv_test.c +++ b/tests/unit/s2n_recv_test.c @@ -88,7 +88,7 @@ int main(int argc, char **argv) s2n_connection_ptr_free); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(server_conn, client_conn)); @@ -234,7 +234,7 @@ int main(int argc, char **argv) s2n_connection_ptr_free); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(server_conn, client_conn)); @@ -280,7 +280,7 @@ int main(int argc, char **argv) s2n_connection_ptr_free); EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair)); EXPECT_SUCCESS(s2n_negotiate_test_server_and_client(server_conn, client_conn)); diff --git a/tests/unit/s2n_release_non_empty_buffers_test.c b/tests/unit/s2n_release_non_empty_buffers_test.c index b3509627430..bc6535b2207 100644 --- a/tests/unit/s2n_release_non_empty_buffers_test.c +++ b/tests/unit/s2n_release_non_empty_buffers_test.c @@ -83,7 +83,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_disable_tls13_in_test()); /* Create a pipe */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init(&io_pair)); /* Create a child process */ diff --git a/tests/unit/s2n_self_talk_broken_pipe_test.c b/tests/unit/s2n_self_talk_broken_pipe_test.c index cdce1ba6d9e..3ce82af75c4 100644 --- a/tests/unit/s2n_self_talk_broken_pipe_test.c +++ b/tests/unit/s2n_self_talk_broken_pipe_test.c @@ -103,7 +103,7 @@ int main(int argc, char **argv) struct s2n_cert_chain_and_key *chain_and_keys[SUPPORTED_CERTIFICATE_FORMATS]; /* Create a pipe */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init(&io_pair)); /* Create a child process */ diff --git a/tests/unit/s2n_self_talk_io_mem_test.c b/tests/unit/s2n_self_talk_io_mem_test.c index f28a1d1f8fc..89792f0685f 100644 --- a/tests/unit/s2n_self_talk_io_mem_test.c +++ b/tests/unit/s2n_self_talk_io_mem_test.c @@ -54,7 +54,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); /* Create nonblocking pipes */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(client_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(server_conn, &io_pair)); @@ -89,7 +89,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config)); /* Create nonblocking pipes */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(client_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(server_conn, &io_pair)); @@ -143,7 +143,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_set_config(server_conn, config_for_mfl)); /* Create nonblocking pipes */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(client_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(server_conn, &io_pair)); @@ -190,7 +190,7 @@ int main(int argc, char **argv) EXPECT_EQUAL(server_conn->out.blob.size, 0); /* Create nonblocking pipes */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(client_conn, &io_pair)); EXPECT_SUCCESS(s2n_connection_set_io_pair(server_conn, &io_pair)); diff --git a/tests/unit/s2n_self_talk_session_id_test.c b/tests/unit/s2n_self_talk_session_id_test.c index f111e77cd33..933ccc16a20 100644 --- a/tests/unit/s2n_self_talk_session_id_test.c +++ b/tests/unit/s2n_self_talk_session_id_test.c @@ -578,6 +578,7 @@ int main(int argc, char **argv) EXPECT_SUCCESS(s2n_connection_free(client_conn)); EXPECT_SUCCESS(s2n_connection_free(server_conn)); + EXPECT_SUCCESS(s2n_io_pair_close(&io_pair)); }; /** diff --git a/tests/unit/s2n_testlib_test.c b/tests/unit/s2n_testlib_test.c index f5f7b8b9df0..c3df7c99f29 100644 --- a/tests/unit/s2n_testlib_test.c +++ b/tests/unit/s2n_testlib_test.c @@ -33,7 +33,7 @@ int main(int argc, char **argv) EXPECT_NOT_NULL(server_conn = s2n_connection_new(S2N_SERVER)); /* Create nonblocking pipes */ - struct s2n_test_io_pair io_pair; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); POSIX_GUARD(s2n_io_pair_init_non_blocking(&io_pair)); POSIX_GUARD(s2n_connection_set_io_pair(server_conn, &io_pair)); diff --git a/tests/unit/s2n_tls13_cert_verify_test.c b/tests/unit/s2n_tls13_cert_verify_test.c index 7a6e781be1a..a3d362440a1 100644 --- a/tests/unit/s2n_tls13_cert_verify_test.c +++ b/tests/unit/s2n_tls13_cert_verify_test.c @@ -307,7 +307,7 @@ int main(int argc, char **argv) client_policy.signature_preferences = &test_sig_preferences; client_conn->security_policy_override = &client_policy; - struct s2n_test_io_pair io_pair = { 0 }; + DEFER_CLEANUP(struct s2n_test_io_pair io_pair = { 0 }, s2n_io_pair_close); EXPECT_SUCCESS(s2n_io_pair_init_non_blocking(&io_pair)); EXPECT_SUCCESS(s2n_connections_set_io_pair(client_conn, server_conn, &io_pair));