You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
diff -up sudo-1.8.6p7/src/exec.c.nproc-nowait sudo-1.8.6p7/src/exec.c |
|
--- sudo-1.8.6p7/src/exec.c.nproc-nowait 2016-05-11 12:56:58.694022525 +0200 |
|
+++ sudo-1.8.6p7/src/exec.c 2016-05-11 12:56:58.759021618 +0200 |
|
@@ -298,6 +298,7 @@ sudo_execute(struct command_details *det |
|
*/ |
|
if (details->flags & CD_DONTWAIT) { |
|
if (exec_setup(details, NULL, -1) == true) { |
|
+ restore_nproc(); |
|
/* headed for execve() */ |
|
sudo_debug_execve(SUDO_DEBUG_INFO, details->command, |
|
details->argv, details->envp); |
|
diff -up sudo-1.8.6p7/src/sudo.c.nproc-nowait sudo-1.8.6p7/src/sudo.c |
|
--- sudo-1.8.6p7/src/sudo.c.nproc-nowait 2016-05-11 12:56:58.758021632 +0200 |
|
+++ sudo-1.8.6p7/src/sudo.c 2016-05-11 13:12:21.833116202 +0200 |
|
@@ -145,6 +145,7 @@ static struct rlimit corelimit; |
|
#endif /* RLIMIT_CORE */ |
|
#if defined(__linux__) |
|
static struct rlimit nproclimit; |
|
+static struct rlimit orig_nproc_limit; |
|
#endif |
|
|
|
int |
|
@@ -853,6 +854,17 @@ unlimit_nproc(void) |
|
debug_return; |
|
} |
|
|
|
+void restore_nproc(void) |
|
+{ |
|
+ debug_decl(restore_nproc, SUDO_DEBUG_EXEC); |
|
+#if defined(__linux__) |
|
+ if (setrlimit(RLIMIT_NPROC, &orig_nproc_limit) != 0) { |
|
+ errorx(1, _("Cannot restore nproc rlimit: errno=%d"), errno); |
|
+ } |
|
+#endif |
|
+ debug_return; |
|
+} |
|
+ |
|
#ifdef HAVE_PROJECT_H |
|
static void |
|
set_project(struct passwd *pw) |
|
@@ -1089,6 +1101,7 @@ exec_setup(struct command_details *detai |
|
*/ |
|
#if defined(__linux__) && defined(_SC_CHILD_MAX) |
|
{ |
|
+ getrlimit(RLIMIT_NPROC, &orig_nproc_limit); |
|
struct rlimit rl; |
|
long l; |
|
errno = 0;
|
|
|