]> granicus.if.org Git - icinga2/commitdiff
fixup set rlimit stack failed condition 6119/head
authorlihan <tclh123@gmail.com>
Tue, 27 Feb 2018 04:56:36 +0000 (12:56 +0800)
committerlihan <tclh123@gmail.com>
Tue, 27 Feb 2018 04:56:36 +0000 (12:56 +0800)
lib/base/application.cpp

index 1c1aa6776143905895a06b85cdc69f02eed060b2..c575d8e1d2b58c4a1a4272db1bbdd105c249b0a1 100644 (file)
@@ -255,32 +255,33 @@ void Application::SetResourceLimits()
                else
                        rl.rlim_cur = rl.rlim_max;
 
-               if (setrlimit(RLIMIT_STACK, &rl) < 0)
+               if (setrlimit(RLIMIT_STACK, &rl) < 0) {
                        Log(LogNotice, "Application", "Could not adjust resource limit for stack size (RLIMIT_STACK)");
-               else if (set_stack_rlimit) {
-                       char **new_argv = static_cast<char **>(malloc(sizeof(char *) * (argc + 2)));
+                       if (set_stack_rlimit) {
+                               char **new_argv = static_cast<char **>(malloc(sizeof(char *) * (argc + 2)));
 
-                       if (!new_argv) {
-                               perror("malloc");
-                               Exit(EXIT_FAILURE);
-                       }
+                               if (!new_argv) {
+                                       perror("malloc");
+                                       Exit(EXIT_FAILURE);
+                               }
 
-                       new_argv[0] = argv[0];
-                       new_argv[1] = strdup("--no-stack-rlimit");
+                               new_argv[0] = argv[0];
+                               new_argv[1] = strdup("--no-stack-rlimit");
 
-                       if (!new_argv[1]) {
-                               perror("strdup");
-                               exit(1);
-                       }
+                               if (!new_argv[1]) {
+                                       perror("strdup");
+                                       exit(1);
+                               }
 
-                       for (int i = 1; i < argc; i++)
-                               new_argv[i + 1] = argv[i];
+                               for (int i = 1; i < argc; i++)
+                                       new_argv[i + 1] = argv[i];
 
-                       new_argv[argc + 1] = nullptr;
+                               new_argv[argc + 1] = nullptr;
 
-                       (void) execvp(new_argv[0], new_argv);
-                       perror("execvp");
-                       _exit(EXIT_FAILURE);
+                               (void) execvp(new_argv[0], new_argv);
+                               perror("execvp");
+                               _exit(EXIT_FAILURE);
+                       }
                }
 #      else /* RLIMIT_STACK */
                Log(LogNotice, "Application", "System does not support adjusting the resource limit for stack size (RLIMIT_STACK)");