aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Stoff <markus@stoffdv.at>2021-05-18 20:35:33 +0000
committerLutz Donnerhacke <donner@FreeBSD.org>2021-05-18 20:36:28 +0000
commit63b6a08ce2467b8e230e7a4ecb3e1ddf1b48851c (patch)
tree9e39aea532f278b54145417ca7f5fa42944c498d
parent7fd8baee756efa18b6bbb17cbf3a652eb2058d87 (diff)
downloadsrc-63b6a08ce2467b8e230e7a4ecb3e1ddf1b48851c.tar.gz
src-63b6a08ce2467b8e230e7a4ecb3e1ddf1b48851c.zip
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.c8
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);