diff options
author | Matt Caswell <matt@openssl.org> | 2018-10-16 18:03:39 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2018-10-26 15:21:19 +0200 |
commit | f1358634af5b84be22cb20fff3dcb613f5f8c978 (patch) | |
tree | 22d0c2c327deca81c1ff73c0c765f6604df295a8 /test/dtlstest.c | |
parent | Properly handle duplicated messages from the next epoch (diff) | |
download | openssl-f1358634af5b84be22cb20fff3dcb613f5f8c978.tar.xz openssl-f1358634af5b84be22cb20fff3dcb613f5f8c978.zip |
Add a test for duplicated DTLS records
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/7414)
Diffstat (limited to 'test/dtlstest.c')
-rw-r--r-- | test/dtlstest.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/dtlstest.c b/test/dtlstest.c index 5afd7e9499..772528febf 100644 --- a/test/dtlstest.c +++ b/test/dtlstest.c @@ -289,6 +289,40 @@ static int test_cookie(void) return testresult; } +static int test_dtls_duplicate_records(void) +{ + SSL_CTX *sctx = NULL, *cctx = NULL; + SSL *serverssl = NULL, *clientssl = NULL; + int testresult = 0; + + if (!TEST_true(create_ssl_ctx_pair(DTLS_server_method(), + DTLS_client_method(), + DTLS1_VERSION, DTLS_MAX_VERSION, + &sctx, &cctx, cert, privkey))) + return 0; + + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, + NULL, NULL))) + goto end; + + DTLS_set_timer_cb(clientssl, timer_cb); + DTLS_set_timer_cb(serverssl, timer_cb); + + BIO_ctrl(SSL_get_wbio(clientssl), MEMPACKET_CTRL_SET_DUPLICATE_REC, 1, NULL); + BIO_ctrl(SSL_get_wbio(serverssl), MEMPACKET_CTRL_SET_DUPLICATE_REC, 1, NULL); + + if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE))) + goto end; + + testresult = 1; + end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} int setup_tests(void) { @@ -299,6 +333,7 @@ int setup_tests(void) ADD_ALL_TESTS(test_dtls_unprocessed, NUM_TESTS); ADD_ALL_TESTS(test_dtls_drop_records, TOTAL_RECORDS); ADD_TEST(test_cookie); + ADD_TEST(test_dtls_duplicate_records); return 1; } |