glibc/sysdeps
Adhemerval Zanella b224637928 Fix powerpc64/power7 memchr for large input sizes
Current optimized powercp64/power7 memchr uses a strategy to check for
p versus align(p+n) (where 'p' is the input char pointer and n the
maximum size to check for the byte) without taking care for possible
overflow on the pointer addition in case of large 'n'.

It was triggered by 3038145ca2 where default rawmemchr (used to
created ppc64 rawmemchr in ifunc selection) now uses memchr (p, c, (size_t)-1)
on its implementation.

This patch fixes it by implement a satured addition where overflows
sets the maximum pointer size to UINTPTR_MAX.

Checked on powerpc64le-linux-gnu.

	[BZ# 20971]
	* sysdeps/powerpc/powerpc64/power7/memchr.S (__memchr): Avoid
	overflow in pointer addition.
	* string/test-memchr.c (do_test): Add an argument to pass as
	the size on memchr.
	(test_main): Add check for SIZE_MAX.
2016-12-16 11:30:20 -02:00
..
aarch64 Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
alpha Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
arm Add getentropy, getrandom, <sys/random.h> [BZ #17252] 2016-12-12 17:28:04 +01:00
generic ld.so: Remove __libc_memalign 2016-11-30 16:23:58 +01:00
gnu Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
hppa Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
i386 Fix x86, x86_64 fmax, fmin sNaN handling, add tests (bug 20947). 2016-12-15 23:52:18 +00:00
ia64 Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
ieee754 Make w_scalbln type-generic 2016-12-16 08:44:19 -02:00
init_array Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
m68k Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
mach Fix hurd __access_noerrno implementation. 2016-11-18 16:49:08 -02:00
microblaze Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
mips Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
nacl Add llogb, llogbf, llogbl. 2016-12-02 01:42:49 +00:00
nios2 Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
nptl Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
posix hurd: fix fcntl visibility 2016-09-18 23:48:55 +02:00
powerpc Fix powerpc64/power7 memchr for large input sizes 2016-12-16 11:30:20 -02:00
pthread Installed-header hygiene (BZ#20366): time.h types. 2016-09-23 08:43:56 -04:00
s390 Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
sh Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
sparc Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
tile Add missing hidden_def (__sigsetjmp). 2016-12-01 20:49:25 +00:00
unix Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
wordsize-32 Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
wordsize-64 Define wordsize.h macros everywhere 2016-11-04 09:37:44 -07:00
x86 Refactor long double information into bits/long-double.h. 2016-12-14 18:27:56 +00:00
x86_64 Fix x86, x86_64 fmax, fmin sNaN handling, add tests (bug 20947). 2016-12-15 23:52:18 +00:00