fix a long standing underallocation bug

This commit is contained in:
Russ Dill 2003-12-24 19:57:13 +00:00
parent a8992635b1
commit d242e49c89

View File

@ -146,8 +146,11 @@ static char **fill_envp(struct dhcpMessage *packet)
num_options = 0; num_options = 0;
else { else {
for (i = 0; dhcp_options[i].code; i++) for (i = 0; dhcp_options[i].code; i++)
if (get_option(packet, dhcp_options[i].code)) if (get_option(packet, dhcp_options[i].code)) {
num_options++; num_options++;
if (dhcp_options[i].code == DHCP_SUBNET)
num_options++; /* for mton */
}
if (packet->siaddr) num_options++; if (packet->siaddr) num_options++;
if ((temp = get_option(packet, DHCP_OPTION_OVER))) if ((temp = get_option(packet, DHCP_OPTION_OVER)))
over = *temp; over = *temp;
@ -194,7 +197,7 @@ static char **fill_envp(struct dhcpMessage *packet)
/* watch out for invalid packets */ /* watch out for invalid packets */
packet->sname[sizeof(packet->sname) - 1] = '\0'; packet->sname[sizeof(packet->sname) - 1] = '\0';
asprintf(&envp[j++], "sname=%s", packet->sname); asprintf(&envp[j++], "sname=%s", packet->sname);
} }
return envp; return envp;
} }