When an NXM wildcard entry that includes a multicast address is parsed,
it would fall through to the next case statement, which would also set
an inappropriate source mac address match.
Coverity #10717
---
lib/nx-match.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/lib/nx-match.c b/lib/nx-match.c
index abc3b21..4d2e590 100644
--- a/lib/nx-match.c
+++ b/lib/nx-match.c
@@ -198,10 +198,12 @@ parse_nxm_entry(struct cls_rule *rule, const struct
nxm_field *f,
} else if (eth_addr_equals(mask, eth_mcast_1)) {
wc->wildcards &= ~FWW_ETH_MCAST;
flow->dl_dst[0] = *(uint8_t *) value & 0x01;
+ return 0;
} else if (eth_addr_equals(mask, eth_mcast_0)) {
wc->wildcards &= ~FWW_DL_DST;
memcpy(flow->dl_dst, value, ETH_ADDR_LEN);
flow->dl_dst[0] &= 0xfe;
+ return 0;
} else if (eth_addr_equals(mask, eth_all_0s)) {
return 0;
} else if (eth_addr_equals(mask, eth_all_1s)) {
--
1.7.1
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev_openvswitch.org