getnameinfo: return error if buffers are too small

This commit is contained in:
rofl0r 2012-12-17 22:41:51 +01:00
parent ce655fdac8
commit 346474a43b

View File

@ -397,10 +397,13 @@ int pc_getnameinfo(const struct sockaddr *sa, socklen_t salen,
} else { } else {
if(hostlen) { if(hostlen) {
pc_stringfromipv4((unsigned char*) &(SOCKADDR_2(*sa)), ip_buf); pc_stringfromipv4((unsigned char*) &(SOCKADDR_2(*sa)), ip_buf);
strncpy(host, ip_buf, hostlen); if(snprintf(host, hostlen, "%s", ip_buf) >= hostlen)
return EAI_OVERFLOW;
}
if(servlen) {
if(snprintf(serv, servlen, "%d", ntohs(SOCKPORT(*sa))) >= servlen)
return EAI_OVERFLOW;
} }
if(servlen)
snprintf(serv, servlen, "%d", ntohs(SOCKPORT(*sa)));
} }
return ret; return ret;
} }