glibc/sysdeps/x86_64
Adhemerval Zanella 3daef2c8ee Fix x86_64 memchr for large input sizes
Current optimized memchr for x86_64 does for input arguments pointers
module 64 in range of [49,63] if there is no searchr char in the rest
of 64-byte block a pointer addition which might overflow:

* sysdeps/x86_64/memchr.S

    77          .p2align 4
    78  L(unaligned_no_match):
    79          add     %rcx, %rdx

Add (uintptr_t)s % 16 to n in %rdx.

    80          sub     $16, %rdx
    81          jbe     L(return_null)

This patch fixes by adding a saturated math that sets a maximum pointer
value if it overflows (UINTPTR_MAX).

Checked on x86_64-linux-gnu and powerpc64-linux-gnu.

	[BZ# 19387]
	* sysdeps/x86_64/memchr.S (memchr): Avoid overflow in pointer
	addition.
	* string/test-memchr.c (do_test): Remove alignment limitation.
	(test_main): Add test that trigger BZ# 19387.
2016-12-27 10:50:41 -02:00
..
64
fpu Fix x86, x86_64 fmax, fmin sNaN handling, add tests (bug 20947). 2016-12-15 23:52:18 +00:00
multiarch Require binutils 2.24 to build x86-64 glibc [BZ #20139] 2016-07-01 06:03:05 -07:00
nptl Remove cached PID/TID in clone 2016-11-24 19:38:51 -02:00
x32
____longjmp_chk.S
__longjmp.S
_mcount.S
abort-instr.h
add_n.S
addmul_1.S
atomic-machine.h
backtrace.c
bsd-_setjmp.S
bsd-setjmp.S
bzero.S
configure Require binutils 2.24 to build x86-64 glibc [BZ #20139] 2016-07-01 06:03:05 -07:00
configure.ac Require binutils 2.24 to build x86-64 glibc [BZ #20139] 2016-07-01 06:03:05 -07:00
crti.S
crtn.S
dl-irel.h
dl-lookupcfg.h
dl-machine.h Check IFUNC definition in unrelocated shared library [BZ #20019] 2016-10-28 09:12:15 -07:00
dl-procinfo.c
dl-runtime.c
dl-tls.h elf: Consolidate machine-agnostic DTV definitions in <dl-dtv.h> 2016-06-20 14:31:40 +02:00
dl-tlsdesc.h
dl-tlsdesc.S x86-64: Properly align stack in _dl_tlsdesc_dynamic [BZ #20309] 2016-07-12 06:30:08 -07:00
dl-trampoline.h X86-64: Add _dl_runtime_resolve_avx[512]_{opt|slow} [BZ #20508] 2016-09-06 08:51:07 -07:00
dl-trampoline.S X86-64: Add _dl_runtime_resolve_avx[512]_{opt|slow} [BZ #20508] 2016-09-06 08:51:07 -07:00
ffs.c
ffsll.c
hp-timing.h
htonl.S
ifuncmain8.c
ifuncmod8.c Do not stack-protect ifunc resolvers [BZ #7065] 2016-12-26 10:08:41 +01:00
Implies
jmpbuf-offsets.h
jmpbuf-unwind.h
l10nflist.c
ldbl2mpn.c
ldsodefs.h
link-defines.sym
locale-defines.sym
localplt.data ld.so: Remove __libc_memalign 2016-11-30 16:23:58 +01:00
lshift.S
machine-gmon.h
Makefile x86_64: tst-quad1pie, tst-quad2pie: compile with -fPIE [BZ #7065] 2016-12-21 12:04:12 +01:00
memchr.S Fix x86_64 memchr for large input sizes 2016-12-27 10:50:41 -02:00
memcmp.S
memcopy.h X86-64: Add dummy memcopy.h and wordcopy.c 2016-06-09 04:38:34 -07:00
memcpy_chk.S x86_64: fix static build of __memcpy_chk for compilers defaulting to PIC/PIE 2016-11-24 16:56:26 +01:00
memcpy.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
memmove_chk.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
memmove.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
mempcpy_chk.S
mempcpy.S X86-64: Remove previous default/SSE2/AVX2 memcpy/memmove 2016-06-08 13:58:08 -07:00
memrchr.S
memset_chk.S
memset.S X86-64: Remove the previous SSE2/AVX2 memsets 2016-06-08 13:56:14 -07:00
memusage.h
mp_clz_tab.c
mul_1.S
preconfigure
preconfigure.ac
rawmemchr.S
rshift.S
sched_cpucount.c
setjmp.S
stack-aliasing.h
stackguard-macros.h
stackinfo.h
start.S Always indirect branch to __libc_start_main via GOT 2016-06-09 04:43:31 -07:00
stpcpy.S
strcasecmp_l-nonascii.c
strcasecmp_l.S
strcasecmp.S
strcat.S
strchr.S
strchrnul.S
strcmp.S
strcpy.S
strcspn.S
strlen.S
strncase_l-nonascii.c
strncase_l.S
strncase.S
strncmp.S
strnlen.S
strpbrk.S
strrchr.S
strspn.S
strtok_r.S
strtok.S
sub_n.S
submul_1.S
sysdep.h X86_64: Don't use PLT nor GOT in static archives [BZ #20750] 2016-11-28 09:45:07 -08:00
tls-macros.h
tlsdesc.c
tlsdesc.sym
tst-audit3.c
tst-audit4-aux.c
tst-audit4.c
tst-audit5.c
tst-audit6.c
tst-audit7.c
tst-audit10-aux.c
tst-audit10.c
tst-audit.h
tst-auditmod3a.c
tst-auditmod3b.c
tst-auditmod4a.c
tst-auditmod4b.c
tst-auditmod5a.c
tst-auditmod5b.c
tst-auditmod6a.c
tst-auditmod6b.c
tst-auditmod6c.c
tst-auditmod7a.c
tst-auditmod7b.c
tst-auditmod10a.c
tst-auditmod10b.c
tst-mallocalign1.c
tst-quad1.c
tst-quad1pie.c
tst-quad2.c
tst-quad2pie.c
tst-quadmod1.S
tst-quadmod1pie.S
tst-quadmod2.S
tst-quadmod2pie.S
tst-split-dynreloc.c
tst-split-dynreloc.lds
tst-stack-align.h
Versions
wcschr.S
wcscmp.S
wcslen.S
wcsrchr.S
wordcopy.c X86-64: Add dummy memcopy.h and wordcopy.c 2016-06-09 04:38:34 -07:00