From 61afb8dc8d75106940ac4248632cb14823a3650e Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 21 Aug 2015 10:04:13 +0100 Subject: 36262: Replace fix for missing unmeta in chdir(). It was needed in the argument to one of a pair of lchdir()s rather than within zchdir(). Add tests for the case of a character with 0x83 within it. --- Src/compat.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Src/compat.c') diff --git a/Src/compat.c b/Src/compat.c index a0ce1823c..db468529a 100644 --- a/Src/compat.c +++ b/Src/compat.c @@ -454,8 +454,13 @@ zgetcwd(void) return ret; } -/* chdir with arbitrary long pathname. Returns 0 on success, -1 on normal * - * failure and -2 when chdir failed and the current directory is lost. */ +/* + * chdir with arbitrary long pathname. Returns 0 on success, -1 on normal * + * failure and -2 when chdir failed and the current directory is lost. + * + * This is to be treated as if at system level, so dir is unmetafied but + * terminated by a NULL. + */ /**/ mod_export int @@ -465,7 +470,7 @@ zchdir(char *dir) int currdir = -2; for (;;) { - if (!*dir || chdir(unmeta(dir)) == 0) { + if (!*dir || chdir(dir) == 0) { #ifdef HAVE_FCHDIR if (currdir >= 0) close(currdir); -- cgit v1.2.3-70-g09d2