summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2001-09-01 11:21:28 +0000
committerache <ache@FreeBSD.org>2001-09-01 11:21:28 +0000
commit625f4c5432005830b7f8ae203a8ed7bdcbf67bb0 (patch)
tree49a1657a4de0774a1f328366f4f374f654050ed7 /lib/libc/stdio
parent116ee96d9df70379bb81e6984c869556395bd5fd (diff)
downloadFreeBSD-src-625f4c5432005830b7f8ae203a8ed7bdcbf67bb0.zip
FreeBSD-src-625f4c5432005830b7f8ae203a8ed7bdcbf67bb0.tar.gz
If lseek to wrong value sucessfully happens despite all pre-checks, set __SERR
to indicate that stream becomes inconsistent.
Diffstat (limited to 'lib/libc/stdio')
-rw-r--r--lib/libc/stdio/fseek.c1
-rw-r--r--lib/libc/stdio/stdio.c4
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/libc/stdio/fseek.c b/lib/libc/stdio/fseek.c
index a3c80c1..d06e408 100644
--- a/lib/libc/stdio/fseek.c
+++ b/lib/libc/stdio/fseek.c
@@ -297,6 +297,7 @@ dumb:
(*seekfn)(fp->_cookie, (fpos_t)offset, whence) == POS_ERR)
return (-1);
if (ltest && fp->_offset > LONG_MAX) {
+ fp->_flags |= __SERR;
errno = EOVERFLOW;
return (-1);
}
diff --git a/lib/libc/stdio/stdio.c b/lib/libc/stdio/stdio.c
index 46dd2df..ea8a4c1 100644
--- a/lib/libc/stdio/stdio.c
+++ b/lib/libc/stdio/stdio.c
@@ -118,8 +118,10 @@ __sseek(cookie, offset, whence)
* (fseek) in the cases it can't detect.
*/
if (ret < 0) {
- if (errret == 0)
+ if (errret == 0) {
+ fp->_flags |= __SERR;
errno = EINVAL;
+ }
fp->_flags &= ~__SOFF;
ret = -1;
} else {
OpenPOWER on IntegriCloud