diff options
| author | sin | 2015-01-28 16:16:23 +0000 |
|---|---|---|
| committer | sin | 2015-01-28 16:16:23 +0000 |
| commit | 9626051b5d73fc6206010948f2f5f7fa51efb663 (patch) | |
| tree | 24fc2c15d4707c3095e59cb6ed5a812000b90884 /include | |
| parent | de7999ee82b87ef262d0601a40169775b8e94285 (diff) | |
Add stpcpy()
Diffstat (limited to 'include')
| -rw-r--r-- | include/string.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/string.h b/include/string.h index e24f63e..f9fcf51 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -42,6 +42,18 @@ void *__fortify_memset(void *dest, int c, size_t n) | |||
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | static inline __attribute__ ((always_inline)) | 44 | static inline __attribute__ ((always_inline)) |
| 45 | char *__fortify_stpcpy(char *__restrict dest, const char *__restrict src) | ||
| 46 | { | ||
| 47 | size_t bos = __builtin_object_size(dest, 0); | ||
| 48 | |||
| 49 | if (bos == (size_t)-1) | ||
| 50 | return stpcpy(dest, src); | ||
| 51 | if (strlen(src) + 1 > bos) | ||
| 52 | __builtin_trap(); | ||
| 53 | return stpcpy(dest, src); | ||
| 54 | } | ||
| 55 | |||
| 56 | static inline __attribute__ ((always_inline)) | ||
| 45 | char *__fortify_strcat(char *__restrict dest, const char *__restrict src) | 57 | char *__fortify_strcat(char *__restrict dest, const char *__restrict src) |
| 46 | { | 58 | { |
| 47 | size_t bos = __builtin_object_size(dest, 0); | 59 | size_t bos = __builtin_object_size(dest, 0); |
| @@ -128,6 +140,8 @@ size_t __fortify_strlcpy(char *__restrict dest, const char *__restrict src, size | |||
| 128 | #define memmove(dest, src, n) __fortify_memmove(dest, src, n) | 140 | #define memmove(dest, src, n) __fortify_memmove(dest, src, n) |
| 129 | #undef memset | 141 | #undef memset |
| 130 | #define memset(dest, src, n) __fortify_memset(dest, src, n) | 142 | #define memset(dest, src, n) __fortify_memset(dest, src, n) |
| 143 | #undef stpcpy | ||
| 144 | #define stpcpy(dest, src) __fortify_stpcpy(dest, src); | ||
| 131 | #undef strcat | 145 | #undef strcat |
| 132 | #define strcat(dest, src) __fortify_strcat(dest, src) | 146 | #define strcat(dest, src) __fortify_strcat(dest, src) |
| 133 | #undef strcpy | 147 | #undef strcpy |
