svn commit: r241476 - stable/9/lib/libc/stdlib

Eitan Adler eadler at FreeBSD.org
Fri Oct 12 02:12:54 UTC 2012


Author: eadler
Date: Fri Oct 12 02:12:53 2012
New Revision: 241476
URL: http://svn.freebsd.org/changeset/base/241476

Log:
  MFC r241373:
  	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:	cperciva (implicit)

Modified:
  stable/9/lib/libc/stdlib/rand.c
  stable/9/lib/libc/stdlib/random.c
Directory Properties:
  stable/9/lib/libc/   (props changed)

Modified: stable/9/lib/libc/stdlib/rand.c
==============================================================================
--- stable/9/lib/libc/stdlib/rand.c	Fri Oct 12 02:12:52 2012	(r241475)
+++ stable/9/lib/libc/stdlib/rand.c	Fri Oct 12 02:12:53 2012	(r241476)
@@ -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: stable/9/lib/libc/stdlib/random.c
==============================================================================
--- stable/9/lib/libc/stdlib/random.c	Fri Oct 12 02:12:52 2012	(r241475)
+++ stable/9/lib/libc/stdlib/random.c	Fri Oct 12 02:12:53 2012	(r241476)
@@ -315,10 +315,9 @@ srandomdev()
 
 	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-stable-9 mailing list