diff options
author | Erik Lander <treat@gmx.com> | 2017-01-16 03:40:34 +0100 |
---|---|---|
committer | Erik Lander <treat@gmx.com> | 2017-01-16 03:40:34 +0100 |
commit | 80a0a95fe4910390b7608fde128c2a45ab7980c7 (patch) | |
tree | ded9a115a36ab6279d62ed4a1e21392f0dd3f85b /src | |
parent | a64fb0d056242a575a7aecd856d151f9f3ae62e4 (diff) |
fallback to qrand if BCryptGenRandom fails
Don't know if this function can fail for other reasons then incorrect
parameters (not enough entropy maybe?). Falling back to qrand is not
very useful a proper fix will require more changes further up the stack.
Diffstat (limited to 'src')
-rw-r--r-- | src/util.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/util.cpp b/src/util.cpp index 6cbc78af..353e4b71 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -181,7 +181,8 @@ void Util::copyDir(const QString src, const QString dest) { int Util::rand() { #ifdef Q_OS_WIN quint32 ret = 0; - BCryptGenRandom(NULL, (PUCHAR)&ret, sizeof(ret), BCRYPT_USE_SYSTEM_PREFERRED_RNG); + if (FAILED(BCryptGenRandom(NULL, (PUCHAR)&ret, sizeof(ret), BCRYPT_USE_SYSTEM_PREFERRED_RNG))) + return qrand(); return ret%RAND_MAX; #else return qrand(); |