]> granicus.if.org Git - php/commitdiff
Worked with Samy Kamkar to improve LCG entropy.
authorPierre Joye <pajoye@php.net>
Wed, 3 Feb 2010 20:10:35 +0000 (20:10 +0000)
committerPierre Joye <pajoye@php.net>
Wed, 3 Feb 2010 20:10:35 +0000 (20:10 +0000)
ext/standard/lcg.c

index ad9c4744f8b0c5dc05d7168002580d5368637168..aa0adff2fb8696b3bbf8a8a94ee7428bcfd0151f 100644 (file)
@@ -78,7 +78,7 @@ static void lcg_seed(TSRMLS_D) /* {{{ */
        struct timeval tv;
 
        if (gettimeofday(&tv, NULL) == 0) {
-               LCG(s1) = tv.tv_sec ^ (~tv.tv_usec);
+               LCG(s1) = tv.tv_sec ^ (tv.tv_usec<<11);
        } else {
                LCG(s1) = 1;
        }
@@ -88,6 +88,11 @@ static void lcg_seed(TSRMLS_D) /* {{{ */
        LCG(s2) = (long) getpid();
 #endif
 
+       /* Add entropy to s2 by calling gettimeofday() again */
+       if (gettimeofday(&tv, NULL) == 0) {
+               LCG(s2) ^= (tv.tv_usec<<11);
+       }
+
        LCG(seeded) = 1;
 }
 /* }}} */