diff options
author | Christopher Faylor <me@cgf.cx> | 2003-11-05 16:53:55 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-11-05 16:53:55 +0000 |
commit | d417aec9089e59f0f667290ebe777ef554ac5103 (patch) | |
tree | 2468da418fb4837cfe3074cc0ab33912fe146271 | |
parent | 1be28abadf705fb869cf01b4481677af4a70dca4 (diff) | |
download | newlib-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/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 9 |
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 { |