diff options
| -rw-r--r-- | include/string.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/string.h b/include/string.h index d1bbac2..7e690c1 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -102,6 +102,18 @@ char *__fortify_strncpy(char *__restrict dest, const char *__restrict src, size_ | |||
| 102 | return strncpy(dest, src, n); | 102 | return strncpy(dest, src, n); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | #if defined(_GNU_SOURCE) | ||
| 106 | static inline __attribute__ ((always_inline)) | ||
| 107 | void *__fortify_mempcpy(void *__restrict dest, const void *__restrict src, size_t n) | ||
| 108 | { | ||
| 109 | size_t bos = __builtin_object_size(dest, 0); | ||
| 110 | |||
| 111 | if (n > bos) | ||
| 112 | __builtin_trap(); | ||
| 113 | return mempcpy(dest, src, n); | ||
| 114 | } | ||
| 115 | #endif | ||
| 116 | |||
| 105 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | 117 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
| 106 | static inline __attribute__ ((always_inline)) | 118 | static inline __attribute__ ((always_inline)) |
| 107 | size_t __fortify_strlcat(char *__restrict dest, const char *__restrict src, size_t n) | 119 | size_t __fortify_strlcat(char *__restrict dest, const char *__restrict src, size_t n) |
| @@ -143,6 +155,11 @@ size_t __fortify_strlcpy(char *__restrict dest, const char *__restrict src, size | |||
| 143 | #undef strncpy | 155 | #undef strncpy |
| 144 | #define strncpy(dest, src, n) __fortify_strcpy(dest, src, n) | 156 | #define strncpy(dest, src, n) __fortify_strcpy(dest, src, n) |
| 145 | 157 | ||
| 158 | #if defined(_GNU_SOURCE) | ||
| 159 | #undef mempcpy | ||
| 160 | #define mempcpy(dest, src, n) __fortify_mempcpy(dest, src, n) | ||
| 161 | #endif | ||
| 162 | |||
| 146 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | 163 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
| 147 | #undef strlcat | 164 | #undef strlcat |
| 148 | #define strlcat(dest, src, n) __fortify_strlcat(dest, src, n) | 165 | #define strlcat(dest, src, n) __fortify_strlcat(dest, src, n) |
