aboutsummaryrefslogtreecommitdiffstats
path: root/libc/include
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2013-06-29 08:15:25 -0700
committerNick Kralevich <nnk@google.com>2013-06-29 08:16:22 -0700
commita6cde392765eb955cb4be5faa6ee62dcf77e8aa5 (patch)
treec1553a2002af8470615afecb1a2fff9c29c2f916 /libc/include
parent227b47a461b27d746b373feb66001cdddc9ba1db (diff)
downloadandroid_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/include')
-rw-r--r--libc/include/string.h4
-rw-r--r--libc/include/strings.h4
-rw-r--r--libc/include/sys/stat.h6
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