summaryrefslogtreecommitdiff
path: root/include/strings.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/strings.h')
-rw-r--r--include/strings.h13
1 files changed, 5 insertions, 8 deletions
diff --git a/include/strings.h b/include/strings.h
index 4e0c194..b5f1f5b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -4,6 +4,7 @@
4#include_next <strings.h> 4#include_next <strings.h>
5 5
6#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0 6#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0
7#include "fortify-headers.h"
7 8
8#ifdef __cplusplus 9#ifdef __cplusplus
9extern "C" { 10extern "C" {
@@ -14,27 +15,23 @@ extern "C" {
14 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) 15 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
15#undef bcopy 16#undef bcopy
16#undef bzero 17#undef bzero
17__typeof__(bcopy) __bcopy_orig __asm__(__USER_LABEL_PREFIX__ "bcopy"); 18fortify_fn(bcopy) void bcopy(const void *src, void *dst, size_t n)
18extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
19void bcopy(const void *src, void *dst, size_t n)
20{ 19{
21 size_t bos_dst = __builtin_object_size(dst, 0); 20 size_t bos_dst = __builtin_object_size(dst, 0);
22 size_t bos_src = __builtin_object_size(src, 0); 21 size_t bos_src = __builtin_object_size(src, 0);
23 22
24 if (n > bos_dst || n > bos_src) 23 if (n > bos_dst || n > bos_src)
25 __builtin_trap(); 24 __builtin_trap();
26 return __bcopy_orig(src, dst, n); 25 return __orig_bcopy(src, dst, n);
27} 26}
28 27
29__typeof__(bzero) __bzero_orig __asm__(__USER_LABEL_PREFIX__ "bzero"); 28fortify_fn(bzero) void bzero(void *src, size_t n)
30extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__))
31void bzero(void *src, size_t n)
32{ 29{
33 size_t bos = __builtin_object_size(src, 0); 30 size_t bos = __builtin_object_size(src, 0);
34 31
35 if (n > bos) 32 if (n > bos)
36 __builtin_trap(); 33 __builtin_trap();
37 return __bzero_orig(src, n); 34 return __orig_bzero(src, n);
38} 35}
39#endif 36#endif
40 37