hashtable: Fix length calculation in hexport_r
authorZubair Lutfullah Kakakhel <zubair@resin.io>
Tue, 17 Jul 2018 18:25:38 +0000 (19:25 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 24 Jul 2018 13:25:23 +0000 (09:25 -0400)
The length returned by hexport_r has a few redundant characters.
This appears as NULL characters at the end so seems harmless.

Remove the surplus counts in two places

totlen += strlen(ep->key) + 2;
I'm guessing the +2 here is for = and sep char. But there is another
totlen += 2; line that does that.

size = totletn + 1;
Doesn't make sense and isn't justified with any comment.

Signed-off-by: Zubair Lutfullah Kakakhel <zubair@resin.io>
lib/hashtable.c

index ffaa5b6..1c48692 100644 (file)
@@ -622,7 +622,7 @@ ssize_t hexport_r(struct hsearch_data *htab, const char sep, int flag,
 
                        list[n++] = ep;
 
 
                        list[n++] = ep;
 
-                       totlen += strlen(ep->key) + 2;
+                       totlen += strlen(ep->key);
 
                        if (sep == '\0') {
                                totlen += strlen(ep->data);
 
                        if (sep == '\0') {
                                totlen += strlen(ep->data);
@@ -662,7 +662,7 @@ ssize_t hexport_r(struct hsearch_data *htab, const char sep, int flag,
                        return (-1);
                }
        } else {
                        return (-1);
                }
        } else {
-               size = totlen + 1;
+               size = totlen;
        }
 
        /* Check if the user provided a buffer */
        }
 
        /* Check if the user provided a buffer */