diff options
Diffstat (limited to 'src/mongo/bson')
-rw-r--r-- | src/mongo/bson/oid.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/mongo/bson/oid.cpp b/src/mongo/bson/oid.cpp index 0f08d6c56b6..ebceefa04fa 100644 --- a/src/mongo/bson/oid.cpp +++ b/src/mongo/bson/oid.cpp @@ -54,9 +54,9 @@ OID::InstanceUnique _instanceUnique; MONGO_INITIALIZER_GENERAL(OIDGeneration, MONGO_NO_PREREQUISITES, ("default")) (InitializerContext* context) { - std::unique_ptr<SecureRandom> entropy(SecureRandom::create()); - counter = std::make_unique<AtomicWord<int64_t>>(entropy->nextInt64()); - _instanceUnique = OID::InstanceUnique::generate(*entropy); + SecureRandom entropy; + counter = std::make_unique<AtomicWord<int64_t>>(entropy.nextInt64()); + _instanceUnique = OID::InstanceUnique::generate(entropy); return Status::OK(); } @@ -72,9 +72,8 @@ OID::Increment OID::Increment::next() { } OID::InstanceUnique OID::InstanceUnique::generate(SecureRandom& entropy) { - int64_t rand = entropy.nextInt64(); OID::InstanceUnique u; - std::memcpy(u.bytes, &rand, kInstanceUniqueSize); + entropy.fill(u.bytes, kInstanceUniqueSize); return u; } @@ -119,8 +118,8 @@ size_t OID::Hasher::operator()(const OID& oid) const { } void OID::regenMachineId() { - std::unique_ptr<SecureRandom> entropy(SecureRandom::create()); - _instanceUnique = InstanceUnique::generate(*entropy); + SecureRandom entropy; + _instanceUnique = InstanceUnique::generate(entropy); } unsigned OID::getMachineId() { |