diff options
Diffstat (limited to 'include/strings.h')
| -rw-r--r-- | include/strings.h | 13 |
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 |
| 9 | extern "C" { | 10 | extern "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"); | 18 | fortify_fn(bcopy) void bcopy(const void *src, void *dst, size_t n) |
| 18 | extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__)) | ||
| 19 | void 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"); | 28 | fortify_fn(bzero) void bzero(void *src, size_t n) |
| 30 | extern __inline __attribute__((__always_inline__,__gnu_inline__,__artificial__)) | ||
| 31 | void 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 | ||
