|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
From 714a097ba82ad53b90cfff921ea3749cd1130f3e Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
From: Dumitru Ceara <dceara@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Date: Tue, 23 Jun 2020 10:17:50 +0200
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Subject: [PATCH] lex: Allow unmasked bits in value/mask tokens.
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
It's quite restrictive to not accept ACLs/policies that match on a CIDR
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
that has non-zero host bits. Right now this generates a lexer error that
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
can only be detected in the logs.
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
There's no real harm in automatically zero-ing the unmasked bits.
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Reported-at: https://bugzilla.redhat.com/1812820
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Reported-by: Ying Xu <yinxu@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Signed-off-by: Dumitru Ceara <dceara@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Acked-by: Mark Michelson <mmichels@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Signed-off-by: Numan Siddique <numans@ovn.org>
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
(cherry picked from upstream commit 2104f67aacd62f62a31f4e23a6720aeeaa751154)
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
Change-Id: I90c57fe51170d63fcd08d1a57d6d9555755a43be
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
---
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
lib/lex.c | 10 ++--------
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
tests/ovn.at | 11 +++++++----
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
2 files changed, 9 insertions(+), 12 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
diff --git a/lib/lex.c b/lib/lex.c
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
index 94f6c77..4d92199 100644
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
--- a/lib/lex.c
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+++ b/lib/lex.c
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
@@ -485,16 +485,10 @@ lex_parse_mask(const char *p, struct lex_token *token)
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
return p;
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
}
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- /* Check invariant that a 1-bit in the value corresponds to a 1-bit in the
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+ /* Apply invariant that a 1-bit in the value corresponds to a 1-bit in the
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
* mask. */
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
for (int i = 0; i < ARRAY_SIZE(token->mask.be32); i++) {
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- ovs_be32 v = token->value.be32[i];
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- ovs_be32 m = token->mask.be32[i];
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
-
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- if (v & ~m) {
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- lex_error(token, "Value contains unmasked 1-bits.");
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- break;
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
- }
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+ token->value.be32[i] &= token->mask.be32[i];
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
}
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
/* Done! */
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
diff --git a/tests/ovn.at b/tests/ovn.at
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
index cf521af..e7e0439 100644
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
--- a/tests/ovn.at
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+++ b/tests/ovn.at
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
@@ -79,7 +79,7 @@ a/b => a error("`/' is only valid as part of `//' or `/*'.") b
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0/0
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0/1
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
-1/0 => error("Value contains unmasked 1-bits.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+1/0 => 0/0
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
1/1
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
128/384
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
1/3
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
@@ -99,7 +99,7 @@ a/b => a error("`/' is only valid as part of `//' or `/*'.") b
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0X => error("Hex digits expected following 0X.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0x0/0x0 => 0/0
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0x0/0x1 => 0/0x1
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
-0x1/0x0 => error("Value contains unmasked 1-bits.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+0x1/0x0 => 0/0
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0xffff/0x1ffff
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
0x. => error("Invalid syntax in hexadecimal constant.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
@@ -109,9 +109,12 @@ a/b => a error("`/' is only valid as part of `//' or `/*'.") b
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
192.168.0.0/255.255.0.0 => 192.168.0.0/16
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
192.168.0.0/255.255.255.0 => 192.168.0.0/24
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
192.168.0.0/255.255.0.255
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
-192.168.0.0/255.0.0.0 => error("Value contains unmasked 1-bits.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+192.168.0.0/255.0.0.0 => 192.0.0.0/8
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
192.168.0.0/32
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
192.168.0.0/255.255.255.255 => 192.168.0.0/32
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+192.168.0.2/32
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+192.168.0.2/30 => 192.168.0.0/30
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+192.168.0.2/24 => 192.168.0.0/24
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
1.2.3.4:5 => 1.2.3.4 : 5
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
::
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
@@ -135,7 +138,7 @@ FE:DC:ba:98:76:54 => fe:dc:ba:98:76:54
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
01:00:00:00:00:00/01:00:00:00:00:00
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
ff:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
fe:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
-ff:ff:ff:ff:ff:ff/fe:ff:ff:ff:ff:ff => error("Value contains unmasked 1-bits.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
+ff:ff:ff:ff:ff:ff/fe:ff:ff:ff:ff:ff => fe:ff:ff:ff:ff:ff/fe:ff:ff:ff:ff:ff
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
fe:x => error("Invalid numeric constant.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
00:01:02:03:04:x => error("Invalid numeric constant.")
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
--
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
1.8.3.1
|
|
![](https://seccdn.libravatar.org/avatar/27d986ce2ac90386c54ece8f298af68394ba0075c486ba984fb8cdabef9a5abe?s=16&d=retro) |
9219d1 |
|