diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2011-05-05 17:45:06 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2011-05-05 17:45:06 +0400 |
commit | 2b31bc47a765d49b5a1f768ab4eb623460b6cbbf (patch) | |
tree | be99178dd01c0a3a9a2ad547e6fdedc7e5f4aa88 /winsup/cygwin/fhandler_disk_file.cc | |
parent | 25c50222d9a16f190a90d2ccf3ba772fb8e68a36 (diff) |
* fhandler_disk_file.cc (fhandler_disk_file::pread): Correctly return
with errno set to EBADF if file open mode is incorrect.
(fhandler_disk_file::pwrite): Ditto.
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 1c586f3c6..b491fd34f 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -1415,6 +1415,12 @@ out: ssize_t __stdcall fhandler_disk_file::pread (void *buf, size_t count, _off64_t offset) { + if ((get_flags () & O_ACCMODE) == O_WRONLY) + { + set_errno (EBADF); + return -1; + } + /* In binary mode, we can use an atomic NtReadFile call. */ if (rbinary ()) { @@ -1476,6 +1482,12 @@ fhandler_disk_file::pread (void *buf, size_t count, _off64_t offset) ssize_t __stdcall fhandler_disk_file::pwrite (void *buf, size_t count, _off64_t offset) { + if ((get_flags () & O_ACCMODE) == O_RDONLY) + { + set_errno (EBADF); + return -1; + } + /* In binary mode, we can use an atomic NtWriteFile call. */ if (wbinary ()) { |