From 00c5ca7d91b8e0a1b71929a2daa3c45c94f07b24 Mon Sep 17 00:00:00 2001 From: Rasmus Lerdorf Date: Fri, 8 Jan 2010 09:43:14 +0000 Subject: [PATCH] Worked with Samy Kamkar to improve LCG entropy. --- ext/standard/lcg.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ext/standard/lcg.c b/ext/standard/lcg.c index b92ef3b3a4..b2ea786a44 100644 --- a/ext/standard/lcg.c +++ b/ext/standard/lcg.c @@ -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; } /* }}} */ -- 2.50.1