diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e33b5bdfb..7584ed169 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2002-05-09 Christopher Faylor + + * syscalls.cc (_write): Change error to EBADF if attempt to write to a + non-writable fd. + 2002-05-08 Corinna Vinschen * cygheap.h (class cygheap_user): Add member `orig_psid'. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b549f9530..0be393a46 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -384,6 +384,9 @@ _write (int fd, const void *ptr, size_t len) myself->process_state |= PID_TTYOU; res = cfd->write (ptr, len); myself->process_state &= ~PID_TTYOU; + if (res && get_errno () == EACCES && + !(cfd->get_flags () & (O_WRONLY | O_RDWR))) + set_errno (EBADF); } done: