nx-match: Don't fall through case when handling dest mcast mac addresses.
authorJustin Pettit <jpettit@nicira.com>
Wed, 23 Feb 2011 03:07:05 +0000 (19:07 -0800)
committerJustin Pettit <jpettit@nicira.com>
Wed, 23 Feb 2011 19:08:20 +0000 (11:08 -0800)
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

index abc3b21..4d2e590 100644 (file)
@@ -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)) {