app/testpmd: fix array bounds checks
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Tue, 10 Jan 2017 13:08:26 +0000 (14:08 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 11 Jan 2017 15:52:20 +0000 (16:52 +0100)
This commit addresses several obvious issues reported by Coverity
with array bounds checks in functions related to the flow API.

Coverity issue: 139596, 139597, 139598, 139599
Fixes: 938a184a1870 ("app/testpmd: implement basic support for flow API")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
app/test-pmd/config.c

index 9716ce7..e1af064 100644 (file)
@@ -884,7 +884,7 @@ store:
        do {
                struct rte_flow_item *dst = NULL;
 
-               if ((unsigned int)item->type > RTE_DIM(flow_item) ||
+               if ((unsigned int)item->type >= RTE_DIM(flow_item) ||
                    !flow_item[item->type].name)
                        goto notsup;
                if (pf)
@@ -918,7 +918,7 @@ store:
        do {
                struct rte_flow_action *dst = NULL;
 
-               if ((unsigned int)action->type > RTE_DIM(flow_action) ||
+               if ((unsigned int)action->type >= RTE_DIM(flow_action) ||
                    !flow_action[action->type].name)
                        goto notsup;
                if (pf)
@@ -977,7 +977,7 @@ port_flow_complain(struct rte_flow_error *error)
        char buf[32];
        int err = rte_errno;
 
-       if ((unsigned int)error->type > RTE_DIM(errstrlist) ||
+       if ((unsigned int)error->type >= RTE_DIM(errstrlist) ||
            !errstrlist[error->type])
                errstr = "unknown type";
        else
@@ -1146,7 +1146,7 @@ port_flow_query(portid_t port_id, uint32_t rule,
                printf("Flow rule #%u not found\n", rule);
                return -ENOENT;
        }
-       if ((unsigned int)action > RTE_DIM(flow_action) ||
+       if ((unsigned int)action >= RTE_DIM(flow_action) ||
            !flow_action[action].name)
                name = "unknown";
        else