freebsd-dev/lib/libc/string
Ed Maste 33482dae89 libc: fix undefined behavior from signed overflow in strstr and memmem
unsigned char promotes to int, which can overflow when shifted left by
24 bits or more. this has been reported multiple times but then
forgotten. it's expected to be benign UB, but can trap when built with
explicit overflow catching (ubsan or similar). fix it now.

note that promotion to uint32_t is safe and portable even outside of
the assumptions usually made in musl, since either uint32_t has rank
at least unsigned int, so that no further default promotions happen,
or int is wide enough that the shift can't overflow. this is a
desirable property to have in case someone wants to reuse the code
elsewhere.

musl commit: 593caa456309714402ca4cb77c3770f4c24da9da

Obtained from:	musl
2020-11-19 00:03:15 +00:00
..
bcmp.3
bcmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
bcopy.3
bcopy.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
bstring.3
bzero.3
bzero.c
ffs.3
ffs.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
ffsl.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
ffsll.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
fls.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
flsl.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
flsll.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
index.3
Makefile.inc Document memset_s(3). memset_s(3) is defined in 2018-02-16 05:48:45 +00:00
memccpy.3
memccpy.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
memchr.3
memchr.c clang-format libc string functions imported from musl 2020-11-18 22:01:34 +00:00
memcmp.3
memcmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
memcpy.3 Add notes about overlapping copies. 2017-11-13 17:04:44 +00:00
memcpy.c
memmem.3 libc: Use musl's O(n) memmem and strstr 2017-03-18 00:51:39 +00:00
memmem.c libc: fix undefined behavior from signed overflow in strstr and memmem 2020-11-19 00:03:15 +00:00
memmove.3
memmove.c
memrchr.c
memset_s.c Improve standard compliance for memset_s() and abort_handler_s(). 2017-08-12 15:18:17 +00:00
memset.3 memset.3: better fix previous typo 2020-02-08 21:17:48 +00:00
memset.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
stpcpy.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
stpncpy.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
strcasecmp.3
strcasecmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strcasestr.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strcat.3 Add notes about overlapping copies. 2017-11-13 17:04:44 +00:00
strcat.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strchr.3
strchr.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strchrnul.c Remove "all rights reserved" on files where I have copyright. 2018-05-09 17:06:52 +00:00
strcmp.3
strcmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strcoll.3
strcoll.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
strcpy.3 strcpy.3: Improve legibility and clarity 2018-06-06 20:09:21 +00:00
strcpy.c [PPC64] strcpy optimization 2020-01-15 19:46:01 +00:00
strcspn.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
strdup.3 strdup.3: Slightly canonicalize OOM return/error status 2020-05-05 17:57:04 +00:00
strdup.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strerror.3
strerror.c Fix WITHOUT_NLS build after r342551. 2018-12-28 16:08:49 +00:00
string.3
strlcat.c
strlcpy.3 libc manpages: various improvements from NetBSD 2020-06-14 05:59:30 +00:00
strlcpy.c
strlen.3 Don't put multiple names on a single .Nm line. This fixes apropos(1) 2018-04-17 09:05:46 +00:00
strlen.c Remove "All rights reserved" from my files. 2018-05-10 06:41:08 +00:00
strmode.3
strmode.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strncat.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strncmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strncpy.c [PPC64] strncpy optimization 2020-01-15 19:53:03 +00:00
strndup.c
strnlen.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
strnstr.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strpbrk.3
strpbrk.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strrchr.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strsep.3 strsep.3: don't silently ignore errors 2018-05-28 18:29:15 +00:00
strsep.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strsignal.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strspn.3
strspn.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
strstr.3
strstr.c libc: fix undefined behavior from signed overflow in strstr and memmem 2020-11-19 00:03:15 +00:00
strtok.3 strtok(3): make it easier to find the RETURN VALUES section 2020-06-22 11:03:36 +00:00
strtok.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
strxfrm.3
strxfrm.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
swab.3
swab.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
Symbol.map Implement the memset_s(3) function as specified by the C11 ISO/IEC 2017-03-30 04:57:26 +00:00
timingsafe_bcmp.3
timingsafe_bcmp.c
timingsafe_memcmp.c
wcpcpy.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcpncpy.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcscasecmp.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcscat.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcschr.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcscmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcscoll.3
wcscoll.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcscpy.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcscspn.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsdup.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcslcat.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcslcpy.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcslen.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsncasecmp.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsncat.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsncmp.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcsncpy.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcsnlen.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcspbrk.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsrchr.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsspn.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wcsstr.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcstok.3
wcstok.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcswidth.3
wcswidth.c General further adoption of SPDX licensing ID tags. 2017-11-20 19:49:47 +00:00
wcsxfrm.3
wcsxfrm.c Fix a possible segfault in wcsxfrm(3) and wcsxfrm_l(3). 2019-08-07 20:13:43 +00:00
wmemchr.3
wmemchr.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wmemcmp.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wmemcpy.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wmemmove.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00
wmemset.c libc: further adoption of SPDX licensing ID tags. 2017-11-25 17:12:48 +00:00