From 3caada0a9eb506bfbd54d46517d646b43a00882b Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Jul 2015 03:40:43 -0400 Subject: [PATCH] Switch to static local/accessor pattern to avoid initialization order issues amoung translation units --- test.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test.cpp b/test.cpp index 3d73a784..b357119e 100644 --- a/test.cpp +++ b/test.cpp @@ -149,9 +149,9 @@ static const DebugTrapHandler g_dummyHandler; #endif // __GNUC__ #endif // CRYPTOPP_UNIX_AVAILABLE and not NDEBUG -static OFB_Mode::Encryption s_globalRNG; RandomNumberGenerator & GlobalRNG() { + static OFB_Mode::Encryption s_globalRNG; return s_globalRNG; } @@ -178,7 +178,9 @@ int CRYPTOPP_API main(int argc, char *argv[]) std::string seed = IntToString(time(NULL)); seed.resize(16); - s_globalRNG.SetKeyWithIV((byte *)seed.data(), 16, (byte *)seed.data()); + + OFB_Mode::Encryption& prng = static_cast::Encryption&>(GlobalRNG()); + prng.SetKeyWithIV((byte *)seed.data(), 16, (byte *)seed.data()); std::string command, executableName, macFilename; @@ -828,7 +830,9 @@ bool Validate(int alg, bool thorough, const char *seedInput) seed.resize(16); std::cout << "Using seed: " << seed << std::endl; - s_globalRNG.SetKeyWithIV((byte *)seed.data(), 16, (byte *)seed.data()); + + OFB_Mode::Encryption& prng = static_cast::Encryption&>(GlobalRNG()); + prng.SetKeyWithIV((byte *)seed.data(), 16, (byte *)seed.data()); #ifdef _OPENMP int tc = 0;