diff options
author | eadler <eadler@FreeBSD.org> | 2012-10-09 14:25:14 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-10-09 14:25:14 +0000 |
commit | 6a02d06d1d81ffda0499310925ef854fd237f382 (patch) | |
tree | 93be2ae836bedc74ae0fc7764e801a5dde94a0b3 /lib/libc/stdlib/random.c | |
parent | 3212891c92af5f2d7d3d162066a3fc5b39195996 (diff) | |
download | FreeBSD-src-6a02d06d1d81ffda0499310925ef854fd237f382.zip FreeBSD-src-6a02d06d1d81ffda0499310925ef854fd237f382.tar.gz |
Remove undefined behavior from sranddev() and
srandomdev(). This doesn't actually work
with any modern C compiler:
In particular, both clang and modern gcc
verisons silently elide any xor operation
with 'junk'.
Approved by: secteam
MFC after: 3 days
Diffstat (limited to 'lib/libc/stdlib/random.c')
-rw-r--r-- | lib/libc/stdlib/random.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/libc/stdlib/random.c b/lib/libc/stdlib/random.c index 4a1af54..a3c054e 100644 --- a/lib/libc/stdlib/random.c +++ b/lib/libc/stdlib/random.c @@ -312,10 +312,9 @@ srandomdev(void) if (!done) { struct timeval tv; - volatile unsigned long junk; gettimeofday(&tv, NULL); - srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk); + srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec); return; } |