[Bug 217620] ipfw flow specification parsing
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Tue Mar 7 21:39:19 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217620
Bug ID: 217620
Summary: ipfw flow specification parsing
Product: Base System
Version: 11.0-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: bin
Assignee: freebsd-bugs at FreeBSD.org
Reporter: lutz at donnerhacke.de
Parsing of port-numbers explicitly set to "0" does not work.
BTW: The whole code is broken for parsing named ports.
How to repeat:
root at server:~ # ipfw table test create type
flow:src-ip,src-port,dst-ip,dst-port,proto
root at server:~ # ipfw table all info
--- table(test), set(0) ---
kindex: 1, type: flow:src-ip,proto,src-port,dst-ip,dst-port
references: 0, valtype: legacy
algorithm: flow:hash
items: 0, size: 296
root at server:~ # ipfw table test add 0.0.0.0,0,0,0.0.0.0,0
ipfw: Unknown service: 0
After the patch:
root at server:~ # ipfw table test add 0.0.0.0,0,0,0.0.0.0,0
added: 0.0.0.0,0,0,0.0.0.0,0 0
root at server:~ # ipfw table test list
--- table(test), set(0) ---
0.0.0.0,0,0,0.0.0.0,0 0
--- sbin/ipfw/ipfw2.h (revision 314807)
+++ sbin/ipfw/ipfw2.h (working copy)
@@ -1236,12 +1269,11 @@
if ((p = strchr(arg, ',')) != NULL)
*p++ = '\0';
- if ((port = htons(strtol(arg, NULL, 10))) == 0) {
+ port = htons(strtol(arg, &pp, 10));
+ if(*pp != '\0') {
if ((sent = getservbyname(arg, NULL)) == NULL)
- errx(EX_DATAERR, "Unknown service: %s",
- arg);
- else
- key = sent->s_port;
+ errx(EX_DATAERR, "Unknown service: %s",
arg);
+ port = sent->s_port;
}
tfe->sport = port;
@@ -1280,12 +1312,11 @@
if ((p = strchr(arg, ',')) != NULL)
*p++ = '\0';
- if ((port = htons(strtol(arg, NULL, 10))) == 0) {
+ port = htons(strtol(arg, &pp, 10));
+ if (*pp != '\0') {
if ((sent = getservbyname(arg, NULL)) == NULL)
- errx(EX_DATAERR, "Unknown service: %s",
- arg);
- else
- key = sent->s_port;
+ errx(EX_DATAERR, "Unknown service: %s",
arg);
+ port = sent->s_port;
}
tfe->dport = port;
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list