diff options
author | Nick Kralevich <nnk@google.com> | 2013-06-29 08:15:25 -0700 |
---|---|---|
committer | Nick Kralevich <nnk@google.com> | 2013-06-29 08:16:22 -0700 |
commit | a6cde392765eb955cb4be5faa6ee62dcf77e8aa5 (patch) | |
tree | c1553a2002af8470615afecb1a2fff9c29c2f916 /libc | |
parent | 227b47a461b27d746b373feb66001cdddc9ba1db (diff) | |
download | android_bionic-a6cde392765eb955cb4be5faa6ee62dcf77e8aa5.tar.gz android_bionic-a6cde392765eb955cb4be5faa6ee62dcf77e8aa5.tar.bz2 android_bionic-a6cde392765eb955cb4be5faa6ee62dcf77e8aa5.zip |
More FORTIFY_SOURCE functions under clang
* bzero
* umask
* strlcat
Change-Id: I65065208e0b8b37e10f6a266d5305de8fa9e59fc
Diffstat (limited to 'libc')
-rw-r--r-- | libc/include/string.h | 4 | ||||
-rw-r--r-- | libc/include/strings.h | 4 | ||||
-rw-r--r-- | libc/include/sys/stat.h | 6 |
3 files changed, 8 insertions, 6 deletions
diff --git a/libc/include/string.h b/libc/include/string.h index 2b7d47c40..7801ee987 100644 --- a/libc/include/string.h +++ b/libc/include/string.h @@ -175,7 +175,6 @@ size_t strlcpy(char* __restrict dest, const char* __restrict src, size_t size) { return __strlcpy_chk(dest, src, size, bos); } -#if !defined(__clang__) extern size_t __strlcat_real(char* __restrict, const char* __restrict, size_t) __asm__(__USER_LABEL_PREFIX__ "strlcat"); __errordecl(__strlcat_error, "strlcat called with size bigger than buffer"); @@ -186,6 +185,7 @@ __BIONIC_FORTIFY_INLINE size_t strlcat(char* __restrict dest, const char* __restrict src, size_t size) { size_t bos = __bos(dest); +#if !defined(__clang__) // Compiler doesn't know destination size. Don't call __strlcat_chk if (bos == __BIONIC_FORTIFY_UNKNOWN_SIZE) { return __strlcat_real(dest, src, size); @@ -202,10 +202,10 @@ size_t strlcat(char* __restrict dest, const char* __restrict src, size_t size) { if (__builtin_constant_p(size) && (size > bos)) { __strlcat_error(); } +#endif /* !defined(__clang__) */ return __strlcat_chk(dest, src, size, bos); } -#endif /* !defined(__clang__) */ __BIONIC_FORTIFY_INLINE size_t strlen(const char *s) { diff --git a/libc/include/strings.h b/libc/include/strings.h index faa12a47c..e72798b66 100644 --- a/libc/include/strings.h +++ b/libc/include/strings.h @@ -50,12 +50,12 @@ char *index(const char *, int); int strcasecmp(const char *, const char *); int strncasecmp(const char *, const char *, size_t); -#if defined(__BIONIC_FORTIFY) && !defined(__clang__) +#if defined(__BIONIC_FORTIFY) __BIONIC_FORTIFY_INLINE void bzero (void *s, size_t n) { __builtin___memset_chk(s, '\0', n, __builtin_object_size (s, 0)); } -#endif /* defined(__BIONIC_FORTIFY) && !defined(__clang__) */ +#endif /* defined(__BIONIC_FORTIFY) */ __END_DECLS diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h index c9ad23d95..c7715a3ce 100644 --- a/libc/include/sys/stat.h +++ b/libc/include/sys/stat.h @@ -129,7 +129,7 @@ extern int lstat(const char *, struct stat *); extern int mknod(const char *, mode_t, dev_t); extern mode_t umask(mode_t); -#if defined(__BIONIC_FORTIFY) && !defined(__clang__) +#if defined(__BIONIC_FORTIFY) extern mode_t __umask_chk(mode_t); extern mode_t __umask_real(mode_t) @@ -138,15 +138,17 @@ __errordecl(__umask_invalid_mode, "umask called with invalid mode"); __BIONIC_FORTIFY_INLINE mode_t umask(mode_t mode) { +#if !defined(__clang__) if (__builtin_constant_p(mode)) { if ((mode & 0777) != mode) { __umask_invalid_mode(); } return __umask_real(mode); } +#endif return __umask_chk(mode); } -#endif /* defined(__BIONIC_FORTIFY) && !defined(__clang__) */ +#endif /* defined(__BIONIC_FORTIFY) */ #define stat64 stat |