Commit a2bc254b authored by Simon Kelley's avatar Simon Kelley

Check return-code of inet_pton when parsing DHCPv4 options.

parent a7b27e84
...@@ -56,6 +56,11 @@ version 2.76 ...@@ -56,6 +56,11 @@ version 2.76
Add --tftp-mtu option. Thanks to Patrick McLean for the Add --tftp-mtu option. Thanks to Patrick McLean for the
initial patch. initial patch.
Check return-code of inet_pton() when parsing dhcp-option.
Bad addresses could fail to generate errors and result in
garbage dhcp-options being sent. Thanks to Marc Branchaud
for spotting this.
version 2.75 version 2.75
Fix reversion on 2.74 which caused 100% CPU use when a Fix reversion on 2.74 which caused 100% CPU use when a
......
...@@ -1199,7 +1199,8 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags) ...@@ -1199,7 +1199,8 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
cp = comma; cp = comma;
comma = split(cp); comma = split(cp);
slash = split_chr(cp, '/'); slash = split_chr(cp, '/');
inet_pton(AF_INET, cp, &in); if (!inet_pton(AF_INET, cp, &in))
ret_err(_("bad IPv4 address"));
if (!slash) if (!slash)
{ {
memcpy(op, &in, INADDRSZ); memcpy(op, &in, INADDRSZ);
...@@ -3658,8 +3659,8 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma ...@@ -3658,8 +3659,8 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
(!(inet_pton(AF_INET, a[1], &new->out) > 0))) (!(inet_pton(AF_INET, a[1], &new->out) > 0)))
option = '?'; option = '?';
if (k == 3) if (k == 3 && !inet_pton(AF_INET, a[2], &new->mask))
inet_pton(AF_INET, a[2], &new->mask); option = '?';
if (dash && if (dash &&
(!(inet_pton(AF_INET, dash, &new->end) > 0) || (!(inet_pton(AF_INET, dash, &new->end) > 0) ||
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment