diff options
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 778d22a..925e572 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -189,8 +189,15 @@ _FORTIFY_FN(stpncpy) char *stpncpy(char * _FORTIFY_POS0 __d, const char *__s, | |||
| 189 | #if __has_builtin(__builtin___stpncpy_chk) && USE_NATIVE_CHK | 189 | #if __has_builtin(__builtin___stpncpy_chk) && USE_NATIVE_CHK |
| 190 | return __builtin___stpncpy_chk(__d, __s, __n, __fh_bos(__d, 0)); | 190 | return __builtin___stpncpy_chk(__d, __s, __n, __fh_bos(__d, 0)); |
| 191 | #else | 191 | #else |
| 192 | #if 0 | ||
| 193 | // They check overlap across the whole range of the given length, but | ||
| 194 | // the given length is not what will actually be copied, rather it's | ||
| 195 | // the maximum length (if src is shorter, only length of src will be | ||
| 196 | // copied). This triggers false positives and traps where it shouldn't | ||
| 197 | // (e.g. in ICU tests). | ||
| 192 | if (__fh_overlap(__d, __s, __n)) | 198 | if (__fh_overlap(__d, __s, __n)) |
| 193 | __builtin_trap(); | 199 | __builtin_trap(); |
| 200 | #endif | ||
| 194 | 201 | ||
| 195 | __fh_size_t __b = __fh_bos(__d, 0); | 202 | __fh_size_t __b = __fh_bos(__d, 0); |
| 196 | if (__n > __b && strlen(__s) + 1 > __b) | 203 | if (__n > __b && strlen(__s) + 1 > __b) |
| @@ -290,8 +297,15 @@ _FORTIFY_FN(strncpy) char *strncpy(char * _FORTIFY_POS0 __d, | |||
| 290 | #if __has_builtin(__builtin___strncpy_chk) && USE_NATIVE_CHK | 297 | #if __has_builtin(__builtin___strncpy_chk) && USE_NATIVE_CHK |
| 291 | return __builtin___strncpy_chk(__d, __s, __n, __fh_bos(__d, 0)); | 298 | return __builtin___strncpy_chk(__d, __s, __n, __fh_bos(__d, 0)); |
| 292 | #else | 299 | #else |
| 300 | #if 0 | ||
| 301 | // They check overlap across the whole range of the given length, but | ||
| 302 | // the given length is not what will actually be copied, rather it's | ||
| 303 | // the maximum length (if src is shorter, only length of src will be | ||
| 304 | // copied). This triggers false positives and traps where it shouldn't | ||
| 305 | // (e.g. in ICU tests). | ||
| 293 | if (__fh_overlap(__d, __s, __n)) | 306 | if (__fh_overlap(__d, __s, __n)) |
| 294 | __builtin_trap(); | 307 | __builtin_trap(); |
| 308 | #endif | ||
| 295 | 309 | ||
| 296 | __fh_size_t __b = __fh_bos(__d, 0); | 310 | __fh_size_t __b = __fh_bos(__d, 0); |
| 297 | if (__n > __b) | 311 | if (__n > __b) |
