summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/times.cc3
2 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 2314db392..27da34378 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,9 @@
2005-10-19 Christopher Faylor <cgf@timesys.com>
+ * times.cc (utimes): Only consider fds opened with write access.
+
+2005-10-19 Christopher Faylor <cgf@timesys.com>
+
* fhandler_disk_file.cc (fhandler_base::utimes_fs): Use existing handle
if fhandler has one.
* times.cc (utimes): Scan open fds for matching paths and use existing
diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc
index cc4de9746..e4bcb8cef 100644
--- a/winsup/cygwin/times.cc
+++ b/winsup/cygwin/times.cc
@@ -452,7 +452,8 @@ utimes (const char *path, const struct timeval *tvp)
cygheap_fdenum cfd;
while (cfd.next () >= 0)
- if (strcmp (cfd->get_win32_name (), win32) == 0)
+ if (cfd->get_access () & (FILE_WRITE_ATTRIBUTES | GENERIC_WRITE)
+ && strcmp (cfd->get_win32_name (), win32) == 0)
{
fh = cfd;
fromfd = true;