Don't attempt to parse a sequence of hex digits without any colons as IPv6 address.

Another confusion in the heuristic dhcp-option parsing. Sigh.
This commit is contained in:
Simon Kelley
2019-03-04 22:59:42 +00:00
parent c406fd60be
commit 6799320edb

View File

@@ -1181,7 +1181,7 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
{
/* characterise the value */
char c;
int found_dig = 0;
int found_dig = 0, found_colon = 0;
is_addr = is_addr6 = is_hex = is_dec = is_string = 1;
addrs = digs = 1;
dots = 0;
@@ -1195,6 +1195,7 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
{
digs++;
is_dec = is_addr = 0;
found_colon = 1;
}
else if (c == '/')
{
@@ -1237,6 +1238,9 @@ static int parse_dhcp_opt(char *errstr, char *arg, int flags)
if (!found_dig)
is_dec = is_addr = 0;
if (!found_colon)
is_addr6 = 0;
/* We know that some options take addresses */
if (opt_len & OT_ADDR_LIST)
{