|
Message-ID: <1411310306.4884.188.camel@eris.loria.fr>
Date: Sun, 21 Sep 2014 16:39:34 +0200
From: Jens Gustedt <Jens.Gustedt@...ia.fr>
To: musl@...ts.openwall.com
Subject: [PATCH] fix a bug in the rand48 family of prng
This fixes a bug found by Nadav Har'El, who observed that musl was giving
different prn sequences than other systems, even if seeded with the same
value.
The problem with something like
a = lc[0] | lc[1]<<16 | lc[2]+0ULL<<32;
where lc[1] is an unsigned short and int is 32bit is the following
(1) lc[1] is promoted to int
(2) the left shift 16 is performed on int
this is UB if bit 15 is set in lc[1], since it moves a 1 into the sign
bit.
In particular, bit 15 *is* 1 for the default multplicator A as defined by POSIX.
(On systems with 16 bit int all of this has UB anyhow.)
---
src/prng/__rand48_step.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
View attachment "0001-fix-a-bug-in-the-rand48-family-of-prng.patch" of type "text/x-patch" (485 bytes)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.