if (strlen(tmpserv) > servlen)
return EAI_MEMORY;
else
- strcpy(serv, tmpserv);
+ strlcpy(serv, tmpserv, servlen);
}
if (host) {
if (flags & NI_NUMERICHOST) {
- if (strlen(inet_ntoa(sin->sin_addr)) > hostlen)
+ if (strlen(inet_ntoa(sin->sin_addr)) >= hostlen)
return EAI_MEMORY;
- strcpy(host, inet_ntoa(sin->sin_addr));
+ strlcpy(host, inet_ntoa(sin->sin_addr), hostlen);
return 0;
} else {
hp = gethostbyaddr((char *)&sin->sin_addr,
if (hp == NULL)
return EAI_NODATA;
- if (strlen(hp->h_name) > hostlen)
+ if (strlen(hp->h_name) >= hostlen)
return EAI_MEMORY;
- strcpy(host, hp->h_name);
+ strlcpy(host, hp->h_name, hostlen);
return 0;
}
}