aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-11-05 16:53:55 +0000
committerChristopher Faylor <me@cgf.cx>2003-11-05 16:53:55 +0000
commitd417aec9089e59f0f667290ebe777ef554ac5103 (patch)
tree2468da418fb4837cfe3074cc0ab33912fe146271
parent1be28abadf705fb869cf01b4481677af4a70dca4 (diff)
downloadnewlib-d417aec9089e59f0f667290ebe777ef554ac5103.zip
newlib-d417aec9089e59f0f667290ebe777ef554ac5103.tar.gz
newlib-d417aec9089e59f0f667290ebe777ef554ac5103.tar.bz2
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Detect attempt to open a
directory which lacks read privileges.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc9
2 files changed, 12 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 4bc145f..90d989c 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2003-11-05 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::opendir): Detect attempt
+ to open a directory which lacks read privileges.
+
2003-11-04 Corinna Vinschen <corinna@vinschen.de>
* external.cc (cygwin_internal): Add CW_GET_POSIX_SECURITY_ATTRIBUTE
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index 1c11636..20ed661 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -617,15 +617,20 @@ fhandler_disk_file::opendir ()
set_errno (ENOMEM);
else if ((dir->__d_dirname = (char *) malloc (len + 3)) == NULL)
{
- free (dir);
set_errno (ENOMEM);
+ free (dir);
}
else if ((dir->__d_dirent =
(struct dirent *) malloc (sizeof (struct dirent))) == NULL)
{
+ set_errno (ENOMEM);
+ free (dir);
free (dir->__d_dirname);
+ }
+ else if (access_worker (pc, R_OK) != 0)
+ {
free (dir);
- set_errno (ENOMEM);
+ free (dir->__d_dirname);
}
else
{