Browse Source

fix undefined strcpy call in inet_ntop

source and dest arguments for strcpy cannot overlap, so memmove must
be used here. the length is already known from the above loop.
Rich Felker 11 years ago
parent
commit
f9dd79c8d1
1 changed files with 1 additions and 1 deletions
  1. 1 1
      src/network/inet_ntop.c

+ 1 - 1
src/network/inet_ntop.c

@@ -40,7 +40,7 @@ const char *inet_ntop(int af, const void *restrict a0, char *restrict s, socklen
 		}
 		}
 		if (max>2) {
 		if (max>2) {
 			buf[best] = buf[best+1] = ':';
 			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) {
 		if (strlen(buf) < l) {
 			strcpy(s, buf);
 			strcpy(s, buf);