diff --git a/init/init.cpp b/init/init.cpp
index 42eebe1..c66c487 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -585,6 +585,19 @@
     return result;
 }
 
+bool expand_command_arguments(int nargs, char** args, std::vector<std::string>* expanded_args) {
+    std::vector<std::string>& strs = *expanded_args;
+    strs.resize(nargs);
+    strs[0] = args[0];
+    for (int i = 1; i < nargs; ++i) {
+        if (expand_props(args[i], &strs[i]) == -1) {
+            ERROR("%s: cannot expand '%s'\n", args[0], args[i]);
+            return false;
+        }
+    }
+    return true;
+}
+
 void execute_one_command() {
     Timer t;
 
@@ -606,14 +619,9 @@
         return;
     }
     int result = 0;
-    std::vector<std::string> arg_strs(cur_command->nargs);
-    arg_strs[0] = cur_command->args[0];
-    for (int i = 1; i < cur_command->nargs; ++i) {
-        if (expand_props(cur_command->args[i], &arg_strs[i]) == -1) {
-            ERROR("%s: cannot expand '%s'\n", cur_command->args[0], cur_command->args[i]);
-            result = -EINVAL;
-            break;
-        }
+    std::vector<std::string> arg_strs;
+    if (!expand_command_arguments(cur_command->nargs, cur_command->args, &arg_strs)) {
+        result = -EINVAL;
     }
     if (result == 0) {
         std::vector<char*> args;
diff --git a/init/init.h b/init/init.h
index d812733..d2b2dfb 100644
--- a/init/init.h
+++ b/init/init.h
@@ -161,5 +161,6 @@
 void zap_stdio(void);
 
 void register_epoll_handler(int fd, void (*fn)());
+bool expand_command_arguments(int nargs, char** args, std::vector<std::string>* expanded_args);
 
 #endif	/* _INIT_INIT_H */
diff --git a/init/signal_handler.cpp b/init/signal_handler.cpp
index 39a466d..6893163 100644
--- a/init/signal_handler.cpp
+++ b/init/signal_handler.cpp
@@ -136,7 +136,14 @@
     struct listnode* node;
     list_for_each(node, &svc->onrestart.commands) {
         command* cmd = node_to_item(node, struct command, clist);
-        cmd->func(cmd->nargs, cmd->args);
+        std::vector<std::string> arg_strs;
+        if (expand_command_arguments(cmd->nargs, cmd->args, &arg_strs)) {
+            std::vector<char*> args;
+            for (auto& s : arg_strs) {
+                args.push_back(&s[0]);
+            }
+            cmd->func(args.size(), &args[0]);
+        }
     }
     svc->NotifyStateChange("restarting");
     return true;
