diff options
| -rw-r--r-- | include/string.h | 2 | ||||
| -rw-r--r-- | tests/test_stpncpy_static_write.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/string.h b/include/string.h index 7987d17..23f598c 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -104,7 +104,7 @@ _FORTIFY_FN(stpncpy) char *stpncpy(char * _FORTIFY_POS0 __d, const char *__s, | |||
| 104 | { | 104 | { |
| 105 | size_t __b = __bos(__d, 0); | 105 | size_t __b = __bos(__d, 0); |
| 106 | 106 | ||
| 107 | if (__n > __b && strlen(__s) + 1 > __b) | 107 | if (__n > __b) |
| 108 | __builtin_trap(); | 108 | __builtin_trap(); |
| 109 | return __orig_stpncpy(__d, __s, __n); | 109 | return __orig_stpncpy(__d, __s, __n); |
| 110 | } | 110 | } |
diff --git a/tests/test_stpncpy_static_write.c b/tests/test_stpncpy_static_write.c index 4bf9092..d4202ba 100644 --- a/tests/test_stpncpy_static_write.c +++ b/tests/test_stpncpy_static_write.c | |||
| @@ -4,7 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | int main(int argc, char** argv) { | 5 | int main(int argc, char** argv) { |
| 6 | char buffer[8] = {0}; | 6 | char buffer[8] = {0}; |
| 7 | stpncpy(buffer, "1234567", 5); | 7 | stpncpy(buffer, "1234567890", 5); |
| 8 | stpncpy(buffer, "1234567890", 8); | ||
| 8 | puts(buffer); | 9 | puts(buffer); |
| 9 | 10 | ||
| 10 | CHK_FAIL_START | 11 | CHK_FAIL_START |
