glibc/stdlib
Joseph Myers 8a07b0c43c Fix signed integer overflow in random_r (bug 17343).
Bug 17343 reports that stdlib/random_r.c has code with undefined
behavior because of signed integer overflow on int32_t.  This patch
changes the code so that the possibly overflowing computations use
unsigned arithmetic instead.

Note that the bug report refers to "Most code" in that file.  The
places changed in this patch are the only ones I found where I think
such overflow can occur.

Tested for x86_64 and x86.

	[BZ #17343]
	* stdlib/random_r.c (__random_r): Use unsigned arithmetic for
	possibly overflowing computations.
2018-03-20 18:25:24 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sys Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
a64l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
abort.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
abs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
add_n.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
addmul_1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
alloca.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atexit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atof.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atoi.c Use libc_hidden_* for atoi (bug 15105). 2018-02-26 18:17:47 +00:00
atol.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
atoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-fmtmsg1.c
bug-getcontext.c Simplify tilegx sysdeps folder 2017-12-20 16:55:26 -02:00
bug-strtod2.c Refactor strtod tests 2016-10-25 17:05:47 -02:00
bug-strtod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
canonicalize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cmp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cxa_at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cxa_atexit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cxa_finalize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cxa_thread_atexit_impl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Depend
div.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
divmod_1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
divrem.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
drand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
drand48-iter.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
drand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
erand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
erand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
errno.h Separate out error_t definition 2018-03-04 17:27:58 +01:00
exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
exit.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fmtmsg.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fmtmsg.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fpioconst.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fpioconst.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gen-fpioconst.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gen-tst-strtod-round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getcontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getentropy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getrandom.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getsubopt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gmp-impl.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gmp.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
grouping.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
grouping.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
groupingwc.c
inlines.c
isomac.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
jrand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
jrand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
l64a.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
labs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lcong48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lcong48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ldbl2mpn.c
ldiv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
llabs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lldiv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
longlong.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lrand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lrand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lshift.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
makecontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile Separate out error_t definition 2018-03-04 17:27:58 +01:00
mblen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbstowcs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mbtowc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mod_1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
monetary.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mp_clz_tab.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpn2flt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mpn2ldbl.c
mrand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mrand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
msort.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mul_1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mul_n.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
nrand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
nrand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
old_atexit.c
on_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
putenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
qsort.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
quick_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rand_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rand.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
random_r.c Fix signed integer overflow in random_r (bug 17343). 2018-03-20 18:25:24 +00:00
random.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rpmatch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
rshift.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
secure-getenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
seed48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
seed48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setcontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
srand48_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
srand48.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stdlib.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfmon_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfmon.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfrom-skeleton.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfromd.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfromf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strfroml.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan_double.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan_float.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan_main.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan_narrow.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan_wide.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtof_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtof_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtof.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoimax.c
strtol_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtol.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtold_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtold_nan.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtold.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoll_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoul_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoul.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoull_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoull.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
strtoumax.c
sub_n.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
submul_1.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
swapcontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
system.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tens_in_limb.c
test-a64l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-at_quick_exit-race.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-atexit-race-common.c hurd: Fix build 2018-02-04 14:02:36 +01:00
test-atexit-race.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-canon2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-canon.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-cxa_atexit-race.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-dlclose-exit-race-helper.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-dlclose-exit-race.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-on_exit-race.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
testdiv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
testdiv.input
testmb2.c
testmb.c
testrand.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
testsort.c
tst-at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-atexit-common.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-atexit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-atof1.c
tst-atof2.c
tst-bsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-cxa_atexit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-empty-env.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-environ.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-fmtmsg.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-fmtmsg.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-getrandom.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-limits.c Fix a couple of -Wundef warnings. 2014-12-29 23:14:38 -05:00
tst-makecontext2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-makecontext3.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-makecontext-align.c i386: In makecontext, align the stack before calling exit [BZ #22667] 2018-01-04 18:47:35 +01:00
tst-makecontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-on_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-putenv.c
tst-putenvmod.c
tst-qsort2.c stdlib/tst-qsort2.c: Fix off-by-one argc interpretation error 2014-06-20 21:29:33 +01:00
tst-qsort.c
tst-quick_exit.cc Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-rand48-2.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-rand48.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-random2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-random.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-secure-getenv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-setcontext2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-setcontext3.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-setcontext3.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-setcontext.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strfmon_l.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strfrom-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strfrom.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strfrom.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod1i.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod2.c
tst-strtod3.c
tst-strtod4.c Adapt test case data to the changes in the thousands separators 2017-08-12 17:20:24 +02:00
tst-strtod5.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod5i.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod6.c Refactor strtod tests 2016-10-25 17:05:47 -02:00
tst-strtod-nan-locale-main.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod-nan-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod-overflow.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod-round-data Fix strtof decimal rounding close to half least subnormal (bug 18247). 2015-04-10 20:45:30 +00:00
tst-strtod-round-data.h Make strtod raise "inexact" exceptions (bug 19380). 2016-10-28 00:40:23 +00:00
tst-strtod-round-skeleton.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod-round.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod-underflow.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtod.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtol-locale-main.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtol-locale.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-strtol.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
tst-strtoll.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
tst-system.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-thread-quick_exit.cc Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-tininess.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-tls-atexit-lib.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-tls-atexit-nodelete.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-tls-atexit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-unsetenv1.c
tst-width-stdint.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-width.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-xpg-basename.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ucontext.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
udiv_qrnnd.c
Versions Add _Float32 function aliases. 2017-12-07 00:48:31 +00:00
wcstoimax.c
wcstombs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
wcstoumax.c
wctomb.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpg_basename.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00