chance: Avoid abuse of O_NONBLOCK for Windows

O_NONBLOCK from src/lib/w32/w32misc.h is stricly for use with our
fcntl().  pick_seed() passes it to open(), which is wrong.  With any
luck, open() fails as it should anyway (the files being opened are not
expected to exist under Windows).  Messed up in commit 9102ecce5 "Fix
PRNG seeding to resist guessing", v4.3.31.

Clean up: guard with #ifndef _WIN32.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2021-01-27 08:36:34 +01:00
parent f69db5e413
commit b19aa1c13f

View file

@ -27,7 +27,7 @@
* chance.c: Roll dice * chance.c: Roll dice
* *
* Known contributors to this file: * Known contributors to this file:
* Markus Armbruster, 2006-2012 * Markus Armbruster, 2006-2021
*/ */
#include <config.h> #include <config.h>
@ -140,11 +140,12 @@ djb_hash(unsigned hash, void *buf, size_t sz)
unsigned unsigned
pick_seed(void) pick_seed(void)
{ {
int fd;
unsigned seed; unsigned seed;
int got_seed = 0; int got_seed = 0;
struct timeval tv; struct timeval tv;
pid_t pid; pid_t pid;
#ifndef _WIN32
int fd;
/* /*
* Modern systems provide random number devices, but the details * Modern systems provide random number devices, but the details
@ -164,6 +165,7 @@ pick_seed(void)
got_seed = read(fd, &seed, sizeof(seed)) == sizeof(seed); got_seed = read(fd, &seed, sizeof(seed)) == sizeof(seed);
close(fd); close(fd);
} }
#endif
if (!got_seed) { if (!got_seed) {
/* Kernel didn't provide, fall back to hashing time and PID */ /* Kernel didn't provide, fall back to hashing time and PID */