diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/string.h | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/include/string.h b/include/string.h index c9a82b7..d1bbac2 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -10,9 +10,7 @@ void *__fortify_memcpy(void *__restrict dest, const void *__restrict src, size_t | |||
| 10 | { | 10 | { |
| 11 | size_t bos = __builtin_object_size(dest, 0); | 11 | size_t bos = __builtin_object_size(dest, 0); |
| 12 | 12 | ||
| 13 | if (bos == (size_t)-1) | 13 | if (n > bos) |
| 14 | return memcpy(dest, src, n); | ||
| 15 | if (__builtin_constant_p(n) && n > bos) | ||
| 16 | __builtin_trap(); | 14 | __builtin_trap(); |
| 17 | return memcpy(dest, src, n); | 15 | return memcpy(dest, src, n); |
| 18 | } | 16 | } |
| @@ -22,9 +20,7 @@ void *__fortify_memmove(void *__restrict dest, const void *__restrict src, size_ | |||
| 22 | { | 20 | { |
| 23 | size_t bos = __builtin_object_size(dest, 0); | 21 | size_t bos = __builtin_object_size(dest, 0); |
| 24 | 22 | ||
| 25 | if (bos == (size_t)-1) | 23 | if (n > bos) |
| 26 | return memmove(dest, src, n); | ||
| 27 | if (__builtin_constant_p(n) && n > bos) | ||
| 28 | __builtin_trap(); | 24 | __builtin_trap(); |
| 29 | return memmove(dest, src, n); | 25 | return memmove(dest, src, n); |
| 30 | } | 26 | } |
| @@ -34,9 +30,7 @@ void *__fortify_memset(void *dest, int c, size_t n) | |||
| 34 | { | 30 | { |
| 35 | size_t bos = __builtin_object_size(dest, 0); | 31 | size_t bos = __builtin_object_size(dest, 0); |
| 36 | 32 | ||
| 37 | if (bos == (size_t)-1) | 33 | if (n > bos) |
| 38 | return memset(dest, c, n); | ||
| 39 | if (__builtin_constant_p(n) && n > bos) | ||
| 40 | __builtin_trap(); | 34 | __builtin_trap(); |
| 41 | return memset(dest, c, n); | 35 | return memset(dest, c, n); |
| 42 | } | 36 | } |
| @@ -46,8 +40,6 @@ char *__fortify_stpcpy(char *__restrict dest, const char *__restrict src) | |||
| 46 | { | 40 | { |
| 47 | size_t bos = __builtin_object_size(dest, 0); | 41 | size_t bos = __builtin_object_size(dest, 0); |
| 48 | 42 | ||
| 49 | if (bos == (size_t)-1) | ||
| 50 | return stpcpy(dest, src); | ||
| 51 | if (strlen(src) + 1 > bos) | 43 | if (strlen(src) + 1 > bos) |
| 52 | __builtin_trap(); | 44 | __builtin_trap(); |
| 53 | return stpcpy(dest, src); | 45 | return stpcpy(dest, src); |
| @@ -58,9 +50,7 @@ char *__fortify_stpncpy(char *__restrict dest, const char *__restrict src, size_ | |||
| 58 | { | 50 | { |
| 59 | size_t bos = __builtin_object_size(dest, 0); | 51 | size_t bos = __builtin_object_size(dest, 0); |
| 60 | 52 | ||
| 61 | if (bos == (size_t)-1) | 53 | if (n > bos) |
| 62 | return stpcpy(dest, src); | ||
| 63 | if (__builtin_constant_p(n) && n > bos) | ||
| 64 | __builtin_trap(); | 54 | __builtin_trap(); |
| 65 | return stpncpy(dest, src, n); | 55 | return stpncpy(dest, src, n); |
| 66 | } | 56 | } |
| @@ -70,8 +60,6 @@ char *__fortify_strcat(char *__restrict dest, const char *__restrict src) | |||
| 70 | { | 60 | { |
| 71 | size_t bos = __builtin_object_size(dest, 0); | 61 | size_t bos = __builtin_object_size(dest, 0); |
| 72 | 62 | ||
| 73 | if (bos == (size_t)-1) | ||
| 74 | return strcat(dest, src); | ||
| 75 | if (strlen(src) + strlen(dest) + 1 > bos) | 63 | if (strlen(src) + strlen(dest) + 1 > bos) |
| 76 | __builtin_trap(); | 64 | __builtin_trap(); |
| 77 | return strcat(dest, src); | 65 | return strcat(dest, src); |
| @@ -82,8 +70,6 @@ char *__fortify_strcpy(char *__restrict dest, const char *__restrict src) | |||
| 82 | { | 70 | { |
| 83 | size_t bos = __builtin_object_size(dest, 0); | 71 | size_t bos = __builtin_object_size(dest, 0); |
| 84 | 72 | ||
| 85 | if (bos == (size_t)-1) | ||
| 86 | return strcpy(dest, src); | ||
| 87 | if (strlen(src) + 1 > bos) | 73 | if (strlen(src) + 1 > bos) |
| 88 | __builtin_trap(); | 74 | __builtin_trap(); |
| 89 | return strcpy(dest, src); | 75 | return strcpy(dest, src); |
| @@ -95,9 +81,7 @@ char *__fortify_strncat(char *__restrict dest, const char *__restrict src, size_ | |||
| 95 | size_t bos = __builtin_object_size(dest, 0); | 81 | size_t bos = __builtin_object_size(dest, 0); |
| 96 | size_t slen, dlen; | 82 | size_t slen, dlen; |
| 97 | 83 | ||
| 98 | if (bos == (size_t)-1) | 84 | if (n > bos) { |
| 99 | return strncat(dest, src, n); | ||
| 100 | if (__builtin_constant_p(n) && n > bos) { | ||
| 101 | slen = strlen(src); | 85 | slen = strlen(src); |
| 102 | dlen = strlen(dest); | 86 | dlen = strlen(dest); |
| 103 | if (slen > n) | 87 | if (slen > n) |
| @@ -113,9 +97,7 @@ char *__fortify_strncpy(char *__restrict dest, const char *__restrict src, size_ | |||
| 113 | { | 97 | { |
| 114 | size_t bos = __builtin_object_size(dest, 0); | 98 | size_t bos = __builtin_object_size(dest, 0); |
| 115 | 99 | ||
| 116 | if (bos == (size_t)-1) | 100 | if (n > bos) |
| 117 | return strncpy(dest, src, n); | ||
| 118 | if (__builtin_constant_p(n) && n > bos) | ||
| 119 | __builtin_trap(); | 101 | __builtin_trap(); |
| 120 | return strncpy(dest, src, n); | 102 | return strncpy(dest, src, n); |
| 121 | } | 103 | } |
| @@ -126,9 +108,7 @@ size_t __fortify_strlcat(char *__restrict dest, const char *__restrict src, size | |||
| 126 | { | 108 | { |
| 127 | size_t bos = __builtin_object_size(dest, 0); | 109 | size_t bos = __builtin_object_size(dest, 0); |
| 128 | 110 | ||
| 129 | if (bos == (size_t)-1) | 111 | if (n > bos) |
| 130 | return strlcat(dest, src, n); | ||
| 131 | if (__builtin_constant_p(n) && n > bos) | ||
| 132 | __builtin_trap(); | 112 | __builtin_trap(); |
| 133 | return strlcat(dest, src, n); | 113 | return strlcat(dest, src, n); |
| 134 | } | 114 | } |
| @@ -138,9 +118,7 @@ size_t __fortify_strlcpy(char *__restrict dest, const char *__restrict src, size | |||
| 138 | { | 118 | { |
| 139 | size_t bos = __builtin_object_size(dest, 0); | 119 | size_t bos = __builtin_object_size(dest, 0); |
| 140 | 120 | ||
| 141 | if (bos == (size_t)-1) | 121 | if (n > bos) |
| 142 | return strlcpy(dest, src, n); | ||
| 143 | if (__builtin_constant_p(n) && n > bos) | ||
| 144 | __builtin_trap(); | 122 | __builtin_trap(); |
| 145 | return strlcpy(dest, src, n); | 123 | return strlcpy(dest, src, n); |
| 146 | } | 124 | } |
