Merge "[PATCH] Init - make sure the last parameter to execve is NULL"
diff --git a/init/parser.c b/init/parser.c
index 7da0d19..ca03da9 100644
--- a/init/parser.c
+++ b/init/parser.c
@@ -800,6 +800,7 @@
     struct action *act = state->context;
     int (*func)(int nargs, char **args);
     int kw, n;
+    int alloc_size = 0;
 
     if (nargs == 0) {
         return;
@@ -817,7 +818,14 @@
             n > 2 ? "arguments" : "argument");
         return;
     }
-    cmd = malloc(sizeof(*cmd) + sizeof(char*) * nargs);
+    alloc_size = sizeof(*cmd) + sizeof(char*) * (nargs + 1);
+    cmd = malloc(alloc_size);
+    if (!cmd) {
+        parse_error(state, "malloc failed\n");
+        return;
+    }
+
+    memset((char *)cmd, 0, alloc_size);
     cmd->func = kw_func(kw);
     cmd->nargs = nargs;
     memcpy(cmd->args, args, sizeof(char*) * nargs);