From d2c67e5e19953c2bee353635c3e8aec7c38f8d57 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 29 Nov 2004 12:09:13 +0000 Subject: 20591: Stephane Chazelas: use of fchdir in zchdir leaked fd's --- Src/compat.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'Src/compat.c') 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; -- cgit 1.4.1