net/cxgbe: fix memory access when parsing flow match items
authorShagun Agrawal <shaguna@chelsio.com>
Mon, 27 Aug 2018 12:53:31 +0000 (18:23 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 3 Sep 2018 17:33:19 +0000 (19:33 +0200)
Coverity issue: 293096
Fixes: ee61f5113b17 ("net/cxgbe: parse and validate flows")
Cc: stable@dpdk.org
Signed-off-by: Shagun Agrawal <shaguna@chelsio.com>
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
drivers/net/cxgbe/cxgbe_flow.c

index 01c945f..038d479 100644 (file)
@@ -454,10 +454,10 @@ cxgbe_rtef_parse_items(struct rte_flow *flow,
        char repeat[ARRAY_SIZE(parseitem)] = {0};
 
        for (i = items; i->type != RTE_FLOW_ITEM_TYPE_END; i++) {
-               struct chrte_fparse *idx = &flow->item_parser[i->type];
+               struct chrte_fparse *idx;
                int ret;
 
-               if (i->type > ARRAY_SIZE(parseitem))
+               if (i->type >= ARRAY_SIZE(parseitem))
                        return rte_flow_error_set(e, ENOTSUP,
                                                  RTE_FLOW_ERROR_TYPE_ITEM,
                                                  i, "Item not supported");
@@ -478,6 +478,7 @@ cxgbe_rtef_parse_items(struct rte_flow *flow,
                        if (ret)
                                return ret;
 
+                       idx = &flow->item_parser[i->type];
                        if (!idx || !idx->fptr) {
                                return rte_flow_error_set(e, ENOTSUP,
                                                RTE_FLOW_ERROR_TYPE_ITEM, i,