diff options
author | Markus Stoff <markus@stoffdv.at> | 2021-05-18 20:35:33 +0000 |
---|---|---|
committer | Lutz Donnerhacke <donner@FreeBSD.org> | 2021-05-18 20:36:28 +0000 |
commit | 63b6a08ce2467b8e230e7a4ecb3e1ddf1b48851c (patch) | |
tree | 9e39aea532f278b54145417ca7f5fa42944c498d | |
parent | 7fd8baee756efa18b6bbb17cbf3a652eb2058d87 (diff) |
ng_parse: IP address parsing in netgraph eating too many characters
Once the final component of the IP address has been parsed, the offset
on the input must not be advanced, as this would remove an unparsed
character from the input.
Submitted by: Markus Stoff
Reviewed by: donner
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D26489
-rw-r--r-- | sys/netgraph/ng_parse.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/netgraph/ng_parse.c b/sys/netgraph/ng_parse.c index 8050edbba562..c3c2126bdef5 100644 --- a/sys/netgraph/ng_parse.c +++ b/sys/netgraph/ng_parse.c @@ -960,9 +960,11 @@ ng_ipaddr_parse(const struct ng_parse_type *type, if ((error = ng_int8_parse(&ng_parse_int8_type, s, off, start, buf + i, buflen)) != 0) return (error); - if (i < 3 && s[*off] != '.') - return (EINVAL); - (*off)++; + if (i < 3) { + if (s[*off] != '.') + return (EINVAL); + (*off)++; + } } *buflen = 4; return (0); |