From 0dbbe21778bfba665180284281db5a5fc38b6051 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 16 Jun 1997 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1997-06-16 --- port/devcons.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/port/devcons.c b/port/devcons.c index 1bc7bf40de4e6bb73aea0c72c713a4f749b68468..d053c99ecb3a21eb7f85be6e93a1cdf956ebc421 100644 --- a/port/devcons.c +++ b/port/devcons.c @@ -963,6 +963,7 @@ static ulong randomread(void *xp, ulong n) { uchar *e, *p; + ulong x; p = xp; @@ -980,8 +981,15 @@ randomread(void *xp, ulong n) rb.wakeme = 0; continue; } - rb.randn = rb.randn*1103515245 + 12345 + *rb.rp; - *p++ = rb.randn; + + /* + * beating clocks will be precictable if + * they are synchronized. Use a cheap pseudo + * random number generator to obscure any cycles. + */ + x = rb.randn*1103515245 ^ *rb.rp; + *p++ = rb.randn = x; + if(rb.rp+1 == rb.ep) rb.rp = rb.buf; else