summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2012-10-09 14:25:14 +0000
committereadler <eadler@FreeBSD.org>2012-10-09 14:25:14 +0000
commit6a02d06d1d81ffda0499310925ef854fd237f382 (patch)
tree93be2ae836bedc74ae0fc7764e801a5dde94a0b3 /lib/libc/stdlib
parent3212891c92af5f2d7d3d162066a3fc5b39195996 (diff)
downloadFreeBSD-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')
-rw-r--r--lib/libc/stdlib/rand.c3
-rw-r--r--lib/libc/stdlib/random.c3
2 files changed, 2 insertions, 4 deletions
diff --git a/lib/libc/stdlib/rand.c b/lib/libc/stdlib/rand.c
index 3835976..7041818 100644
--- a/lib/libc/stdlib/rand.c
+++ b/lib/libc/stdlib/rand.c
@@ -130,10 +130,9 @@ sranddev()
if (!done) {
struct timeval tv;
- unsigned long junk;
gettimeofday(&tv, NULL);
- srand((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk);
+ srand((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec);
}
}
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;
}
OpenPOWER on IntegriCloud