Change SETUP_TEST_FIXTURE so that the fixture structure is passed by
reference not by value. This allows an error return from the setup function.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4083)
diff --git a/test/ct_test.c b/test/ct_test.c
index 5123e50..45dd2e9 100644
--- a/test/ct_test.c
+++ b/test/ct_test.c
@@ -344,22 +344,27 @@
return success;
}
-# define SETUP_CT_TEST_FIXTURE() SETUP_TEST_FIXTURE(CT_TEST_FIXTURE *, set_up)
+# define SETUP_CT_TEST_FIXTURE() SETUP_TEST_FIXTURE(CT_TEST_FIXTURE, set_up)
# define EXECUTE_CT_TEST() EXECUTE_TEST(execute_cert_test, tear_down)
static int test_no_scts_in_certificate(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->certs_dir = certs_dir;
fixture->certificate_file = "leaf.pem";
fixture->issuer_file = "subinterCA.pem";
fixture->expected_sct_count = 0;
EXECUTE_CT_TEST();
+ return result;
}
static int test_one_sct_in_certificate(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->certs_dir = certs_dir;
fixture->certificate_file = "embeddedSCTs1.pem";
fixture->issuer_file = "embeddedSCTs1_issuer.pem";
@@ -367,11 +372,14 @@
fixture->sct_dir = certs_dir;
fixture->sct_text_file = "embeddedSCTs1.sct";
EXECUTE_CT_TEST();
+ return result;
}
static int test_multiple_scts_in_certificate(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->certs_dir = certs_dir;
fixture->certificate_file = "embeddedSCTs3.pem";
fixture->issuer_file = "embeddedSCTs3_issuer.pem";
@@ -379,33 +387,42 @@
fixture->sct_dir = certs_dir;
fixture->sct_text_file = "embeddedSCTs3.sct";
EXECUTE_CT_TEST();
+ return result;
}
static int test_verify_one_sct(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->certs_dir = certs_dir;
fixture->certificate_file = "embeddedSCTs1.pem";
fixture->issuer_file = "embeddedSCTs1_issuer.pem";
fixture->expected_sct_count = fixture->expected_valid_sct_count = 1;
fixture->test_validity = 1;
EXECUTE_CT_TEST();
+ return result;
}
static int test_verify_multiple_scts(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->certs_dir = certs_dir;
fixture->certificate_file = "embeddedSCTs3.pem";
fixture->issuer_file = "embeddedSCTs3_issuer.pem";
fixture->expected_sct_count = fixture->expected_valid_sct_count = 3;
fixture->test_validity = 1;
EXECUTE_CT_TEST();
+ return result;
}
static int test_verify_fails_for_future_sct(void)
{
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->epoch_time_in_ms = 1365094800000; /* Apr 4 17:00:00 2013 GMT */
fixture->certs_dir = certs_dir;
fixture->certificate_file = "embeddedSCTs1.pem";
@@ -414,6 +431,7 @@
fixture->expected_valid_sct_count = 0;
fixture->test_validity = 1;
EXECUTE_CT_TEST();
+ return result;
}
static int test_decode_tls_sct(void)
@@ -437,11 +455,14 @@
"\xED\xBF\x08";
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->tls_sct_list = tls_sct_list;
fixture->tls_sct_list_len = 0x7a;
fixture->sct_dir = ct_dir;
fixture->sct_text_file = "tls1.sct";
EXECUTE_CT_TEST();
+ return result;
}
static int test_encode_tls_sct(void)
@@ -454,6 +475,8 @@
SCT *sct = NULL;
SETUP_CT_TEST_FIXTURE();
+ if (fixture == NULL)
+ return 0;
fixture->sct_list = sk_SCT_new_null();
if (!TEST_ptr(sct = SCT_new_from_base64(SCT_VERSION_V1, log_id,
@@ -466,6 +489,7 @@
fixture->sct_dir = ct_dir;
fixture->sct_text_file = "tls1.sct";
EXECUTE_CT_TEST();
+ return result;
}
/*