From: Alison Schofield <alison.schofi...@intel.com>

A coverity scan higlighted an overflow issue when the slot variable,
an unsigned integer that is initialized to -1, is incremented and
overflows.

Initialize slot to 0 and move the increment statement to after slot
is evaluated. That keeps the comparison to a u32 as is and avoids
overflow.

Signed-off-by: Alison Schofield <alison.schofi...@intel.com>
---
 ndctl/dimm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/ndctl/dimm.c b/ndctl/dimm.c
index 889b620355fc..c39c69bfa336 100644
--- a/ndctl/dimm.c
+++ b/ndctl/dimm.c
@@ -97,7 +97,7 @@ static struct json_object *dump_label_json(struct ndctl_dimm 
*dimm,
        struct json_object *jlabel = NULL;
        struct namespace_label nslabel;
        unsigned int nsindex_size;
-       unsigned int slot = -1;
+       unsigned int slot = 0;
        ssize_t offset;
 
        if (!jarray)
@@ -115,7 +115,6 @@ static struct json_object *dump_label_json(struct 
ndctl_dimm *dimm,
                struct json_object *jobj;
                char uuid[40];
 
-               slot++;
                jlabel = json_object_new_object();
                if (!jlabel)
                        break;
@@ -127,8 +126,11 @@ static struct json_object *dump_label_json(struct 
ndctl_dimm *dimm,
                if (len < 0)
                        break;
 
-               if (le32_to_cpu(nslabel.slot) != slot)
+               if (le32_to_cpu(nslabel.slot) != slot) {
+                       slot++;
                        continue;
+               }
+               slot++;
 
                uuid_unparse((void *) nslabel.uuid, uuid);
                jobj = json_object_new_string(uuid);
-- 
2.37.3


Reply via email to