|
Message-ID: <alpine.LNX.2.00.1409211946260.13391@monopod.intra.ispras.ru> Date: Sun, 21 Sep 2014 19:56:13 +0400 (MSK) From: Alexander Monakov <amonakov@...ras.ru> To: musl@...ts.openwall.com Subject: Re: [PATCH] fix a bug in the rand48 family of prng On Sun, 21 Sep 2014, Szabolcs Nagy wrote: > * Jens Gustedt <Jens.Gustedt@...ia.fr> [2014-09-21 16:39:34 +0200]: > > > > 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 > > > > the fix looks ok, but i'm not clear on why it breaks in practice UB on shift shouldn't be a problem here; I think the issue is that "lc[0] | lc[1]<<16" gets sign-extended rather than zero-extended from 32 bit to 64 bit. Alexander
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.