Parcourir la 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 il y a 11 ans
Parent
commit
f9dd79c8d1
1 fichiers modifiés avec 1 ajouts et 1 suppressions
  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) {
 			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);