better init
diff --git a/quic/core/crypto/quic_random.cc b/quic/core/crypto/quic_random.cc
index 56657b5..aec833b 100644
--- a/quic/core/crypto/quic_random.cc
+++ b/quic/core/crypto/quic_random.cc
@@ -27,7 +27,15 @@
static thread_local uint64_t rng_state[4];
static thread_local bool rng_state_initialized = false;
if (QUIC_PREDICT_FALSE(!rng_state_initialized)) {
- RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state), sizeof(rng_state));
+ uint64_t rng_state_init;
+ RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state_init), sizeof(rng_state_init));
+ rng_state[0] = rng_state_init;
+ RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state_init), sizeof(rng_state_init));
+ rng_state[1] = rng_state_init;
+ RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state_init), sizeof(rng_state_init));
+ rng_state[2] = rng_state_init;
+ RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state_init), sizeof(rng_state_init));
+ rng_state[3] = rng_state_init;
rng_state_initialized = true;
}
const uint64_t result =