summaryrefslogtreecommitdiff
path: root/include/string.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/string.h')
-rw-r--r--include/string.h14
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
56static inline __attribute__ ((always_inline)) 56static inline __attribute__ ((always_inline))
57char *__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
68static inline __attribute__ ((always_inline))
57char *__fortify_strcat(char *__restrict dest, const char *__restrict src) 69char *__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