diff options
Diffstat (limited to 'third_party/abseil-cpp/absl/random/internal/seed_material.cc')
-rw-r--r-- | third_party/abseil-cpp/absl/random/internal/seed_material.cc | 50 |
1 files changed, 1 insertions, 49 deletions
diff --git a/third_party/abseil-cpp/absl/random/internal/seed_material.cc b/third_party/abseil-cpp/absl/random/internal/seed_material.cc index c03cad8502..4d38a57419 100644 --- a/third_party/abseil-cpp/absl/random/internal/seed_material.cc +++ b/third_party/abseil-cpp/absl/random/internal/seed_material.cc @@ -28,7 +28,6 @@ #include <cstdlib> #include <cstring> -#include "absl/base/dynamic_annotations.h" #include "absl/base/internal/raw_logging.h" #include "absl/strings/ascii.h" #include "absl/strings/escaping.h" @@ -51,18 +50,6 @@ #endif -#if defined(__GLIBC__) && \ - (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 25)) -// glibc >= 2.25 has getentropy() -#define ABSL_RANDOM_USE_GET_ENTROPY 1 -#endif - -#if defined(__EMSCRIPTEN__) -#include <sys/random.h> -// Emscripten has getentropy, but it resides in a different header. -#define ABSL_RANDOM_USE_GET_ENTROPY 1 -#endif - #if defined(ABSL_RANDOM_USE_BCRYPT) #include <bcrypt.h> @@ -135,32 +122,8 @@ bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) { #else -#if defined(ABSL_RANDOM_USE_GET_ENTROPY) -// On *nix, use getentropy() if supported. Note that libc may support -// getentropy(), but the kernel may not, in which case this function will return -// false. -bool ReadSeedMaterialFromGetEntropy(absl::Span<uint32_t> values) { - auto buffer = reinterpret_cast<uint8_t*>(values.data()); - size_t buffer_size = sizeof(uint32_t) * values.size(); - while (buffer_size > 0) { - // getentropy() has a maximum permitted length of 256. - size_t to_read = std::min<size_t>(buffer_size, 256); - int result = getentropy(buffer, to_read); - if (result < 0) { - return false; - } - // https://github.com/google/sanitizers/issues/1173 - // MemorySanitizer can't see through getentropy(). - ABSL_ANNOTATE_MEMORY_IS_INITIALIZED(buffer, to_read); - buffer += to_read; - buffer_size -= to_read; - } - return true; -} -#endif // defined(ABSL_RANDOM_GETENTROPY) - // On *nix, read entropy from /dev/urandom. -bool ReadSeedMaterialFromDevURandom(absl::Span<uint32_t> values) { +bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) { const char kEntropyFile[] = "/dev/urandom"; auto buffer = reinterpret_cast<uint8_t*>(values.data()); @@ -187,17 +150,6 @@ bool ReadSeedMaterialFromDevURandom(absl::Span<uint32_t> values) { return success; } -bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) { -#if defined(ABSL_RANDOM_USE_GET_ENTROPY) - if (ReadSeedMaterialFromGetEntropy(values)) { - return true; - } -#endif - // Libc may support getentropy, but the kernel may not, so we still have - // to fallback to ReadSeedMaterialFromDevURandom(). - return ReadSeedMaterialFromDevURandom(values); -} - #endif } // namespace |