* dir.cc (mkdir): Check last path component for "..".
(rmdir): Don't check last path component for "..". * fhandler_disk_file.cc (fhandler_disk_file::rmdir): Drop kludge which tries to allow deleting the current working directory. * path.cc (has_dot_last_component): Add parameter to indicate testing for "..". Take trailing slash into account. (symlink_info::posixify): Rely on cygheap->cwd.win32 having a useful value. (cwdstuff::init): Initialize cygheap->cwd with current working directory. Change to windows_system_directory afterwards. (cwdstuff::set): Never call SetCurrentDirectory here. Just check if changing into target directory would be allowed. Add comment to explain why. * path.h (has_dot_last_component): Declare with second parameter. * pinfo.cc (pinfo::zap_cwd): Remove. (pinfo::exit): Drop call to zap_cwd. * pinfo.h (class pinfo): Remove declaration of zap_cwd. * spawn.cc (spawn_guts): Set current working directory for non-Cygwin child applications. Drop call to zap_cwd.
This commit is contained in:
@@ -122,16 +122,6 @@ pinfo::maybe_set_exit_code_from_windows ()
|
||||
self->pid, oexitcode, x, self->exitcode);
|
||||
}
|
||||
|
||||
void
|
||||
pinfo::zap_cwd ()
|
||||
{
|
||||
extern char windows_system_directory[];
|
||||
/* Move to an innocuous location to avoid a race with other processes
|
||||
that may want to manipulate the current directory before this
|
||||
process has completely exited. */
|
||||
SetCurrentDirectory (windows_system_directory);
|
||||
}
|
||||
|
||||
void
|
||||
pinfo::exit (DWORD n)
|
||||
{
|
||||
@@ -148,7 +138,6 @@ pinfo::exit (DWORD n)
|
||||
}
|
||||
|
||||
sigproc_terminate (ES_FINAL);
|
||||
zap_cwd ();
|
||||
|
||||
/* FIXME: There is a potential race between an execed process and its
|
||||
parent here. I hated to add a mutex just for that, though. */
|
||||
|
Reference in New Issue
Block a user