Fix the drbgtest with randomized ordering
authorMatt Caswell <matt@openssl.org>
Tue, 2 Oct 2018 12:44:17 +0000 (13:44 +0100)
committerMatt Caswell <matt@openssl.org>
Wed, 3 Oct 2018 15:41:33 +0000 (16:41 +0100)
In drbgtest, test_set_defaults changes the default DRBGs. This works fine
when tests are run in the normal order. However if
OPENSSL_TEST_RAND_ORDER is defined then it may fail (dependent on the
ordering). This environment variable is defined for one of the Travis
tests, so this issue was causing intermittent travis test failures.

[extended tests]

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/7338)

test/drbgtest.c

index 4e0c76fc4907f8dfedbe66ab95bc2ce95a73bddc..f2054a8ac5e65ab086d23ed373ddc702a5d3fd35 100644 (file)
@@ -1049,7 +1049,17 @@ static int test_set_defaults(void)
            && TEST_true(RAND_DRBG_uninstantiate(master))
            && TEST_int_eq(master->type, NID_aes_256_ctr)
            && TEST_int_eq(master->flags,
            && TEST_true(RAND_DRBG_uninstantiate(master))
            && TEST_int_eq(master->type, NID_aes_256_ctr)
            && TEST_int_eq(master->flags,
-                          RAND_DRBG_FLAG_MASTER|RAND_DRBG_FLAG_CTR_NO_DF);
+                          RAND_DRBG_FLAG_MASTER|RAND_DRBG_FLAG_CTR_NO_DF)
+
+           /* Reset back to the standard defaults */
+           && TEST_true(RAND_DRBG_set_defaults(RAND_DRBG_TYPE,
+                                               RAND_DRBG_FLAGS
+                                               | RAND_DRBG_FLAG_MASTER
+                                               | RAND_DRBG_FLAG_PUBLIC
+                                               | RAND_DRBG_FLAG_PRIVATE))
+           && TEST_true(RAND_DRBG_uninstantiate(master))
+           && TEST_true(RAND_DRBG_uninstantiate(public))
+           && TEST_true(RAND_DRBG_uninstantiate(private));
 }
 
 int setup_tests(void)
 }
 
 int setup_tests(void)