From 9626051b5d73fc6206010948f2f5f7fa51efb663 Mon Sep 17 00:00:00 2001 From: sin Date: Wed, 28 Jan 2015 16:16:23 +0000 Subject: Add stpcpy() --- include/string.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/string.h') diff --git a/include/string.h b/include/string.h index e24f63e..f9fcf51 100644 --- a/include/string.h +++ b/include/string.h @@ -41,6 +41,18 @@ void *__fortify_memset(void *dest, int c, size_t n) return memset(dest, c, n); } +static inline __attribute__ ((always_inline)) +char *__fortify_stpcpy(char *__restrict dest, const char *__restrict src) +{ + size_t bos = __builtin_object_size(dest, 0); + + if (bos == (size_t)-1) + return stpcpy(dest, src); + if (strlen(src) + 1 > bos) + __builtin_trap(); + return stpcpy(dest, src); +} + static inline __attribute__ ((always_inline)) char *__fortify_strcat(char *__restrict dest, const char *__restrict src) { @@ -128,6 +140,8 @@ size_t __fortify_strlcpy(char *__restrict dest, const char *__restrict src, size #define memmove(dest, src, n) __fortify_memmove(dest, src, n) #undef memset #define memset(dest, src, n) __fortify_memset(dest, src, n) +#undef stpcpy +#define stpcpy(dest, src) __fortify_stpcpy(dest, src); #undef strcat #define strcat(dest, src) __fortify_strcat(dest, src) #undef strcpy -- cgit v1.3