summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio
Commit message (Collapse)AuthorAgeFilesLines
* MFC r315162:pfg2017-04-073-4/+4
| | | | | | | | libc: provide some bounds-checking through reallocarray(3). reallocarray(3) is a non portable extension that originated in OpenBSD. Given that it is already in FreeBSD's libc it is useful for the cases where reallocation involves a multiplication.
* MFC r305413ache2016-09-081-4/+10
| | | | Fix error handling.
* MFC r305406,r305409,r305412ache2016-09-081-9/+25
| | | | | | | | | | | | | 1) Fix errors handling. 2) Prevent out of bounds access to ws[-1] (passed buffer) which happens when the first mb sequence is incomplete and there are not enougn chars in the read buffer. ws[-1] may lead to memory faults or false results, in case the memory here contains '\n'. 3) Fix n == 1 case. Here should be no physical read (fill buffer) attempt (we read n - 1 chars with the room for NUL, see fgets()), and no NULL return.
* MFC r305241ache2016-09-051-1/+11
| | | | | | | fgetwc(3) may set both __SEOF and __SERR at once (in case of incomplete sequence near EOF), so we can't just check for (wc == WEOF && !__sfeof(fp)) and must relay on __sferror(fp) with __SERR clearing/restoring.
* MFC r305219ache2016-09-041-5/+8
| | | | | If error happens, don't overwrite original errno comes from __mbrtowc() and __srefill().
* MFC r304607,r304641,r304819,r304811ache2016-08-274-28/+15
| | | | | | | | | | | | | | | | | 1) Don't forget to set __SERR on __slbexpand() error. 2) Remove "Fast path" from fgetwc()/fputwc() since it can't detect encoding errors and ignores them all. One of affected encoding example: US-ASCII 3) Original fgetln() from 44lite return success for line tail errors, i.e. partial line, but set __SERR and errno in the same time, which is inconsistent. Now both OpenBSD and NetBSD return failure, i.e. no line and set error indicators for such case, so make our fgetln() and fgetwln() (as its wide version) compatible with the rest of *BSD. PR: 212033
* MFC r304810ache2016-08-273-2/+14
| | | | | | | | Don't check for __SERR which may stick from one of any previous stdio functions. __SERR is for user and the rest of stdio code do not check it for error sensing internally, only set it. In vf(w)printf.c here it is more easy to save __SERR, clear and restore it.
* MFC r302824ache2016-08-171-3/+3
| | | | | | | | | | | | | 1) Eliminate possibility to call __*collate_range_cmp() with inclomplete locale (which cause core dump) by removing whole 'table' argument by which it passed. 2) Restore __collate_range_cmp() in __sccl(). 3) Collating [a-z] range in regcomp() work only for single bytes locales (we can't do it now for other ones). In previous code only first 256 wchars are considered and all others are just silently dropped from the range.
* Fix regression from r301461.pfg2016-06-101-3/+3
| | | | | | | | | | | | The fix to the __collate_range_cmp() ABI breakage missed some replacements in libc's vfscanf(). Replace them with __wcollate_range_cmp() which does what is expected. This was breaking applications like xterm and pidgin when using wide characters. Reported by: Vitalij Satanivskij Approved by: re
* libc: Actually export fopencookie(3)cem2016-05-121-0/+1
| | | | | | A follow-up to r299456. Sponsored by: EMC / Isilon Storage Division
* libc: Add fopencookie(3) wrapper around funopen(3)cem2016-05-114-3/+329
| | | | | | Reviewed by: jhb, oshogbo Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D6282
* libc: spelling fixes.pfg2016-04-301-1/+1
| | | | Mostly on comments.
* freopen(3): prevent uninitialized errno.pfg2016-03-301-1/+0
| | | | | | | Revert completley r297408 (and r297407): this ends up touching errno, which we are not allowed to do. Pointed out by: ache, bde
* freopen(3): prevent uninitialized errno.pfg2016-03-301-2/+2
| | | | | | | | Revert r297407 and redo it cleanly. Pointed out by: Jukka A. Ukkonen CID: 1018720 MFC after: 1 week
* freopen(3): prevent uninitialized errno.pfg2016-03-301-1/+2
| | | | | | | The case doesn't look very likely but clean the possibility nevertheless CID: 1018720 MFC after: 1 week
* Fix bunch of .Xrs.trasz2016-03-281-2/+2
| | | | | MFC after: 1 month Sponsored by: The FreeBSD Foundation
* fputs: Return the number of bytes written.pfg2016-02-151-1/+1
| | | | | | | Fix r295631: wrong value. Pointy hat: pfg (me) Pointed out by: bde
* getln: We cannot expand the buffer beyond INT_MAX.pfg2016-02-152-2/+12
| | | | | | | | | In such cases return ENOMEM. This is a limitation of our implementation, alternatively you may consider getline(3). Differential Revision: https://reviews.freebsd.org/D442 (Partial) Obtained from: Apple Inc. (Libc 997.90.3) Relnotes: yes
* fputs: Return the number of bytes written.pfg2016-02-151-0/+3
| | | | | | | | | | | | | | | | | | | | | | | POSIX.1-2008 requires that successful completion simply return a non-negative integer. We have regularly returned a constant value. Another, equally valid, implementation convention implies returning the number of bytes written. Adopt this last convention to be in line with what Apple's libc does. POSIX also explicitly notes: Note that this implementation convention cannot be adhered to for strings longer than {INT_MAX} bytes as the value would not be representable in the return type of the function. For backwards-compatibility, implementations can return the number of bytes for strings of up to {INT_MAX} bytes, and return {INT_MAX} for all longer strings. Developers shouldn't depend specifically on either convention but the change may help port software from Apple. Differential Revision: https://reviews.freebsd.org/D442 (Partial) Obtained from: Apple Inc. (Libc 997.90.3 with changes) Relnotes: yes
* Use __alignof__ instead of assuming int64_t to get the rightimp2015-12-301-10/+1
| | | | | | alignment. Differential Revision: https://reviews.freebsd.org/D4708
* The FILE structure has a mbstate_t in it. This structure needs to beimp2015-12-271-2/+14
| | | | | | | | | | aligned on a int64_t boundary. However, when we allocate the array of these structures, we use ALIGNBYTES which defaults to sizeof(int) on arm, i386 and others. The i386 stuff can handle unaligned accesses seemlessly. However, arm cannot. Take this into account when creating the array of FILEs, and add some comments about why. Differential Revision: https://reviews.freebsd.org/D4708
* Use stdint.h instead of inttypes.h as the latter pollutes namespace morengie2015-12-092-4/+4
| | | | | | | MFC after: 3 days X-MFC with: r292004 Submitted by: bde Sponsored by: EMC / Isilon Storage Division
* Fix compilation when -DDEBUG is defined by adding inttypes.h #includengie2015-12-082-0/+6
| | | | | | | | | | for intmax_t MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D4434 Reported by: cppcheck Reviewed by: jhb Sponsored by: EMC / Isilon Storage Division
* Link fclose(3) to fdclose(3)ngie2015-11-251-1/+1
| | | | | | X-MFC with: r285140 MFC after: 3 weeks (need to evaluate whether or not r285140 can be MFCed) Sponsored by: EMC / Isilon Storage Division
* markup fixesdes2015-11-231-3/+9
|
* 1) Remove my overcomplicated error fallback and just return errorache2015-11-121-11/+3
| | | | | | | | | immediatelly as old code does, now for append modes too. Real use case for such fallback is impossible (unless specially crafted). 2) Remove now unneded include I forgot to remove in prev. commits. MFC after: 1 week
* Reorganize code to elimitate one _sseek() call for append modes.ache2015-11-081-21/+14
| | | | MFC after: 1 week
* Microoptimize.ache2015-11-011-4/+3
|
* Addition to prev. commit.ache2015-11-011-4/+6
| | | | | | | In some edge cases fp->_p can be changed in _sseek(), recalculate. PR: 204156 MFC after: 1 week
* Don't seek to the end if write buffer is empty (in append modes).ache2015-11-011-11/+12
| | | | | PR: 204156 MFC after: 1 week
* Add _flags2 per jhb@ suggestion since no room left in _flags.ache2015-10-286-10/+7
| | | | | | Rewrite O_APPEND flag checking using new __S2OAP flag. MFC after: 3 weeks
* According to POSIX, a write operation shall start at the current size ofache2015-10-251-0/+3
| | | | | | the stream (if mode had 'a' as the first character). MFC after: 1 week
* Since no room left in the _flags, reuse __SALC for O_APPEND.ache2015-10-245-19/+31
| | | | | | | It helps to remove _fcntl() call from _ftello() and optimize seek position calculation in _swrite(). MFC after: 3 weeks
* Use ANSI C prototypes. Eliminates -Wold-style-definition warnings.rodrigc2015-09-203-8/+6
|
* Remove names from some prototypesrodrigc2015-09-201-1/+1
|
* Remove names from some prototypesrodrigc2015-09-201-2/+2
|
* Add declarations to eliminate -Wmissing-prototypes warningsrodrigc2015-09-203-0/+6
|
* Switch libc from using _sig{procmask,action,suspend} symbols, whichkib2015-08-291-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | are aliases for the syscall stubs and are plt-interposed, to the libc-private aliases of internally interposed sigprocmask() etc. Since e.g. _sigaction is not interposed by libthr, calling signal() removes thr_sighandler() from the handler slot etc. The result was breaking signal semantic and rtld locking. The added __libc_sigprocmask and other symbols are hidden, they are not exported and cannot be called through PLT. The setjmp/longjmp functions for x86 were changed to use direct calls, and since PIC_PROLOGUE only needed for functional PLT indirection on i386, it is removed as well. The PowerPC bug of calling the syscall directly in the setjmp/longjmp implementation is kept as is. Reported by: Pete French <petefrench@ingresso.co.uk> Tested by: Michiel Boland <boland37@xs4all.nl> Reviewed by: jilles (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Fix a couple of markup typos.jhb2015-08-021-3/+3
| | | | MFC after: 2 weeks
* Add fdclose(3) function.oshogbo2015-07-043-27/+134
| | | | | | | | | | This function is equivalent to fclose(3) function except that it does not close the underlying file descriptor. fdclose(3) is step forward to make FILE structure private. Reviewed by: wblock, jilles, jhb, pjd Approved by: pjd (mentor) Differential Revision: https://reviews.freebsd.org/D2697
* Reassign copyright statements on several files from Advancedjhb2015-04-233-3/+3
| | | | | | | Computing Technologies LLC to Hudson River Trading LLC. Approved by: Hudson River Trading LLC (who owns ACT LLC) MFC after: 1 week
* Support file verification in MAC.rodrigc2015-04-221-0/+4
| | | | | | | | | | | | | | * Add VCREAT flag to indicate when a new file is being created * Add VVERIFY to indicate verification is required * Both VCREAT and VVERIFY are only passed on the MAC method vnode_check_open and are removed from the accmode after * Add O_VERIFY flag to rtld open of objects * Add 'v' flag to __sflags to set O_VERIFY flag. Submitted by: Steve Kiernan <stevek@juniper.net> Obtained from: Juniper Networks, Inc. GitHub Pull Request: https://github.com/freebsd/freebsd/pull/27 Relnotes: yes
* libc: clean some set-but-not-used errors.pfg2015-02-181-3/+0
| | | | | | | These were found by gcc 5.0 on Dragonfly BSD, however I made no attempt to silence the false positives. Obtained from: DragonFly (cf515c3a6f3a8964ad592e524442bc628f8ed63b)
* In r268924 __fflush was modified so that when write(2) was not successful,delphij2014-12-101-4/+6
| | | | | | | | | | | | _p and _w are adjusted to account for the partial write (if any). However, _p and _w should not be unconditionally adjusted and should only be changed when we actually wrote some bytes, or the accumulated accounting error will eventually result in a heap buffer overflow. Reported by: adrian and alfred (Norse Corporation) Security: FreeBSD-SA-14:27.stdio Security: CVE-2014-8611
* Fix prototypes.kevlo2014-10-281-3/+3
|
* Fix the example: free the memory that was allocated by getline().n_hibma2014-07-311-0/+1
|
* In the "Too many open files" edge cases don't try to preserve oldache2014-07-261-0/+8
| | | | | | | number for non-std* descriptors, but close old file and retry. Obtained from: inspired by Apple's change from pfg@ MFC after: 2 weeks
* Avoid possible cast degradation.pfg2014-07-222-2/+2
| | | | | | | | | | | For consistency with r268985 for fputs.c, assign iov_len first, avoiding the cast to uio_resid (int in stdio) from degrading the value. We currently don't support lengths higher than INT_MAX so this change is little more than cosmetic. MFC after: 3 days
* For "a"-mode files and rewind/fseek + fwrite combination return meaningfulache2014-07-221-0/+18
| | | | | value now, like Apple does, but avoid their __sflush physical write performance degradation as much as possible.
* Back the whole change out until I figure out how to obtain O_APPEND,ache2014-07-221-6/+0
| | | | it can't be used in this field at all.
OpenPOWER on IntegriCloud