Fix: drbgtest fails when tests are executed in random order

[extended tests]

The test_rand_reseed assumed that the global DRBGs were not used
previously. This assumption is false when the tests are executed
in random order (OPENSSL_TEST_RAND_ORDER). So we uninstantiate
them first and add a test for the first instantiation.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5680)
This commit is contained in:
Dr. Matthias St. Pierre 2018-03-19 21:11:50 +01:00 committed by Matt Caswell
parent 8f8be103fd
commit 59f124f90f

View File

@ -691,13 +691,28 @@ static int test_rand_reseed(void)
|| !TEST_ptr_eq(private->parent, master))
return 0;
/* uninstantiate the three global DRBGs */
RAND_DRBG_uninstantiate(private);
RAND_DRBG_uninstantiate(public);
RAND_DRBG_uninstantiate(master);
/* Install hooks for the following tests */
hook_drbg(master, &master_ctx);
hook_drbg(public, &public_ctx);
hook_drbg(private, &private_ctx);
/*
* Test initial state of shared DRBs
* Test initial seeding of shared DRBGs
*/
if (!TEST_true(test_drbg_reseed(1, master, public, private, 1, 1, 1)))
goto error;
reset_drbg_hook_ctx();
/*
* Test initial state of shared DRBGs
*/
if (!TEST_true(test_drbg_reseed(1, master, public, private, 0, 0, 0)))
goto error;