summaryrefslogtreecommitdiff
path: root/libio
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-07-06 15:40:36 +0000
committerUlrich Drepper <drepper@redhat.com>1999-07-06 15:40:36 +0000
commit8c8e3c5ed1f9dcd4351bf7f7e6be2f4b6c3fac52 (patch)
tree4772fd0ddb86d0dcf889aff9e7d9b593ad1b42c7 /libio
parent168dc155cc15873d47b957c5292ffdbc2ff0d973 (diff)
(_IO_new_fdopen): Set EINVAL if MODE is not allowed by the file access
mode of the open file.
Diffstat (limited to 'libio')
-rw-r--r--libio/iofdopen.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/libio/iofdopen.c b/libio/iofdopen.c
index 40419bd267..c71258e631 100644
--- a/libio/iofdopen.c
+++ b/libio/iofdopen.c
@@ -76,10 +76,15 @@ _IO_new_fdopen (fd, mode)
#ifndef O_ACCMODE
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
#endif
- if (fd_flags == -1
- || ((fd_flags & O_ACCMODE) == O_RDONLY && !(read_write & _IO_NO_WRITES))
- || ((fd_flags & O_ACCMODE) == O_WRONLY && !(read_write & _IO_NO_READS)))
+ if (fd_flags == -1)
return NULL;
+
+ if (((fd_flags & O_ACCMODE) == O_RDONLY && !(read_write & _IO_NO_WRITES))
+ || ((fd_flags & O_ACCMODE) == O_WRONLY && !(read_write & _IO_NO_READS)))
+ {
+ MAYBE_SET_EINVAL;
+ return NULL;
+ }
/* The May 93 draft of P1003.4/D14.1 (redesignated as 1003.1b)
[System Application Program Interface (API) Amendment 1: