From cf30a78593cc8d5644a576a03477f3bf10feba67 Mon Sep 17 00:00:00 2001 From: Hongbo Zheng Date: Sun, 25 Apr 2021 20:54:29 +0800 Subject: [PATCH] net/txgbe: fix null pointer check In function cons_parse_ntuple_filter, item->spec and item->mask should be confirmed not null before use memcmp on it, current judgement (item->spec || item->mask) just can confirm item->spec or item->mask is not null, and cause null pointer be used in memcmp. This patch fix this problem. Fixes: b7eeecb17556 ("net/txgbe: parse n-tuple filter") Cc: stable@dpdk.org Signed-off-by: Hongbo Zheng Signed-off-by: Min Hu (Connor) Acked-by: Jiawen Wu --- drivers/net/txgbe/txgbe_flow.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c index 81d35f6f3a..effe00ff8b 100644 --- a/drivers/net/txgbe/txgbe_flow.c +++ b/drivers/net/txgbe/txgbe_flow.c @@ -240,11 +240,10 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr, return -rte_errno; } /* if the first item is MAC, the content should be NULL */ - if ((item->spec || item->mask) && - (memcmp(eth_spec, ð_null, - sizeof(struct rte_flow_item_eth)) || - memcmp(eth_mask, ð_null, - sizeof(struct rte_flow_item_eth)))) { + if ((item->spec && memcmp(eth_spec, ð_null, + sizeof(struct rte_flow_item_eth))) || + (item->mask && memcmp(eth_mask, ð_null, + sizeof(struct rte_flow_item_eth)))) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by ntuple filter"); @@ -272,11 +271,10 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr, return -rte_errno; } /* the content should be NULL */ - if ((item->spec || item->mask) && - (memcmp(vlan_spec, &vlan_null, - sizeof(struct rte_flow_item_vlan)) || - memcmp(vlan_mask, &vlan_null, - sizeof(struct rte_flow_item_vlan)))) { + if ((item->spec && memcmp(vlan_spec, &vlan_null, + sizeof(struct rte_flow_item_vlan))) || + (item->mask && memcmp(vlan_mask, &vlan_null, + sizeof(struct rte_flow_item_vlan)))) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by ntuple filter"); -- 2.20.1