svn commit: r290231 - head/lib/libc/stdio
Andrey A. Chernov
ache at FreeBSD.org
Sun Nov 1 06:47:07 UTC 2015
Author: ache
Date: Sun Nov 1 06:47:05 2015
New Revision: 290231
URL: https://svnweb.freebsd.org/changeset/base/290231
Log:
Addition to prev. commit.
In some edge cases fp->_p can be changed in _sseek(), recalculate.
PR: 204156
MFC after: 1 week
Modified:
head/lib/libc/stdio/ftell.c
Modified: head/lib/libc/stdio/ftell.c
==============================================================================
--- head/lib/libc/stdio/ftell.c Sun Nov 1 06:15:14 2015 (r290230)
+++ head/lib/libc/stdio/ftell.c Sun Nov 1 06:47:05 2015 (r290231)
@@ -125,10 +125,6 @@ _ftello(FILE *fp, fpos_t *offset)
* underlying object.
*/
n = fp->_p - fp->_bf._base;
- if (pos > OFF_MAX - n) {
- errno = EOVERFLOW;
- return (1);
- }
if (n > 0 &&
((fp->_flags & __SAPP) || (fp->_flags2 & __S2OAP))) {
int serrno = errno;
@@ -147,6 +143,12 @@ _ftello(FILE *fp, fpos_t *offset)
}
}
errno = serrno;
+ /* fp->_p can be changed in _sseek(), recalculate. */
+ n = fp->_p - fp->_bf._base;
+ }
+ if (pos > OFF_MAX - n) {
+ errno = EOVERFLOW;
+ return (1);
}
pos += n;
}
More information about the svn-src-head
mailing list