svn commit: r241373 - head/lib/libc/stdlib
Eitan Adler
eadler at FreeBSD.org
Tue Oct 9 14:25:15 UTC 2012
Author: eadler
Date: Tue Oct 9 14:25:14 2012
New Revision: 241373
URL: http://svn.freebsd.org/changeset/base/241373
Log:
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
Modified:
head/lib/libc/stdlib/rand.c
head/lib/libc/stdlib/random.c
Modified: head/lib/libc/stdlib/rand.c
==============================================================================
--- head/lib/libc/stdlib/rand.c Tue Oct 9 13:21:08 2012 (r241372)
+++ head/lib/libc/stdlib/rand.c Tue Oct 9 14:25:14 2012 (r241373)
@@ -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);
}
}
Modified: head/lib/libc/stdlib/random.c
==============================================================================
--- head/lib/libc/stdlib/random.c Tue Oct 9 13:21:08 2012 (r241372)
+++ head/lib/libc/stdlib/random.c Tue Oct 9 14:25:14 2012 (r241373)
@@ -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;
}
More information about the svn-src-head
mailing list