bionic/libc/include
Nick Kralevich 16d1af167f libc: add limited FORTIFY_SOURCE support for clang
In 829c089f83, we disabled all
FORTIFY_SOURCE support when compiling under clang. At the time,
we didn't have proper test cases, and couldn't easily create targeted
clang tests.

This change re-enables FORTIFY_SOURCE support under clang for a
limited set of functions, where we have explicit unittests available.
The functions are:

* memcpy
* memmove
* strcpy
* strncpy
* strcat
* strncat
* memset
* strlen (with modifications)
* strchr (with modifications)
* strrchr (with modifications)

It may be possible, in the future, to enable other functions. However,
I need to write unittests first.

For strlen, strchr, and strrchr, clang unconditionally calls the
fortified version of the relevant function. If it doesn't know the
size of the buffer it's dealing with, it passes in ((size_t) -1),
which is the largest possible size_t.

I added two new clang specific unittest files, primarily copied
from fortify?_test.cpp.

I've also rebuild the entire system with these changes, and didn't
observe any obvious problems.

Change-Id: If12a15089bb0ffe93824b485290d05b14355fcaa
2013-06-18 12:14:20 -07:00
..
android libc: Add <android/api-level.h> 2010-12-06 12:05:11 +01:00
arpa Upgrade more functions to the current upstream NetBSD copy. 2012-10-23 12:29:53 -07:00
net Update the kernel headers to match external/kernel-headers. 2012-09-12 12:30:22 -07:00
netinet Ensure header files using __BEGIN_DECLS include sys/cdefs.h. 2013-06-05 17:58:08 -07:00
netpacket auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sys libc: add limited FORTIFY_SOURCE support for clang 2013-06-18 12:14:20 -07:00
alloca.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
ar.h New additions/bug fixes required/found when porting perf. 2012-03-20 12:54:55 -07:00
assert.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
byteswap.h Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64. 2010-09-26 11:26:53 -07:00
ctype.h Import change from ctype.h revision 1.20 from openbsd 2010-01-15 15:57:02 -08:00
dirent.h libc: Fix alphasort() signature (and implementation). 2012-10-29 07:44:27 -07:00
dlfcn.h fix prototype of dladdr 2011-09-28 12:17:34 -07:00
elf.h libc: add getauxval() 2013-01-11 16:44:15 -08:00
endian.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
err.h Add more __restricts, clean up __format__ attributes. 2013-05-14 16:08:43 -07:00
errno.h Reduce the exposure of the __set_errno implementation detail. 2012-11-30 12:05:18 -08:00
fcntl.h libc: add limited FORTIFY_SOURCE support for clang 2013-06-18 12:14:20 -07:00
features.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
fnmatch.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
fts.h Add fts, err, and sys/queue for grep 2010-01-15 15:57:02 -08:00
ftw.h libc: add ftw / nftw functions 2012-09-13 16:54:57 -07:00
getopt.h libc: tag missing functions in system headers. 2010-10-09 17:56:55 +02:00
grp.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
inttypes.h Remove compiler warnings when building Bionic. 2010-06-22 17:51:41 -07:00
lastlog.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
libgen.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
limits.h LONG_LONG_MIN/MAX: Move declarations to <limits.h> 2012-10-15 18:52:55 +02:00
link.h Add link.h for all platforms with dl_phdr_info 2012-08-17 12:44:23 -07:00
locale.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
malloc.h Fix declaration of malloc_usable_size() 2013-05-23 10:02:02 +02:00
memory.h Fix <memory.h> to be a synonym for <string.h> like in glibc. 2013-02-22 11:11:48 -08:00
mntent.h Ensure header files using __BEGIN_DECLS include sys/cdefs.h. 2013-06-05 17:58:08 -07:00
netdb.h Update the kernel headers to match external/kernel-headers. 2012-09-12 12:30:22 -07:00
nsswitch.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
pathconf.h libc: Add missing C++ guards to <pathconf.h> 2010-09-27 17:27:14 +02:00
paths.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
poll.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
pthread.h Fix pthreads functions that should return ESRCH. 2013-02-19 12:21:41 -08:00
pwd.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
regex.h Import regex from OpenBSD 2010-01-15 15:01:44 -08:00
resolv.h libc: remove private declarations from <time.h> and <resolv.h> 2012-01-13 14:24:08 +01:00
sched.h Update MS_ mount flags, define unshare() syscall. 2012-08-14 12:09:25 -07:00
search.h Remove (near-)duplicate definitions of size_t and ssize_t. 2012-11-29 17:25:23 -08:00
semaphore.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
setjmp.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sgtty.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sha1.h Upgrade more functions to the current upstream NetBSD copy. 2012-10-23 12:29:53 -07:00
signal.h update signal.h to be C90 compatable 2013-06-05 18:05:36 -07:00
stdint.h Ensure that <stdint.h> defines SIZE_MAX and friends. 2013-06-13 16:02:53 -07:00
stdio.h libc: add limited FORTIFY_SOURCE support for clang 2013-06-18 12:14:20 -07:00
stdlib.h Remove useless #defines and incorrect claims from header files. 2012-10-01 15:12:40 -07:00
string.h libc: add limited FORTIFY_SOURCE support for clang 2013-06-18 12:14:20 -07:00
strings.h libc: add limited FORTIFY_SOURCE support for clang 2013-06-18 12:14:20 -07:00
syslog.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
termio.h libc: Add missing <termio.h> header 2010-06-11 14:39:39 -07:00
termios.h termios: add tcdrain 2012-09-04 14:11:28 +02:00
time64.h libc: allow usage of time64.h from cpp code 2009-11-23 16:25:32 -05:00
time.h libc: remove obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR 2013-05-14 14:43:59 -07:00
unistd.h unistd.h: don't include sys/capability.h 2013-03-01 10:10:55 -08:00
util.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
utime.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
utmp.h libc: remove C++ comments from public headers. 2010-09-27 17:35:26 +02:00
wchar.h Ensure that <stdint.h> defines SIZE_MAX and friends. 2013-06-13 16:02:53 -07:00
wctype.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00