MFC r298351

Avoid a possible heap overflow in our nlm code by limiting the number
of service to the arbitrary value of 256.  Log an appropriate message
that indicates the hard limit.
This commit is contained in:
sbruno 2016-07-22 03:09:47 +00:00
parent 12a626dd41
commit d26ee5186f

View File

@ -1439,6 +1439,12 @@ nlm_register_services(SVCPOOL *pool, int addr_count, char **addrs)
return (EINVAL);
}
if (addr_count < 0 || addr_count > 256 ) {
NLM_ERR("NLM: too many service addresses (%d) given, "
"max 256 - can't start server\n", addr_count);
return (EINVAL);
}
xprts = malloc(addr_count * sizeof(SVCXPRT *), M_NLM, M_WAITOK|M_ZERO);
for (i = 0; i < version_count; i++) {
for (j = 0; j < addr_count; j++) {