Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-03-02 21:08:09 +0300
committerCorinna Vinschen <corinna@vinschen.de>2006-03-02 21:08:09 +0300
commit7b8b467defe138fefee0fd468c89d006ceab2c7f (patch)
treeb2de5616678f9260483f358609ced14dafb24a6f /winsup/cygwin
parentcb1975812d5fdf87452ecdae67f5011a3049c01b (diff)
* syscalls.cc (chroot): Disallow chroot into special directories.
Return EPERM instead.
Diffstat (limited to 'winsup/cygwin')
-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 */