From ab78cbc71ce16dd39e4b6b9e42c02f75bf1d8a50 Mon Sep 17 00:00:00 2001
From: Petr Machata <pmachata@redhat.com>
Date: Thu, 22 Aug 2013 16:46:17 +0200
Subject: [PATCH] [SV 39851] Reinstate stack size limit for processes spawned
 via $(shell)

---
 ChangeLog  | 5 +++++
 function.c | 9 ++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 14a6ce4f..fdb921f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -55,6 +55,11 @@
 	* makefile.vms: Ditto.
 	* po/POTFILES.in: Ditto.
 
+2013-08-22  Petr Machata  <pmachata@redhat.com>
+
+	* function.c (func_shell_base): Get rid of any avoidable limit on
+	stack size for processes spawned via $(shell).
+
 2013-07-22  Paul Smith  <psmith@gnu.org>
 
 	* implicit.c (pattern_search): Use PARSE_SIMPLE_SEQ() even for
diff --git a/function.c b/function.c
index 40e10981..4ea24465 100644
--- a/function.c
+++ b/function.c
@@ -1718,7 +1718,14 @@ func_shell_base (char *o, char **argv, int trim_newlines)
   if (pid < 0)
     perror_with_name (error_prefix, "fork");
   else if (pid == 0)
-    child_execute_job (0, pipedes[1], command_argv, envp);
+    {
+#ifdef SET_STACK_SIZE
+      /* Reset limits, if necessary.  */
+      if (stack_limit.rlim_cur)
+       setrlimit (RLIMIT_STACK, &stack_limit);
+#endif
+      child_execute_job (0, pipedes[1], command_argv, envp);
+    }
   else
 # endif
 #endif