vlib: fix startup-config-process stack overflow
[vpp.git] / src / vlib / unix / main.c
index 3ec4c34..08e5937 100755 (executable)
@@ -91,7 +91,7 @@ unsetup_signal_handlers (int sig)
 
 /* allocate this buffer from mheap when setting up the signal handler.
     dangerous to vec_resize it when crashing, mheap itself might have been
-    corruptted already */
+    corrupted already */
 static u8 *syslog_msg = 0;
 static int last_signum = 0;
 static uword last_faulting_address = 0;
@@ -177,7 +177,7 @@ unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc)
          syslog (LOG_ERR | LOG_DAEMON, "%s", syslog_msg);
        }
 
-      /* have to remove SIGABRT to avoid recusive - os_exit calling abort() */
+      /* have to remove SIGABRT to avoid recursive - os_exit calling abort() */
       unsetup_signal_handlers (SIGABRT);
 
       os_exit (1);
@@ -372,6 +372,7 @@ VLIB_REGISTER_NODE (startup_config_node,static) = {
     .function = startup_config_process,
     .type = VLIB_NODE_TYPE_PROCESS,
     .name = "startup-config-process",
+    .process_log2_n_stack_bytes = 18,
 };
 /* *INDENT-ON* */
 
@@ -500,6 +501,11 @@ unix_config (vlib_main_t * vm, unformat_input_t * input)
                                  vlib_default_runtime_dir, 0);
     }
 
+  /* Ensure the runtime directory is created */
+  error = vlib_unix_recursive_mkdir ((char *) um->runtime_dir);
+  if (error)
+    return error;
+
   error = setup_signal_handlers (um);
   if (error)
     return error;