On Fri, Jan 17, 2014 at 03:41:58PM -0500, Vince Weaver wrote: > I'm not sure if this is the cleanest fix for the issue, but it seems to > work for me. Good enough. > In random.c the taviso() routine uses "rand() % rand()" which > can cause a floating point exception if rand() returns 0. > Add some tests to make sure that doesn't happen. > > Signed-off-by: Vince Weaver <vincent.weaver@xxxxxxxxx> > > diff --git a/random.c b/random.c > index 7def9ff..a71fcea 100644 > --- a/random.c > +++ b/random.c > @@ -42,6 +42,7 @@ static unsigned long randbits(int limit) > static unsigned long taviso(void) > { > unsigned long r = 0; > + unsigned long temp; > > switch (rand() % 4) { > case 0: r = rand() & rand(); > @@ -51,10 +52,14 @@ static unsigned long taviso(void) > #endif > break; > > - case 1: r = rand() % rand(); > + case 1: temp = rand(); > + r = rand(); > + if (!temp) r %= temp; > #if __WORDSIZE == 64 > r <<= 32; > - r |= rand() % rand(); > + > + temp = rand(); > + if (!temp) r |= rand() % temp; > #endif > break; Good catch. Despite the function name, this is something I introduced, not something that was in Tavis' original code in iknowthis. Mea culpa. Dave -- To unsubscribe from this list: send the line "unsubscribe trinity" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html