diff options
| author | sin | 2015-01-28 16:21:38 +0000 |
|---|---|---|
| committer | sin | 2015-01-28 16:21:38 +0000 |
| commit | 013d07a11c796651404a841db9179e3fda086b5f (patch) | |
| tree | 465d10872a77a13b0351db138503665133f23c40 /include | |
| parent | 9626051b5d73fc6206010948f2f5f7fa51efb663 (diff) | |
Add stpncpy()
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 f9fcf51..cee84d4 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -54,6 +54,18 @@ char *__fortify_stpcpy(char *__restrict dest, const char *__restrict src) | |||
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | static inline __attribute__ ((always_inline)) | 56 | static inline __attribute__ ((always_inline)) |
| 57 | char *__fortify_stpncpy(char *__restrict dest, const char *__restrict src, size_t n) | ||
| 58 | { | ||
| 59 | size_t bos = __builtin_object_size(dest, 0); | ||
| 60 | |||
| 61 | if (bos == (size_t)-1) | ||
| 62 | return stpcpy(dest, src); | ||
| 63 | if (__builtin_constant_p(n) && n > bos) | ||
| 64 | __builtin_trap(); | ||
| 65 | return stpncpy(dest, src, n); | ||
| 66 | } | ||
| 67 | |||
| 68 | static inline __attribute__ ((always_inline)) | ||
| 57 | char *__fortify_strcat(char *__restrict dest, const char *__restrict src) | 69 | char *__fortify_strcat(char *__restrict dest, const char *__restrict src) |
| 58 | { | 70 | { |
| 59 | size_t bos = __builtin_object_size(dest, 0); | 71 | size_t bos = __builtin_object_size(dest, 0); |
| @@ -142,6 +154,8 @@ size_t __fortify_strlcpy(char *__restrict dest, const char *__restrict src, size | |||
| 142 | #define memset(dest, src, n) __fortify_memset(dest, src, n) | 154 | #define memset(dest, src, n) __fortify_memset(dest, src, n) |
| 143 | #undef stpcpy | 155 | #undef stpcpy |
| 144 | #define stpcpy(dest, src) __fortify_stpcpy(dest, src); | 156 | #define stpcpy(dest, src) __fortify_stpcpy(dest, src); |
| 157 | #undef stpncpy | ||
| 158 | #define stpncpy(dest, src, n) __fortify_stpncpy(dest, src, n); | ||
| 145 | #undef strcat | 159 | #undef strcat |
| 146 | #define strcat(dest, src) __fortify_strcat(dest, src) | 160 | #define strcat(dest, src) __fortify_strcat(dest, src) |
| 147 | #undef strcpy | 161 | #undef strcpy |
