From f561f644e97894f6d4f07d43ae46f84dc0c4d7a4 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 9 May 2002 22:55:08 +0000 Subject: [PATCH] * syscalls.cc (_write): Change error to EBADF if attempt to write to a non-writable fd. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/syscalls.cc | 3 +++ 2 files changed, 8 insertions(+) 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: