Преглед на файлове

core: safer truncation of hostname using memcpy

(cherry picked from commit aac577a4655ebf09d5cbef3e1a49f72d25ea57d7)
Daniel-Constantin Mierla преди 5 години
родител
ревизия
cd6a3035c1
променени са 1 файла, в които са добавени 4 реда и са изтрити 1 реда
  1. 4 1
      src/core/ip_addr.h

+ 4 - 1
src/core/ip_addr.h

@@ -789,11 +789,14 @@ static inline struct hostent* ip_addr2he(str* name, struct ip_addr* ip)
 	static char* p_aliases[1];
 	static char* p_addr[2];
 	static char address[16];
+	int len;
 
 	p_aliases[0]=0; /* no aliases*/
 	p_addr[1]=0; /* only one address*/
 	p_addr[0]=address;
-	strncpy(hostname, name->s, (name->len<256)?(name->len)+1:256);
+	len = (name->len<255)?name->len:255;
+	memcpy(hostname, name->s, len);
+	hostname[len] = '\0';
 	if (ip->len>16) return 0;
 	memcpy(address, ip->u.addr, ip->len);