From 6799320edb9f8465659259721e01e15f9d263aeb Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Mon, 4 Mar 2019 22:59:42 +0000 Subject: [PATCH 41/57] 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. Signed-off-by: Kevin Darbyshire-Bryant --- src/option.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) --- a/src/option.c +++ b/src/option.c @@ -1181,7 +1181,7 @@ static int parse_dhcp_opt(char *errstr, { /* 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, { digs++; is_dec = is_addr = 0; + found_colon = 1; } else if (c == '/') { @@ -1236,6 +1237,9 @@ static int parse_dhcp_opt(char *errstr, 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)