* shared.h (class pinfo): New members root' and
rootlen'.
* syscalls.cc (chroot): Set new root for process. * path.cc (getcwd_inner): Add parameter to force use of new root from chroot() call. (ischrootpath): New macro. (normalize_posix_path): Care for changed root dir. (normalize_win32_path): Ditto. (getcwd_inner): Ditto. (chdir): Eliminate trailing path component consisting entirely of dots. * fork.cc (fork): Copy pinfo members regarding chroot(). * spawn.cc (_spawnve): Ditto. * dir.cc (opendir): Don't use computed win32 path if chroot() took place.
This commit is contained in:
@@ -67,7 +67,8 @@ opendir (const char *dirname)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (stat (real_dirname.get_win32 (), &statbuf) == -1)
|
||||
if (stat (myself->rootlen ? dirname : real_dirname.get_win32 (),
|
||||
&statbuf) == -1)
|
||||
goto failed;
|
||||
|
||||
if (!(statbuf.st_mode & S_IFDIR))
|
||||
|
Reference in New Issue
Block a user