Summary: | mrand48 and it's friends return values outside of [-2^31, 2^31] on 64-bit platforms | ||
---|---|---|---|
Product: | glibc | Reporter: | Nicholas Miell <nmiell> |
Component: | libc | Assignee: | Ulrich Drepper <drepper.fsp> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | glibc-bugs |
Priority: | P2 | Flags: | fweimer:
security-
|
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Nicholas Miell
2006-12-18 00:57:04 UTC
Subject: Re: New: mrand48 and it's friends return values outside of [-2^31, 2^31] on 64-bit platforms
> if (x > 2147483648
Invalid testcase; this number is negative with default GCC -std flag.
Segher
Since you're too lazy to do the obvious: #include <stdlib.h> #include <stdio.h> int main(void) { while(1) { long x = mrand48(); if (x > 2147483648L || x < -2147483648L) { printf("long: %ld, int: %d\n", x, (int) x); abort(); } } } Fixed in cvs. Subject: Bug 3747 CVSROOT: /cvs/glibc Module name: libc Branch: glibc-2_5-branch Changes by: jakub@sourceware.org 2007-01-12 17:52:07 Modified files: . : ChangeLog stdlib : Makefile jrand48_r.c tst-rand48.c Added files: stdlib : tst-rand48-2.c Log message: [BZ #3747] * stdlib/jrand48_r.c (__jrand48_r): Make sure result is in the [-231 .. 231) range. * stdlib/tst-rand48.c (main): Fix expected values for 64-bit targets. * stdlib/tst-rand48-2.c: New test. * stdlib/Makefile (tests): Add tst-rand48-2. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/libc/ChangeLog.diff?cvsroot=glibc&only_with_tag=glibc-2_5-branch&r1=1.10362.2.23&r2=1.10362.2.24 http://sourceware.org/cgi-bin/cvsweb.cgi/libc/stdlib/tst-rand48-2.c.diff?cvsroot=glibc&only_with_tag=glibc-2_5-branch&r1=NONE&r2=1.1.4.1 http://sourceware.org/cgi-bin/cvsweb.cgi/libc/stdlib/Makefile.diff?cvsroot=glibc&only_with_tag=glibc-2_5-branch&r1=1.109&r2=1.109.2.1 http://sourceware.org/cgi-bin/cvsweb.cgi/libc/stdlib/jrand48_r.c.diff?cvsroot=glibc&only_with_tag=glibc-2_5-branch&r1=1.9&r2=1.9.10.1 http://sourceware.org/cgi-bin/cvsweb.cgi/libc/stdlib/tst-rand48.c.diff?cvsroot=glibc&only_with_tag=glibc-2_5-branch&r1=1.1&r2=1.1.10.1 |