summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorsin2015-01-28 16:16:23 +0000
committersin2015-01-28 16:16:23 +0000
commit9626051b5d73fc6206010948f2f5f7fa51efb663 (patch)
tree24fc2c15d4707c3095e59cb6ed5a812000b90884 /include
parentde7999ee82b87ef262d0601a40169775b8e94285 (diff)
Add stpcpy()
Diffstat (limited to 'include')
-rw-r--r--include/string.h14
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
44static inline __attribute__ ((always_inline)) 44static inline __attribute__ ((always_inline))
45char *__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
56static inline __attribute__ ((always_inline))
45char *__fortify_strcat(char *__restrict dest, const char *__restrict src) 57char *__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