diff options
| author | Peter Stephenson <pws@users.sourceforge.net> | 2004-11-29 12:09:13 +0000 |
|---|---|---|
| committer | Peter Stephenson <pws@users.sourceforge.net> | 2004-11-29 12:09:13 +0000 |
| commit | d2c67e5e19953c2bee353635c3e8aec7c38f8d57 (patch) | |
| tree | b67937542b8d5290bb1fa657236172651ee9e991 | |
| parent | 20592: Debian bug#283358: $((##)) failed erratically (diff) | |
| download | zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar.gz zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar.bz2 zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar.lz zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar.xz zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.tar.zst zsh-d2c67e5e19953c2bee353635c3e8aec7c38f8d57.zip | |
20591: Stephane Chazelas: use of fchdir in zchdir leaked fd's
| -rw-r--r-- | ChangeLog | 3 | ||||
| -rw-r--r-- | Src/compat.c | 10 |
2 files changed, 10 insertions, 3 deletions
@@ -1,5 +1,8 @@ 2004-11-29 Peter Stephenson <pws@csr.com> + * 20591: Stephane Chazelas <Stephane_Chazelas@yahoo.fr>: + use of fchdir to change directory leaked filed descriptors. + * 20592: Src/math.c: $((##)) caused mayhem by passing null string to getkeystring(). Report error instead. diff --git a/Src/compat.c b/Src/compat.c index 2999e63e4..ba077d3a0 100644 --- a/Src/compat.c +++ b/Src/compat.c @@ -387,10 +387,14 @@ zchdir(char *dir) int currdir = -2; for (;;) { - if (!*dir) - return 0; - if (!chdir(dir)) + if (!*dir || !chdir(dir)) + { +#ifdef HAVE_FCHDIR + if (currdir >= 0) + close(currdir); +#endif return 0; + } if ((errno != ENAMETOOLONG && errno != ENOMEM) || strlen(dir) < PATH_MAX) break; |
