Add null check before dereferencing ent. ent is pointer to memory
allocated using malloc and is dereferenced immediately without
null check.

Found using Facebook's Infer. Build tested it.

Signed-off-by: Tapasweni Pathak <tapaswenipat...@gmail.com>
---
Another option is to dereference only inside if (ent).
 tools/lib/subcmd/help.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/lib/subcmd/help.c b/tools/lib/subcmd/help.c
index 2859f10..b805d1d 100644
--- a/tools/lib/subcmd/help.c
+++ b/tools/lib/subcmd/help.c
@@ -16,13 +16,18 @@
 void add_cmdname(struct cmdnames *cmds, const char *name, size_t len)
 {
        struct cmdname *ent = malloc(sizeof(*ent) + len + 1);
-
+        if (!ent) {
+                printf("mem alloc failed\n");
+                goto error;
+        }
        ent->len = len;
        memcpy(ent->name, name, len);
        ent->name[len] = 0;

        ALLOC_GROW(cmds->names, cmds->cnt + 1, cmds->alloc);
        cmds->names[cmds->cnt++] = ent;
+        error:
+                if (ent) free(ent);
 }

 void clean_cmdnames(struct cmdnames *cmds)
--
2.7.4

Reply via email to