glibc/stdlib
Joseph Myers a7f0c5ae41 Fix strtod ("NAN(I)") in Turkish locales (bug 19266).
The implementations of strtod and related functions use
locale-specific conversions to lower case when parsing the contents of
a string NAN(n-char-sequence_opt).  This has the consequence that
NAN(I) is not treated as being of that form (only the initial NAN part
is accepted).  The syntax of n-char-sequence directly maps to the
ASCII letters, digits and underscore as in identifiers, so it is
unambiguous that all ASCII letters must be accepted in all locales.

This patch, relative to a tree with
<https://sourceware.org/ml/libc-alpha/2015-11/msg00258.html> (pending
review) applied and depending on that patch, fixes this problem by
checking directly for ASCII letters.  This will have the side effect
of no longer accepting 'İ' (dotted 'I') inside NAN() in Turkish
locales, which seems appropriate (that letter wouldn't have been
interpreted as having any meaning in the NaN payload anyway, as not
acceptable to strtoull).

Tested for x86_64 and x86.

	[BZ #19266]
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Check directly for
	upper case and lower case letters inside NAN(), not using TOLOWER.
	* stdlib/tst-strtod-nan-locale-main.c: New file.
	* stdlib/tst-strtod-nan-locale.c: Likewise.
	* stdlib/Makefile (tests): Add tst-strtod-nan-locale.
	[$(run-built-tests) = yes] ($(objpfx)tst-strtod-nan-locale.out):
	Depend on $(gen-locales).
	($(objpfx)tst-strtod-nan-locale): Depend on $(libm).
	* wcsmbs/tst-wcstod-nan-locale.c: New file.
	* wcsmbs/Makefile (tests): Add tst-wcstod-nan-locale.
	[$(run-built-tests) = yes] ($(objpfx)tst-wcstod-nan-locale.out):
	Depend on $(gen-locales).
	($(objpfx)tst-wcstod-nan-locale): Depend on $(libm).
2015-11-24 22:21:59 +00:00
..
bits Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sys Update. 2002-07-20 01:14:41 +00:00
a64l.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
abort.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
abs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
add_n.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
addmul_1.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
alloca.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atexit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atof.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atoi.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atol.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bsearch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bug-fmtmsg1.c Fix locking problem in fmtmsg 2012-01-16 09:03:20 -05:00
bug-getcontext.c Fix bug-getcontext test 2012-07-16 18:46:40 +02:00
bug-strtod2.c [BZ #1230] 2005-09-28 06:09:24 +00:00
bug-strtod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
canonicalize.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cmp.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
cxa_at_quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_atexit.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
cxa_finalize.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
cxa_thread_atexit_impl.c Harden tls_dtor_list with pointer mangling [BZ #19018] 2015-10-06 13:22:56 +02:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Depend [BZ #1230] 2005-09-28 06:09:24 +00:00
div.c Convert 29 more function definitions to prototype style (multiple parameters in one K&R parameter declaration). 2015-10-20 11:52:27 +00:00
divmod_1.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
divrem.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
drand48_r.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
drand48-iter.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
drand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
erand48_r.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
erand48.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
errno.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
exit.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fmtmsg.c Use __pthread_setcancelstate in libc.a 2015-09-17 16:38:54 -07:00
fmtmsg.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fpioconst.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fpioconst.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gen-fpioconst.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gen-tst-strtod-round.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getcontext.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
getenv.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
getsubopt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gmp-impl.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
gmp.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
grouping.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
grouping.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
groupingwc.c Update. 2003-06-11 23:22:36 +00:00
inlines.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
isomac.c fix missing ctype.h include 2015-08-06 02:59:52 -04:00
jrand48_r.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
jrand48.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
l64a.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
labs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lcong48_r.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
lcong48.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
ldbl2mpn.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
ldiv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
llabs.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
lldiv.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
longlong.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lrand48_r.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
lrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lshift.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
makecontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile Fix strtod ("NAN(I)") in Turkish locales (bug 19266). 2015-11-24 22:21:59 +00:00
mblen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbstowcs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbtowc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mod_1.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
monetary.h Fix monetary.h comment 2015-05-27 08:07:07 +05:30
mp_clz_tab.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2flt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2ldbl.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
mrand48_r.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
mrand48.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
msort.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mul_1.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
mul_n.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
mul.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
nrand48_r.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
nrand48.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
old_atexit.c Update. 2004-03-10 09:29:17 +00:00
on_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
putenv.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
qsort.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
quick_exit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rand_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rand.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
random_r.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
random.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
rpmatch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rshift.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
secure-getenv.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
seed48_r.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
seed48.c Convert 24 more function definitions to prototype style (array parameters). 2015-10-20 11:51:03 +00:00
setcontext.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
setenv.c Remove GCC version conditionals on -Wmaybe-uninitialized pragmas. 2015-10-27 23:42:20 +00:00
srand48_r.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
srand48.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
stdlib.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strfmon_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strfmon.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtod_l.c Fix strtod ("NAN(I)") in Turkish locales (bug 19266). 2015-11-24 22:21:59 +00:00
strtod.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
strtof_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtof.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoimax.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
strtol_l.c Fix strtol in Turkish locales (bug 19242). 2015-11-23 08:50:53 +00:00
strtol.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
strtold_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtold.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoll_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoul_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoull_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoull.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtoumax.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
sub_n.c Convert miscellaneous function definitions to prototype style. 2015-10-20 21:27:22 +00:00
submul_1.c Convert 69 more function definitions to prototype style (line wrap cases). 2015-10-19 21:23:47 +00:00
swapcontext.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
system.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
tens_in_limb.c * stdlib/Makefile (aux): Add tens_in_limb. 2008-03-08 04:18:31 +00:00
test-a64l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-canon2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-canon.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testdiv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testdiv.input initial import 1995-02-18 01:27:10 +00:00
testmb2.c Update. 2004-02-23 23:30:12 +00:00
testmb.c Update. 1998-04-15 17:02:23 +00:00
testrand.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
testsort.c Update. 2000-12-05 08:17:58 +00:00
tst-atof1.c * stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand 2006-12-11 21:43:56 +00:00
tst-atof2.c [BZ #3673] 2006-12-10 01:11:45 +00:00
tst-bsearch.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-environ.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +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. 2015-01-02 16:29:47 +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. 2015-01-02 16:29:47 +00:00
tst-makecontext3.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-makecontext.c S390: Fix "backtrace() returns infinitely deep stack frames with makecontext()" [BZ #18508]. 2015-07-07 16:11:14 +02:00
tst-putenv.c Update. 2005-01-04 07:48:13 +00:00
tst-putenvmod.c Update. 2005-01-04 07:48:13 +00:00
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 Update. 2003-09-17 18:23:49 +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. 2015-01-02 16:29:47 +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. 2015-01-02 16:29:47 +00:00
tst-setcontext2.c S/390: Fix setcontext/swapcontext which are not restoring sigmask. 2015-03-12 11:08:11 +01:00
tst-setcontext3.c Bug 18125: Call exit after last linked context. 2015-05-08 11:29:38 -04:00
tst-setcontext3.sh Fix stdlib/tst-setcontext3 with dash [BZ#18418] 2015-05-17 08:48:08 -03:00
tst-setcontext.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtod2.c * stdlib/tst-strtod2.c (do_test): Use %tu in fmt string for ptrdiff_t 2007-08-01 03:44:35 +00:00
tst-strtod3.c * stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand 2006-12-11 21:43:56 +00:00
tst-strtod4.c Include errno.h. Change main() to do_test(). Define TEST_FUNCTION. Include test-skeleton.c. (do_test): Check errno and exit(0) if ENOSYS. 2007-01-11 21:51:00 +00:00
tst-strtod5.c * stdlib/strtod_l.c (____STRTOF_INTERNAL): Properly handle -0. 2007-08-03 16:45:47 +00:00
tst-strtod6.c [BZ #15522] strtod ("nan(N)") returning a sNaN in some cases 2013-08-29 12:22:10 +02:00
tst-strtod-nan-locale-main.c Fix strtod ("NAN(I)") in Turkish locales (bug 19266). 2015-11-24 22:21:59 +00:00
tst-strtod-nan-locale.c Fix strtod ("NAN(I)") in Turkish locales (bug 19266). 2015-11-24 22:21:59 +00:00
tst-strtod-overflow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +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.c Fix strtof decimal rounding close to half least subnormal (bug 18247). 2015-04-10 20:45:30 +00:00
tst-strtod-underflow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-strtod.c Convert 703 function definitions to prototype style. 2015-10-16 20:21:49 +00:00
tst-strtol-locale-main.c Fix strtol in Turkish locales (bug 19242). 2015-11-23 08:50:53 +00:00
tst-strtol-locale.c Fix strtol in Turkish locales (bug 19242). 2015-11-23 08:50:53 +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. 2015-01-02 16:29:47 +00:00
tst-tininess.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-tls-atexit-lib.c Remove Linuxism from tst-tls-atexit 2015-07-21 07:14:17 +05:30
tst-tls-atexit-nodelete.c Also use l_tls_dtor_count to decide on object unload (BZ #18657) 2015-07-23 11:16:18 +05:30
tst-tls-atexit.c Also use l_tls_dtor_count to decide on object unload (BZ #18657) 2015-07-23 11:16:18 +05:30
tst-unsetenv1.c * stdlib/Makefile (tests): Add tst-unsetenv1. 2008-12-02 02:27:43 +00:00
tst-xpg-basename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ucontext.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
udiv_qrnnd.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
Versions C++11 thread_local destructors support 2013-02-18 19:08:21 +05:30
wcstoimax.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
wcstombs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoumax.c Moved to csu/errno-loc.c. 2005-12-14 15:06:39 +00:00
wctomb.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xpg_basename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00