You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
Diff
43 lines
1.2 KiB
Diff
From 6799320edb9f8465659259721e01e15f9d263aeb Mon Sep 17 00:00:00 2001
|
|
From: Simon Kelley <simon@thekelleys.org.uk>
|
|
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 <ldir@darbyshire-bryant.me.uk>
|
|
---
|
|
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)
|