[all-commits] [llvm/llvm-project] aab9e9: [Support, Windows] Tolerate failure of CryptGenRandom
Simon Tatham via All-commits
all-commits at lists.llvm.org
Tue Apr 7 01:21:20 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: aab9e9de4d9925617bb9bc3891fa96107b615149
https://github.com/llvm/llvm-project/commit/aab9e9de4d9925617bb9bc3891fa96107b615149
Author: Simon Tatham <simon.tatham at arm.com>
Date: 2020-04-07 (Tue, 07 Apr 2020)
Changed paths:
M llvm/lib/Support/Windows/Process.inc
Log Message:
-----------
[Support,Windows] Tolerate failure of CryptGenRandom
Summary:
In `Unix/Process.inc`, we seed a random number generator from
`/dev/urandom` if possible, but if not, we're happy to fall back to
ordinary pseudorandom strategies, like the current time and PID.
The corresponding function on Windows calls `CryptGenRandom`, but it
//doesn't// have a fallback if that strategy fails. But `CryptGenRandom`
//can// fail, if a cryptography provider isn't properly initialized, or
occasionally (by our observation) simply intermittently.
If it's reasonable on Unix to implement traditional pseudorandom-number
seeding as a fallback, then it's surely reasonable to do the same on
Windows. So this patch adds a last-ditch use of ordinary rand(), using
much the same strategy as the Unix fallback code.
Reviewers: hans, sammccall
Reviewed By: hans
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77553
More information about the All-commits
mailing list