summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorErik Lander <treat@gmx.com>2017-01-16 03:40:34 +0100
committerErik Lander <treat@gmx.com>2017-01-16 03:40:34 +0100
commit80a0a95fe4910390b7608fde128c2a45ab7980c7 (patch)
treeded9a115a36ab6279d62ed4a1e21392f0dd3f85b /src
parenta64fb0d056242a575a7aecd856d151f9f3ae62e4 (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.cpp3
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();