| 81 | } |
| 82 | |
| 83 | static void test_strncat(void **state) |
| 84 | { |
| 85 | static const char str[] = "Hello "; |
| 86 | size_t len = __builtin_strlen(str); |
| 87 | static const char src[] = "World"; |
| 88 | size_t src_len = __builtin_strlen(src); |
| 89 | static const char expected[] = "Hello World"; |
| 90 | size_t expected_len = __builtin_strlen(expected); |
| 91 | char dst[100]; |
| 92 | char *ret; |
| 93 | |
| 94 | /* n larger than src len */ |
| 95 | memcpy(dst, str, len + 1); |
| 96 | memset(dst + len + 1, 0xee, sizeof(dst) - len - 1); |
| 97 | ret = strncat(dst, src, src_len + 5); |
| 98 | assert_ptr_equal(dst, ret); |
| 99 | assert_memory_equal(expected, dst, expected_len + 1); |
| 100 | |
| 101 | /* n smaller than src len */ |
| 102 | memcpy(dst, str, len + 1); |
| 103 | memset(dst + len + 1, 0xee, sizeof(dst) - len - 1); |
| 104 | ret = strncat(dst, src, src_len - 2); |
| 105 | assert_ptr_equal(dst, ret); |
| 106 | assert_memory_equal("Hello Wor", dst, expected_len - 2 + 1); |
| 107 | |
| 108 | /* n is 0 */ |
| 109 | memcpy(dst, str, len + 1); |
| 110 | memset(dst + len + 1, 0xee, sizeof(dst) - len - 1); |
| 111 | ret = strncat(dst, src, 0); |
| 112 | assert_ptr_equal(dst, ret); |
| 113 | assert_memory_equal(str, dst, len + 1); |
| 114 | } |
| 115 | |
| 116 | static void test_skip_atoi(void **state) |
| 117 | { |