summaryrefslogtreecommitdiffstats
path: root/test/sslapitest.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-07-04 14:55:50 +0100
committerMatt Caswell <matt@openssl.org>2016-08-19 13:52:40 +0100
commitb4982125e63882cf9d77c704ef555105528a5dac (patch)
tree1b7d2a2aebd8f614c5a5b6a91ea849792e2822c0 /test/sslapitest.c
parentd82dec40ba87408697357b04ba0d71a2be69c5fb (diff)
Split create_ssl_connection()
Split the create_ssl_connection() helper function into two steps: one to create the SSL objects, and one to actually create the connection. This provides the ability to make changes to the SSL object before the connection is actually made. Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'test/sslapitest.c')
-rw-r--r--test/sslapitest.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/test/sslapitest.c b/test/sslapitest.c
index cb8621737b..cc790a057c 100644
--- a/test/sslapitest.c
+++ b/test/sslapitest.c
@@ -122,7 +122,9 @@ static int execute_test_session(SSL_SESSION_TEST_FIXTURE fix)
SSL_CTX *sctx = NULL, *cctx = NULL;
SSL *serverssl1 = NULL, *clientssl1 = NULL;
SSL *serverssl2 = NULL, *clientssl2 = NULL;
+#ifndef OPENSSL_NO_TLS1_1
SSL *serverssl3 = NULL, *clientssl3 = NULL;
+#endif
SSL_SESSION *sess1 = NULL, *sess2 = NULL;
int testresult = 0;
@@ -151,8 +153,13 @@ static int execute_test_session(SSL_SESSION_TEST_FIXTURE fix)
| SSL_SESS_CACHE_NO_INTERNAL_STORE);
}
- if (!create_ssl_connection(sctx, cctx, &serverssl1, &clientssl1, NULL,
+ if (!create_ssl_objects(sctx, cctx, &serverssl1, &clientssl1, NULL,
NULL)) {
+ printf("Unable to create SSL objects\n");
+ goto end;
+ }
+
+ if (!create_ssl_connection(serverssl1, clientssl1)) {
printf("Unable to create SSL connection\n");
goto end;
}
@@ -173,8 +180,12 @@ static int execute_test_session(SSL_SESSION_TEST_FIXTURE fix)
goto end;
}
- if (!create_ssl_connection(sctx, cctx, &serverssl2, &clientssl2, NULL,
- NULL)) {
+ if (!create_ssl_objects(sctx, cctx, &serverssl2, &clientssl2, NULL, NULL)) {
+ printf("Unable to create second SSL objects\n");
+ goto end;
+ }
+
+ if (!create_ssl_connection(serverssl2, clientssl2)) {
printf("Unable to create second SSL connection\n");
goto end;
}
@@ -245,23 +256,24 @@ static int execute_test_session(SSL_SESSION_TEST_FIXTURE fix)
#if !defined(OPENSSL_NO_TLS1_1) && !defined(OPENSSL_NO_TLS1_2)
/* Force a connection failure */
SSL_CTX_set_max_proto_version(sctx, TLS1_1_VERSION);
- clientssl3 = SSL_new(cctx);
- if (clientssl3 == NULL) {
- printf("Malloc failure\n");
+
+ if (!create_ssl_objects(sctx, cctx, &serverssl3, &clientssl3, NULL, NULL)) {
+ printf("Unable to create third SSL objects\n");
goto end;
}
+
if (!SSL_set_session(clientssl3, sess1)) {
printf("Unable to set session for third connection\n");
goto end;
}
/* This should fail because of the mismatched protocol versions */
- if (create_ssl_connection(sctx, cctx, &serverssl3, &clientssl3, NULL,
- NULL)) {
- printf("Unexpected success creating SSL connection\n");
+ if (create_ssl_connection(serverssl3, clientssl3)) {
+ printf("Unable to create third SSL connection\n");
goto end;
}
+
/* We should have automatically removed the session from the cache */
if (fix.use_ext_cache && (new_called != 2 || remove_called != 3)) {
printf("Failed to call callback to remove session #2\n");
@@ -284,8 +296,10 @@ static int execute_test_session(SSL_SESSION_TEST_FIXTURE fix)
SSL_free(clientssl1);
SSL_free(serverssl2);
SSL_free(clientssl2);
+#ifndef OPENSSL_NO_TLS1_1
SSL_free(serverssl3);
SSL_free(clientssl3);
+#endif
SSL_SESSION_free(sess1);
SSL_SESSION_free(sess2);
/*