| 302 | } |
| 303 | |
| 304 | char * |
| 305 | kcsan_strcpy(char *dst, const char *src) |
| 306 | { |
| 307 | char *save = dst; |
| 308 | |
| 309 | while (1) { |
| 310 | kcsan_access((uintptr_t)src, 1, false, false, __RET_ADDR); |
| 311 | kcsan_access((uintptr_t)dst, 1, true, false, __RET_ADDR); |
| 312 | *dst = *src; |
| 313 | if (*src == '\0') |
| 314 | break; |
| 315 | src++, dst++; |
| 316 | } |
| 317 | |
| 318 | return save; |
| 319 | } |
| 320 | |
| 321 | int |
| 322 | kcsan_strcmp(const char *s1, const char *s2) |
nothing calls this directly
no test coverage detected