source and dest arguments for strcpy cannot overlap, so memmove must be used here. the length is already known from the above loop.
@@ -40,7 +40,7 @@ const char *inet_ntop(int af, const void *restrict a0, char *restrict s, socklen
}
if (max>2) {
buf[best] = buf[best+1] = ':';
- strcpy(buf+best+2, buf+best+max);
+ memmove(buf+best+2, buf+best+max, i-best-max+1);
if (strlen(buf) < l) {
strcpy(s, buf);