summaryrefslogtreecommitdiff
path: root/lib/libc
Commit message (Collapse)AuthorAgeFilesLines
...
* MFC r288995:Enji Cooper2016-12-032-4/+4
| | | | | | | | | | r288995 (by rodrigc): Use proper function prototypes. Eliminates -Wstrict-prototypes warning Notes: svn path=/stable/10/; revision=309495
* MFC r287347:Enji Cooper2016-12-031-21/+7
| | | | | | | | | | | r287347 (by rodrigc): Use ANSI C prototypes. Eliminates gcc 4.9 warnings. Notes: svn path=/stable/10/; revision=309494
* MFC r301754,r301769:Enji Cooper2016-12-034-26/+26
| | | | | | | | | | | | | | | | | | | | | r301754 (by pfg): libc/rpc: Make use of some xdr_* macros. xdr_rpcprog and xdr_rpcvers were broken in older versions of FreeBSD but were fixed in r296394. Give them some use hoping they help make the code somewhat more readable. r301769 (by pfg): libc/rpc: Make use of some xdr_* macros. (part 2) xdr_rpcproc, xdr_rpcprog and xdr_rpcvers were broken in older versions of FreeBSD but fixed in r296394. Give them some use hoping they help make the code somewhat more readable. Notes: svn path=/stable/10/; revision=309493
* MFC r278041:Enji Cooper2016-12-031-1/+1
| | | | | | | | | | | | | | | r278041 (by pfg): rpc: Uninitialized pointer read Initialize *xprt to avoid exposing a random value in cleanup_svc_vc_create. CID: 1018723 Phabric: D1749 Notes: svn path=/stable/10/; revision=309492
* MFC r287341,r287342,r287348:Enji Cooper2016-12-0316-399/+184
| | | | | | | | | | | | | | | | | | | | | r287341 (by rodrigc): Use ANSI C prototypes. Eliminates gcc 4.9 warnings. r287342 (by rodrigc): Mark unused parameters to reduce gcc 4.9 warnings. r287348 (by rodrigc): Use correct function prototype for signal handler. Eliminates gcc 4.9 warning. Notes: svn path=/stable/10/; revision=309489
* MFC r288113:Enji Cooper2016-12-0335-409/+235
| | | | | | | | | r288113 (by rodrigc): Use ANSI C prototypes. Eliminates -Wold-style-definition warnings. Notes: svn path=/stable/10/; revision=309487
* MFC r297790:Enji Cooper2016-12-0322-52/+49
| | | | | | | | | | | | | | r297790 (by pfg): libc: replace 0 with NULL for pointers. While here also cleanup some surrounding code; particularly drop some malloc() casts. Found with devel/coccinelle. Notes: svn path=/stable/10/; revision=309485
* MFC r287350:Enji Cooper2016-12-035-12/+12
| | | | | | | | | | | r287350 (by rodrigc): Use ANSI C prototypes. Eliminates gcc 4.9 warnings. Notes: svn path=/stable/10/; revision=309484
* MFC r299704:Enji Cooper2016-12-034-6/+83
| | | | | | | | | | | | | | | | | | | r299704 (by vangyzen): iconvctl(3): remove superfluous NULL pointer tests convname and dst are guaranteed to be non-NULL by iconv_open(3). src is an array. Remove these tests for NULL pointers. While I'm here, eliminate a strlcpy with a correct but suspicious-looking calculation for the third parameter (i.e. not a simple sizeof). Compare the strings in-place instead of copying. Found by: bdrewery Found by: Coverity CID: 1130050, 1130056 Notes: svn path=/stable/10/; revision=309482
* MFstable/11 r309453:Enji Cooper2016-12-031-0/+4
| | | | | | | | | MFC r307700: Only build lib/libc/tests/iconv if MK_ICONV != no Notes: svn path=/stable/10/; revision=309454
* MFC r308904Eric van Gyzen2016-11-303-15/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix error reporting from wcstof() When wcstof() skipped initial space and then parsing failed, it set endptr to the first non-space character. Fix it to correctly report failure by setting endptr to the beginning of the input string. The fix is from theraven@, who fixed this bug in wcstod() and wcstold() in r227753. While I'm here: Move assignments out of declarations in wcstod() and wcstold(). This is against my personal preference, but it is our agreed style(9). Set endptr correctly on malloc() failure in all three functions. Remove an incorrect comment: This is pointer arithmetic, so the code was not actually making that assumption. wcstold() advanced the wcp pointer beyond leading whitespace and then reset it back to the beginning of the string. Do not reset it. This seems to have no functional effect, since strtold_l() also skips leading whitespace. I'm making the change to keep this function consistent with wcstof() and wcstod(), and because the C11 spec prescribes the use of iswspace() to skip leading space. Reported by: libc++ unit test for std::stof(std::wstring) Sponsored by: Dell EMC Notes: svn path=/stable/10/; revision=309334
* MFC 308056: Fix formatting of tables.John Baldwin2016-11-231-123/+123
| | | | | | | | | | | | | | Specifically, use .Ta instead of tabs to separate column entries. While here fix a few other things: - Use .Sy for all column headers (previously only the first column header was bold) - Use .Dv to markup constants used for MIB names. - Use "1234" and "4321" for the byte order descriptions without thousands separators. - Mark up header files in the first table with .In. Notes: svn path=/stable/10/; revision=309072
* MFstable/11 r307718:Enji Cooper2016-10-212-4/+4
| | | | | | | | | | | | MFC r305920: Remove spurious newlines from atf_tc_fail calls This changes the results from broken (incorrect) to failed (correct) on i386 Notes: svn path=/stable/10/; revision=307719
* MFC r306332:Pedro F. Giffuni2016-10-191-1/+2
| | | | | | | | | btree(3): don't shortcut closing if the metadata is dirty. Obtained from: NetBSD (from krb5 tree) Notes: svn path=/stable/10/; revision=307641
* MFC r305628: intro(2),_exit(2): Update for reaperJilles Tjoelker2016-10-122-5/+10
| | | | | | | (procctl(PROC_REAP_ACQUIRE)). Notes: svn path=/stable/10/; revision=307155
* MFC r306334:Konstantin Belousov2016-10-033-0/+244
| | | | | | | | | | Document thr_suspend(2) and thr_wake(2). MFC r306506: Reword the statement. Notes: svn path=/stable/10/; revision=306626
* MFC r306075,r306109Andrey A. Chernov2016-09-281-14/+32
| | | | | | | | | | | | | | | | | | | | | 1) Microoptimize %p case. 2) Implememt %u for GNU compatibility. 3) Don't forget to advance buf for %w/%u. 4) Fail with incomplete week (week 0) request and no such week in the year. 5) Fix yday formula when Sunday requested and the week started from Monday. 6) Fail with impossible yday for incomplete week (week 0) and direct %w/%u request. 7) Shift yday/wday to the first day of the year, if incomplete week (week 0) requested and no %w/%u used. 8) For already non-standard %z extension implement GNU compatible formats: +hh and -hh. 9) Check for incorrect values for %z. PR: 212983 (case 3 only) Notes: svn path=/stable/10/; revision=306414
* MFC r274925: misc mdoc fixes.Sergey Kandaurov2016-09-271-1/+0
| | | | Notes: svn path=/stable/10/; revision=306378
* MFC r305956: Add manpage for rctl_* system callsEric Badger2016-09-242-0/+225
| | | | | | | | Approved by: kib (mentor) Sponsored by: Dell Technologies Notes: svn path=/stable/10/; revision=306298
* MFC r303889:Pedro F. Giffuni2016-09-081-1/+1
| | | | | | | | | | | libc/rpc: replace comma with semicolon when pertinent. Uses of commas instead of a semicolons can easily go undetected. The comma can serve as a statement separator but this shouldn't be abused when statements are meant to be standalone. Notes: svn path=/stable/10/; revision=305617
* MFC r305413Andrey A. Chernov2016-09-081-4/+10
| | | | | | | Fix error handling. Notes: svn path=/stable/10/; revision=305583
* MFC r305406,r305409,r305412Andrey A. Chernov2016-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. Notes: svn path=/stable/10/; revision=305577
* MFC r305154: directory(3): Deprecate readdir_r(). Clarify dirent buffers.Jilles Tjoelker2016-09-071-2/+24
| | | | | | | | | | | | | | | | | | In existing implementations including FreeBSD, there is no reason to use readdir_r() in the common case where potentially multiple threads each list their own directory. Code using readdir() is simpler. What's more, although readdir_r() can safely be used on FreeBSD because NAME_MAX is forced to 255, it cannot be used safely on systems where {NAME_MAX} is not fixed. As a concrete example, FAT/NTFS filenames can be up to 255 UTF-16 code units long, which can be up to 765 UTF-8 bytes. Deprecating readdir_r() in POSIX has been proposed in http://www.austingroupbugs.net/view.php?id=696 and glibc wants to deprecate it as well. Notes: svn path=/stable/10/; revision=305569
* MFC r305090: getvfsbyname(3): Remove [EFAULT] error.Jilles Tjoelker2016-09-071-6/+1
| | | | | | | | Since r101651 in 2002, getvfsbyname() has written *vfc using userland memcpy(), so the [EFAULT] error no longer occurs. Notes: svn path=/stable/10/; revision=305568
* MFC r305241Andrey A. Chernov2016-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. Notes: svn path=/stable/10/; revision=305403
* MFC r305144Andrey A. Chernov2016-09-052-2/+2
| | | | | | | | | | | 'addrlen' does not matter when we need to find the first non-zero bit in the byte from the left and 'addrlen' already counted in 'lim'. PR: 212121 Submitted by: Herbie.Robinson@stratus.com Notes: svn path=/stable/10/; revision=305401
* MFC r305219Andrey A. Chernov2016-09-041-5/+8
| | | | | | | | If error happens, don't overwrite original errno comes from __mbrtowc() and __srefill(). Notes: svn path=/stable/10/; revision=305369
* MFC r304928:Konstantin Belousov2016-09-0320-467/+67
| | | | | | | | | | | | | | | | Do not obliterate errno value in the main thread during ptrace(2) call on x86. MFC r304931: Follow ABI when calling __error from the ptrace(2) wrapper. MFC r305012: Rewrite ptrace(2) wrappers in C. MFC r305022: Restore the requirement of setting errno to zero before calling ptrace(2). Notes: svn path=/stable/10/; revision=305341
* MFC r305133Andrey A. Chernov2016-09-031-0/+19
| | | | | | | | Apply the same qsort() usage fix as in r304911 getaddrinfo.c qsort() can't be stabilized with just return(-1) alone. Notes: svn path=/stable/10/; revision=305316
* MFstable/11 r304950:Enji Cooper2016-09-021-3/+3
| | | | | | | | | | | | | | | | MFC r304033: Increase timeout from 10 minutes to 20 minutes for all tests On particular slow networks, it can (on average) take longer to resolve hosts to IP* addresses. 20 minutes seemed reasonable for my work network This will be solved in a more meaningful way (if possible) using concurrency in the near future Notes: svn path=/stable/10/; revision=305272
* MFC r305024:Konstantin Belousov2016-09-011-41/+41
| | | | | | | Typesetting fixes. Notes: svn path=/stable/10/; revision=305186
* MFC r304911Andrey A. Chernov2016-08-301-0/+19
| | | | | | | | | | | | | | | | The formal behavior of qsort is unstable with regard to objects that are equal. Unfortunately, RFC 3484 requires that otherwise equal objects remain in the order supplied by the DNS server. The present code attempts to deal with this by returning -1 for objects that are equal (i.e., returns that the first parameter is less then the second parameter). Unfortunately, the qsort API does not state that the first parameter passed in is in any particular position in the list. PR: 212122 Submitted by: Herbie.Robinson@stratus.com Notes: svn path=/stable/10/; revision=305037
* MFstable/11 r304945:Enji Cooper2016-08-291-3/+5
| | | | | | | | | | | | | | | | MFC r304034: Initialize `ai` to NULL and test for `ai` with type-appropriate values Depending on the address family and ai_flags containing AI_V4MAPPED, it might not do a proper DNS lookup on the provided DNS address Convert some `ai` boolean true/false checks to NULL/non-NULL while here. PR: 211790 Notes: svn path=/stable/10/; revision=304982
* MFC r304607,r304641,r304819,r304811Andrey A. Chernov2016-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 Notes: svn path=/stable/10/; revision=304893
* MFC r304810Andrey A. Chernov2016-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. Notes: svn path=/stable/10/; revision=304888
* MFC r304703, r304755Andrey A. Chernov2016-08-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | 1) _locale.h LC_*_MASK bit shifting order was partially broken from the initial commit time at year 2012. Only LC_COLLATE_MASK and LC_CTYPE_MASK are in the right order. The order here should match XLC_* from "xlocale_private.h" which, in turn, match LC_* publicly visible order from <locale.h> which determines how locale components are stored in the structure. LC_*_MASK -> XLC_* translation done as "ffs(mask) - 1" in the querylocale() and equivalent shift loop in the newlocale(), so mapped to some wrong components (excluding two mentioned above). Formally the fix is ABI breakage, but old code using those masks never works properly in any case. Only newlocale() and querylocale() are affected. 2) msgcat.c Use current locale (f.e. set by thread). It was global locale always previously. PR: 211743 Notes: svn path=/stable/10/; revision=304862
* MFC r295632Andrey A. Chernov2016-08-252-2/+11
| | | | | | | | | | | | | getln: We cannot expand the buffer beyond INT_MAX (_size overflows). 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) Notes: svn path=/stable/10/; revision=304816
* Direct commit, equal to MFC part of r295632 which is not planned forAndrey A. Chernov2016-08-231-0/+1
| | | | | | | | MFC at whole. Set __SERR on __slbexpand() errors. Notes: svn path=/stable/10/; revision=304648
* MFC 304476: Fix various nits in the aio operation manpages.John Baldwin2016-08-224-26/+15
| | | | | | | | | | | | | | | | | | | | | - Avoid double use of "request" in a single sentence. Instead, describe aio_sigevent as being used to request notification of the associated operation's completion. This matches the language used to describe aio_sigevent in aio(4). - Simplify the prohibition on modifying buffers while requests are in flight. - Fix case mismatch. - Drop note about not using stack variables. C programmers should be able to figure out if a stack variable is safe based on the later warning about the life cycle requirements of control blocks. - Remove prohibition on modifying the I/O buffer for aio_fsync() since it does not use an I/O buffer. For aio_mlock(), prohibit modifications to the mapping (e.g. due to mprotect, munmap, mmap, etc.) but do not prohibit modifications to the memory backing the buffer (stores into the pages backing the buffer). Notes: svn path=/stable/10/; revision=304617
* Unbreak the build when MK_TESTS != no after r304527Enji Cooper2016-08-211-2/+3
| | | | | | | | | | | | - src.opts.mk should be bsd.own.mk on ^/stable/10 - LIBADD should be DPADD/LDADD on ^/stable/10 Pointyhat to: kib Reported by: Olivier Pinter <oliver.pinter@hardenedbsd.org> Sponsored by: EMC / Isilon Storage Division Notes: svn path=/stable/10/; revision=304553
* MFC r303795:Konstantin Belousov2016-08-208-1/+450
| | | | | | | Add __cxa_thread_atexit(3) API implementation. Notes: svn path=/stable/10/; revision=304527
* MFC r303794:Konstantin Belousov2016-08-201-1/+5
| | | | | | | Create namespace for the symbols added during 12-CURRENT cycle. Notes: svn path=/stable/10/; revision=304526
* MFC 303001: Add PTRACE_VFORK to trace vfork events.John Baldwin2016-08-191-0/+42
| | | | | | | | | | | | First, PL_FLAG_FORKED events now also set a PL_FLAG_VFORKED flag when the new child was created via vfork() rather than fork(). Second, a new PL_FLAG_VFORK_DONE event can now be enabled via the PTRACE_VFORK event mask. This new stop is reported after the vfork parent resumes due to the child calling exit or exec. Debuggers can use this stop to reinsert breakpoints in the vfork parent process before it resumes. Notes: svn path=/stable/10/; revision=304499
* MFC r302943,r302944,r303004,r303010,r303011,r303013,r303014,r303074,Andrey A. Chernov2016-08-162-213/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r303088,r303142,r303208,r303210,r303530,r303536,r303564,r303565, r303706 In short: 1) All situations with glob(3) error return codes are well defined by POSIX, so rewrite old sporadic errors processing to match those definitions. Including subcases: Both C99 and POSIX directly prohibits any standard function to set errno to 0. Breaking this rule in 2001 NetBSD hack was imported which attempts to workaround very limited glob(3) return codes amount. Use POSIX-compatible workaround now with E2BIG which can't comes from other functions used instead of prohibited 0. Process errors happpens in (*readdirfunc)() too, as POSIX requires. Per POSIX GLOB_NOCHECK should return original pattern, unmodified, if no matches found. But our code strips all '\' returning it. Rewrite the code to allow to return original pattern. GLOB_ERR and gl_errfunc are supposed to work only for real directories per POSIX, so don't act on missing or plain files for ENOENT or ENOTDIR (as TODO in the code suggested). Remove the hack in the manpage describing how to skip ENOENT and ENOTDIR in gl_errfunc, it is unneeded now. Per POSIX GLOB_ERR must be considered even if gl_errfunc is not set, old code skips it in that case. 2) For near MAXPATHLEN long pathes old glob(3) code can operate on truncated results, prevent it in several places. 3) Results was not sorted according to collate as POSIX requires. 4) globtilde() forget to convert expanded user home dir from multibyte to wide chars. Moreover, those chars are addded as not protected, so can be treated as special chars. 5) Backward hack for EILSEQ in g_Ctoc() was not implemented, so all pathes with illegal byte sequences are skipped as result, implement it now. 6) GLOB_BRACE was somehow broken. First it repeatedly calls glob0() in globexp1() recursive calls, but glob0() was not supposed to be called repeatedly in the original code. It finalize results by possible adding original pattern for no match case, may return GLOB_NOMATCH error and by sorting all things. Original pattern adding or GLOB_NOMATCH error can happens each time glob0() called repeatedly, and sorting happens for one item only, all things are never sorted. Second, f.e. "a{a" pattern does not match "a{a" file but match "a" file instead. Third, some errors (f.e. for limits or overflow) can be ignored by GLOB_BRACE code because it forces return (0). Add non-finalizing flag to glob0() and make globexp0() wrapper around recursively called globexp1() to finalize things like glob0() does. Reorganize braces code to work correctly. 7) Don't allow MB_CUR_MAX * strlen overallocation hits GLOB_LIMIT_STRING (ARG_MAX) limit, use final string length, not malloced space for it. Notes: svn path=/stable/10/; revision=304203
* MFC 302900,302902,302921,303461,304009:John Baldwin2016-08-151-41/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a mask of optional ptrace() events. 302900: Add a test for user signal delivery. This test verifies we get the correct ptrace event details when a signal is posted to a traced process from userland. 302902: Add a mask of optional ptrace() events. ptrace() now stores a mask of optional events in p_ptevents. Currently this mask is a single integer, but it can be expanded into an array of integers in the future. Two new ptrace requests can be used to manipulate the event mask: PT_GET_EVENT_MASK fetches the current event mask and PT_SET_EVENT_MASK sets the current event mask. The current set of events include: - PTRACE_EXEC: trace calls to execve(). - PTRACE_SCE: trace system call entries. - PTRACE_SCX: trace syscam call exits. - PTRACE_FORK: trace forks and auto-attach to new child processes. - PTRACE_LWP: trace LWP events. The S_PT_SCX and S_PT_SCE events in the procfs p_stops flags have been replaced by PTRACE_SCE and PTRACE_SCX. PTRACE_FORK replaces P_FOLLOW_FORK and PTRACE_LWP replaces P2_LWP_EVENTS. The PT_FOLLOW_FORK and PT_LWP_EVENTS ptrace requests remain for compatibility but now simply toggle corresponding flags in the event mask. While here, document that PT_SYSCALL, PT_TO_SCE, and PT_TO_SCX both modify the event mask and continue the traced process. 302921: Rename PTRACE_SYSCALL to LINUX_PTRACE_SYSCALL. 303461: Note that not all optional ptrace events use SIGTRAP. New child processes attached due to PTRACE_FORK use SIGSTOP instead of SIGTRAP. All other ptrace events use SIGTRAP. 304009: Remove description of P_FOLLOWFORK as this flag was removed. Notes: svn path=/stable/10/; revision=304188
* MFC 292894,292896: Add ptrace(2) reporting for LWP events.John Baldwin2016-08-121-1/+38
| | | | | | | | | | | | | | | | | 292894: Add ptrace(2) reporting for LWP events. Add two new LWPINFO flags: PL_FLAG_BORN and PL_FLAG_EXITED for reporting thread creation and destruction. Newly created threads will stop to report PL_FLAG_BORN before returning to userland and exiting threads will stop to report PL_FLAG_EXIT before exiting completely. Both of these events are only enabled and reported if PT_LWP_EVENTS is enabled on a process. 292896: Document the recently added support for ptrace(2) LWP events. Notes: svn path=/stable/10/; revision=304017
* MFC r301710:Mark Johnston2016-08-021-0/+4
| | | | | | | Fix an infinite loop in setnetgrent(3) with NIS netgroups. Notes: svn path=/stable/10/; revision=303680
* MFC 302899: Add documentation for the sigevent structure.John Baldwin2016-07-257-22/+175
| | | | | | | | | | | | | - Add a sigevent(3) manpage to give a general overview of the sigevent structure and the available notification mechanisms. - Document that AIO requests contain a nested sigevent structure that can be used to request completion notification. - Expand the sigevent details in other manuals to note details such as the extra values stored in a queued signal's information or in a posted kevent. Notes: svn path=/stable/10/; revision=303325
* Forget to merge this changes in prev. MFCAndrey A. Chernov2016-07-221-1/+3
| | | | Notes: svn path=/stable/10/; revision=303191
* MFC: r302824Andrey A. Chernov2016-07-226-19/+28
| | | | | | | | | | | | | | | | 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() works for single byte locales only (we can't do it for other ones). In previous state only first 256 wide chars are considered and all others are just silently dropped from the range. Notes: svn path=/stable/10/; revision=303185