diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Common/Random.c | 14 | ||||
-rw-r--r-- | src/Common/Random.h | 1 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/Common/Random.c b/src/Common/Random.c index a2da77f8..09c55bf3 100644 --- a/src/Common/Random.c +++ b/src/Common/Random.c @@ -94,14 +94,21 @@ HCRYPTPROV hCryptProv; /* Init the random number generator, setup the hooks, and start the thread */ -int Randinit () +int RandinitWithCheck ( int* pAlreadyInitialized) { DWORD dwLastError = ERROR_SUCCESS; if (GetMaxPkcs5OutSize() > RNG_POOL_SIZE) TC_THROW_FATAL_EXCEPTION; if(bRandDidInit) + { + if (pAlreadyInitialized) + *pAlreadyInitialized = 1; return 0; + } + + if (pAlreadyInitialized) + *pAlreadyInitialized = 0; InitializeCriticalSection (&critRandProt); @@ -153,6 +160,11 @@ error: return 1; } +int Randinit () +{ + return RandinitWithCheck (NULL); +} + /* Close everything down, including the thread which is closed down by setting a flag which eventually causes the thread function to exit */ void RandStop (BOOL freePool) diff --git a/src/Common/Random.h b/src/Common/Random.h index 46fe59a8..88dd041b 100644 --- a/src/Common/Random.h +++ b/src/Common/Random.h @@ -35,6 +35,7 @@ extern "C" { void RandAddInt ( unsigned __int32 x ); int Randinit ( void ); +int RandinitWithCheck ( int* pAlreadyInitialized); void RandStop (BOOL freePool); BOOL IsRandomNumberGeneratorStarted (); void RandSetHashFunction ( int hash_algo_id ); |