summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/syscalls.cc2
2 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 8c2e24ded..1c2506d78 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2006-03-02 Corinna Vinschen <corinna@vinschen.de>
+ * syscalls.cc (chroot): Disallow chroot into special directories.
+ Return EPERM instead.
+
+2006-03-02 Corinna Vinschen <corinna@vinschen.de>
+
* fhandler_disk_file.cc (__DIR_mounts::check_missing_mount): Check
cygdrive string length for those who have cygdrive mapped to "/".
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 66c5e38c4..33eef64d3 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -2359,6 +2359,8 @@ chroot (const char *newroot)
set_errno (ENOENT);
else if (!path.isdir ())
set_errno (ENOTDIR);
+ else if (path.isspecial ())
+ set_errno (EPERM);
else
{
getwinenv("PATH="); /* Save the native PATH */