about summary refs log tree commit diff
path: root/Src/init.c
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2013-10-27 15:42:00 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2013-10-27 15:42:00 -0700
commitc98cbe25d2be2c8c552250e7e039a72e1f61887b (patch)
treef90413329d54c3627baac925951e5d2b0bcc08cd /Src/init.c
parent4748eff7d2e97ff652f5d75d33b9aad12d7d917f (diff)
downloadzsh-c98cbe25d2be2c8c552250e7e039a72e1f61887b.tar.gz
zsh-c98cbe25d2be2c8c552250e7e039a72e1f61887b.tar.xz
zsh-c98cbe25d2be2c8c552250e7e039a72e1f61887b.zip
31919: fix deadlock when a shell builtin with a multio redirection is used on the left side of a pipeline
Make sure stdin/out/err file descriptors are closed for the multio copy
process, which means not re-using those descriptors after they are closed
and marked FDT_UNUSED in fdtable[].  For completeness, initialize their
fdtable[] state to FDT_EXTERNAL.
Diffstat (limited to 'Src/init.c')
-rw-r--r--Src/init.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/Src/init.c b/Src/init.c
index 01a969df4..7032ff8ae 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -1584,6 +1584,7 @@ zsh_main(UNUSED(int argc), char **argv)
 
     fdtable_size = zopenmax();
     fdtable = zshcalloc(fdtable_size*sizeof(*fdtable));
+    fdtable[0] = fdtable[1] = fdtable[2] = FDT_EXTERNAL;
 
     createoptiontable();
     emulate(zsh_name, 1, &emulation, opts);   /* initialises most options */