aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-04-29NSS: Implement group merging support.Stephen Gallagher16-9/+475
https://sourceware.org/glibc/wiki/Proposals/GroupMerging == Justification == It is common today for users to rely on centrally-managed user stores for handling their user accounts. However, much software existing today does not have an innate understanding of such accounts. Instead, they commonly rely on membership in known groups for managing access-control (for example the "wheel" group on Fedora and RHEL systems or the "adm" group on Debian-derived systems). In the present incarnation of nsswitch, the only way to have such groups managed by a remote user store such as FreeIPA or Active Directory would be to manually remove the groups from /etc/group on the clients so that nsswitch would then move past nss_files and into the SSSD, nss-ldap or other remote user database. == Solution == With this patch, a new action is introduced for nsswitch: NSS_ACTION_MERGE. To take advantage of it, one will add [SUCCESS=merge] between two database entries in the nsswitch.conf file. When a group is located in the first of the two group entries, processing will continue on to the next one. If the group is also found in the next entry (and the group name and GID are an exact match), the member list of the second entry will be added to the group object to be returned. == Implementation == After each DL_LOOKUP_FN() returns, the next action is checked. If the function returned NSS_STATUS_SUCCESS and the next action is NSS_ACTION_MERGE, a copy of the result buffer is saved for the next pass through the loop. If on this next pass through the loop the database returns another instance of a group matching both the group name and GID, the member list is added to the previous list and it is returned as a single object. If the following database does not contain the same group, then the original is copied back into the destination buffer. This patch implements merge functionality only for the group database. For other databases, there is a default implementation that will return the EINVAL errno if a merge is requested. The merge functionality can be implemented for other databases at a later time if such is needed. Each database must provide a unique implementation of the deep-copy and merge functions. If [SUCCESS=merge] is present in nsswitch.conf for a glibc version that does not support it, glibc will process results up until that operation, at which time it will return results if it has found them or else will simply return an error. In practical terms, this ends up behaving like the remainder of the nsswitch.conf line does not exist. == Iterators == This feature does not modify the iterator functionality from its current behavior. If getgrnam() or getgrgid() is called, glibc will iterate through all entries in the `group` line in nsswitch.conf and display the list of members without attempting to merge them. This is consistent with the behavior of nss_files where if two separate lines are specified for the same group in /etc/groups, getgrnam()/getgrgid() will display both. Clients are already expected to handle this gracefully. == No Premature Optimizations == The following is a list of places that might be eligible for optimization, but were not overengineered for this initial contribution: * Any situation where a merge may occur will result in one malloc() of the same size as the input buffer. * Any situation where a merge does occur will result in a second malloc() to hold the list of pointers to member name strings. * The list of members is simply concatenated together and is not tested for uniqueness (which is identical to the behavior for nss_files, which will simply return identical values if they both exist on the line in the file. This could potentially be optimized to reduce space usage in the buffer, but it is both complex and computationally expensive to do so. == Testing == I performed testing by running the getent utility against my newly-built glibc and configuring /etc/nsswitch.conf with the following entry: group: group: files [SUCCESS=merge] sss In /etc/group I included the line: wheel:x:10:sgallagh I then configured my local SSSD using the id_provider=local to respond with: wheel:*:10:localuser,localuser2 I then ran `getent group wheel` against the newly-built glibc in multiple situations and received the expected output as described above: * When SSSD was running. * When SSSD was configured in nsswitch.conf but the daemon was not running. * When SSSD was configured in nsswitch.conf but nss_sss.so.2 was not installed on the system. * When the order of 'sss' and 'files' was reversed. * All of the above with the [SUCCESS=merge] removed (to ensure no regressions). * All of the above with `getent group 10`. * All of the above with `getent group` with and without `enumerate=true` set in SSSD. * All of the above with and without nscd enabled on the system.
2016-04-29libio: Fix fmemopen append mode failure (BZ# 20012)Adhemerval Zanella3-14/+138
The fmemopen implementation does not account the file position correctly in append mode. The following example shows the failure: === int main () { char buf[10] = "test"; FILE *fp = fmemopen (buf, 10, "a+"); fseek (fp, 0, SEEK_SET); int gr; if ((gr = getc (fp)) != 't' || (gr = getc (fp)) != 'e' || (gr = getc (fp)) != 's' || (gr = getc (fp)) != 't' || (gr = getc (fp)) != EOF) { printf ("%s: getc failed returned %i\n", __FUNCTION__, gr); return 1; } return 0; } === This is due both how read and write operation update the buffer position, taking in consideration buffer lenght instead of maximum position defined by the open mode. This patch fixes it and also fixes fseek not returning EINVAL for invalid whence modes. Tested on x86_64 and i686. [BZ #20012] * libio/fmemopen.c (fmemopen_read): Use buffer maximum position, not length to calculate the buffer to read. (fmemopen_write): Set the buffer position based on bytes written. (fmemopen_seek): Return EINVAL for invalid whence modes.
2016-04-29Fix clone (CLONE_VM) pid/tid reset (BZ#19957)Adhemerval Zanella22-141/+250
As discussed in libc-alpha [1] current clone with CLONE_VM (without CLONE_THREAD set) will reset the pthread pid/tid fields to -1. The issue is since memory is shared between the parent and child it will clobber parent's cached pid/tid leading to internal inconsistencies if the value is not restored. And even it is restored it may lead to racy conditions when between set/restore a thread might invoke pthread function that validate the pthread with INVALID_TD_P/INVALID_NOT_TERMINATED_TD_P and thus get wrong results. As stated in BZ19957, previously reports of this behaviour was close with EWONTFIX due the fact usage of clone outside glibc is tricky since glibc requires consistent internal pthread, while using clone directly may not provide it. However since now posix_spawn uses clone (CLONE_VM) to fixes various issues related to previous vfork usage this issue requires fixing. The vfork implementation also does something similar, but instead it negates and restores only the *pid* field and functions that might access its value know to handle such case (getpid, raise and pthread ones that uses INVALID_TD_P/INVALID_NOT_TERMINATED_TD_P macros that check only *tid* field). Also vfork does not call __clone directly, instead calling either __NR_vfork or __NR_clone directly. So this patch removes this clone behavior by avoiding setting the pthread pid/tid field for CLONE_VM. There is no need to check for CLONE_THREAD, since the minimum supported kernel in all architecture implies that CLONE_VM must be used with CLONE_THREAD, otherwise clone returns EINVAL. Instead of current approach of: int clone(int (*fn)(void *), void *child_stack, int flags, ...) [...] if (flags & CLONE_THREAD) goto do_syscall; pid_t new_value; if (flags & CLONE_VM) new_value = -1; else new_value = getpid (); THREAD_SETMEM (THREAD_SELF, pid, new_value); THREAD_SETMEM (THREAD_SELF, tid, new_value); do_syscall: [...] The new approach uses: int clone(int (*fn)(void *), void *child_stack, int flags, ...) [...] if (flags & CLONE_VM) goto do_syscall; pid_t new_value = getpid (); THREAD_SETMEM (THREAD_SELF, pid, new_value); THREAD_SETMEM (THREAD_SELF, tid, new_value); do_syscall: [...] It also removes the linux tst-getpid2.c test which expects the previous behavior and instead add another clone test. Tested on x86_64, i686, x32, powerpc64le, aarch64, armhf, s390, and s390x. I also did limited check on mips32 and sparc64 (using the new added test). I also got reviews from both m68k, hppa, and tile. So I presume for these architecture the patch works. The fixes for alpha, microblaze, sh, ia64, and nio2 have not been tested. [1] https://sourceware.org/ml/libc-alpha/2016-04/msg00307.html * sysdeps/unix/sysv/linux/Makefile [$(subdir) == nptl] (test): Remove tst-getpid2. (test): Add tst-clone2. * sysdeps/unix/sysv/linux/tst-clone2.c: New file. * sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Do not change pid/tid fields for CLONE_VM. * sysdeps/unix/sysv/linux/arm/clone.S: Likewise. * sysdeps/unix/sysv/linux/i386/clone.S: Likewise. * sysdeps/unix/sysv/linux/mips/clone.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise. * sysdeps/unix/sysv/linux/tst-getpid2.c: Remove file.
2016-04-29getnameinfo: Refactor and fix memory leak [BZ #19642]Florian Weimer2-240/+357
Split getnameinfo into separate functions for host and service lookups, and for different address families.
2016-04-29powerpc: Zero pad using memset in strncpy/stpncpyGabriel F. T. Gomes2-67/+61
Call __memset_power8 to pad, with zeros, the remaining bytes in the dest string on __strncpy_power8 and __stpncpy_power8. This improves performance when n is larger than the input string, giving ~30% gain for larger strings without impacting much shorter strings.
2016-04-29NEWS entry for CVE-2016-3075Florian Weimer1-0/+4
2016-04-29CVE-2016-3706: getaddrinfo: stack overflow in hostent conversion [BZ #20010]Florian Weimer3-62/+83
When converting a struct hostent response to struct gaih_addrtuple, the gethosts macro (which is called from gaih_inet) used alloca, without malloc fallback for large responses. This commit changes this code to use calloc unconditionally. This commit also consolidated a second hostent-to-gaih_addrtuple conversion loop (in gaih_inet) to use the new conversion function.
2016-04-29glob: Simplify the interface for the GLOB_ALTDIRFUNC callback gl_readdirFlorian Weimer6-24/+100
Previously, application code had to set up the d_namlen member if the target supported it, involving conditional compilation. After this change, glob will use the length of the string in d_name instead of d_namlen to determine the file name length. All glibc targets provide the d_type and d_ino members, and setting them as needed for gl_readdir is straightforward. Changing the behavior with regards to d_ino is left to a future cleanup.
2016-04-28Fix stdio.h namespace for pre-threads POSIX (bug 20014).Joseph Myers3-5/+16
stdio.h declares flockfile, ftrylockfile, funlockfile, getc_unlocked, getchar_unlocked, putc_unlocked and putchar_unlocked if __USE_POSIX, with comments "These are defined in POSIX.1:1996.". But __USE_POSIX is actually POSIX.1:1990, and these functions should not be declared for 1990 / 1992 / 1993 POSIX, XPG3 or XPG4. This patch fixes stdio.h to use __USE_POSIX199506 instead for those conditionals, as that is the correct conditional for the version of POSIX that introduced threads, and with threads those functions. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #20014] * libio/stdio.h (getc_unlocked): Declare if [__USE_POSIX199506], not [__USE_POSIX]. (getchar_unlocked): Likewise. (putc_unlocked): Likewise. (putchar_unlocked): Likewise. (flockfile): Likewise. (ftrylockfile): Likewise. (funlockfile): Likewise. * conform/Makefile (test-xfail-XPG3/stdio.h/conform): Remove variable. (test-xfail-XPG4/stdio.h/conform): Likewise.
2016-04-28conformtest: Add langinfo.h expectations for YESSTR, NOSTR.Joseph Myers3-3/+13
The conformtest expectations for langinfo.h fail to include the YESSTR and NOSTR constants that were present in UNIX98 and earlier XPG standards. This patch adds those expectations, so fixing three XFAILs. Tested for x86_64 and x86. * conform/data/langinfo.h-data [XPG3 || XPG4 || UNIX98] (YESSTR): Expect constant. [XPG3 || XPG4 || UNIX98] (NOSTR): Likewise. * conform/Makefile (test-xfail-XPG3/langinfo.h/conform): Remove variable. (test-xfail-XPG4/langinfo.h/conform): Likewise. (test-xfail-UNIX98/langinfo.h/conform): Likewise.
2016-04-28Also define off_t in stdio.h for UNIX98.Joseph Myers3-2/+8
Similar to my previous fix for XOPEN2K <https://sourceware.org/ml/libc-alpha/2016-04/msg00631.html>, now that bugs in the conformtest expectations for stdio.h for UNIX98 have been corrected, that case too fails because fseeko and ftello are now correctly expected, but off_t is not defined. As in that fix, it seems appropriate to define off_t in stdio.h for this standard as well, and this patch does so. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). * libio/stdio.h (off_t): Also define if [__USE_UNIX98]. [__USE_LARGEFILE64] (off64_t): Likewise. * conform/Makefile (test-xfail-UNIX98/stdio.h/conform): Remove variable.
2016-04-28getnameinfo: Do not preserve errnoFlorian Weimer2-10/+6
POSIX does not require it, the companion getaddrinfo implementation does not do it, and this behavior is not documented in the manual page, either.
2016-04-28resolv: Reindent preprocessor conditionals following cleanupsFlorian Weimer4-12/+18
2016-04-28resolv: Assorted preprocessor cleanupsFlorian Weimer3-39/+12
2016-04-28resolv: Remove SUNSECURITY preprocessor conditionalsFlorian Weimer3-37/+6
The macro is never defined.
2016-04-28resolv: Remove BSD compatibility conditionals and headerFlorian Weimer4-84/+10
2016-04-28resolv: Remove __BIND_NOSTATIC conditionalsFlorian Weimer3-4/+5
The macro is never defined.
2016-04-28resolv: Remove traces of ULTRIX supportFlorian Weimer3-19/+5
2016-04-28resolv: Remove RFC1535 conditionalsFlorian Weimer3-31/+8
2016-04-28resolv: Remove RESOLVSORT preprocess conditionalsFlorian Weimer4-23/+7
2016-04-28resolv: Remove BIND_UPDATE preprocessor conditionalsFlorian Weimer2-36/+5
2016-04-28inet: Remove SCCS keywordsFlorian Weimer8-29/+10
2016-04-28resolv: Remove _LIBC conditionalsFlorian Weimer7-140/+13
2016-04-28resolv: Remove SCCS and RCS keywordsFlorian Weimer24-100/+26
2016-04-28Fix ChangeLog date to reflect commit dateFlorian Weimer1-1/+1
2016-04-27conformtest: Correct stdio.h expectations for fdopen.Joseph Myers2-1/+4
The conform/ test of stdio.h wrongly does not expect fdopen for XPG3 and XPG4. fdopen is in those standards; this patch corrects the expectations. Tested for x86_64 and x86. * conform/data/stdio.h-data (fdopen): Expect also for [XPG3 || XPG4].
2016-04-27conformtest: Correct some stdio.h expectations for UNIX98.Joseph Myers2-6/+18
The conform/ test of stdio.h for UNIX98 fails with surious namespace errors for functions that are correctly declared for that standard. This patch fixes the expectations to expect those functions also for UNIX98. (This does not by itself fix the XFAIL of that test, and is not based a full review of the header expectations so there could still be other bugs in the expectations for this header for UNIX98.) Tested for x86_64 and x86. * conform/data/stdio.h-data (flockfile): Also expect for [UNIX98]. (fseeko): Likewise. (ftello): Likewise. (ftrylockfile): Likewise. (funlockfile): Likewise. (getc_unlocked): Likewise. (getchar_unlocked): Likewise. (putc_unlocked): Likewise. (putchar_unlocked): Likewise.
2016-04-27nss_dns: Skip over non-PTR records in the netent code [BZ #19868]Florian Weimer2-2/+25
This requires additional checks for the RDATA length and the availability of record metadata.
2016-04-27nss_dns: Remove custom offsetof macro definitionFlorian Weimer2-3/+6
2016-04-27nss_dns: Check address length before creating addrinfo result [BZ #19831]Florian Weimer2-20/+47
Previously, we allocated room in the result space before the check, leaving uninitialized data there in case the check failed. This also consolidates the behavior between single (A or AAAA) and dual (A and AAAA in parallel) queries. Single queries checked the record length against the QTYPE, not the RRTYPE.
2016-04-27resolv, nss_dns: Remove remaining syslog logging [BZ #19862]Florian Weimer3-42/+10
The fix for bug 14841 only removed part of the logging.
2016-04-27conformtest: Correct some signal.h expectations for XOPEN2K.Joseph Myers3-3/+15
The conformtest expectations for signal.h have various declarations that are expected for POSIX (1996) and all later standards, except, wrongly, for XOPEN2K. This shows up as failures of tests for two other headers, which are allowed to make visible symbols from signal.h, because of an incorrect namespace failure for sigval (required in signal.h in XOPEN2K, so should be allowed for those other headers); signal.h tests for various standards fail anyway because of other problems in the header. This patch fixes the incorrect expectations and removes the two XFAILs that this fixes. Tested for x86_64 and x86. * conform/data/signal.h-data (union sigval): Expect also if [XOPEN2K]. (struct sigevent): Likewise. (SIGEV_NONE): Likewise. (SIGEV_SIGNAL): Likewise. (SIGEV_THREAD): Likewise. (SIGRTMIN): Likewise. (SIGRTMAX): Likewise. * conform/Makefile (test-xfail-XOPEN2K/aio.h/conform): Remove variable. (test-xfail-XOPEN2K/mqueue.h/conform): Likewise.
2016-04-27nss_dns: Validate RDATA length against packet length [BZ #19830]Florian Weimer3-3/+36
In _nss_dns_getcanonname_r, a check for the availability of RR metadata was missing as well.
2016-04-27resolv: Always set *resplen2 out parameter in send_vc [BZ #19825]Florian Weimer2-21/+25
In various error scenarios (for example, if the server closes the TCP connection before sending the full response), send_vc can return without resetting the *resplen2 value. This can pass uninitialized or unexpected data to the caller.
2016-04-27Add missing iucv related defines.Stefan Liebler2-0/+16
this patch adds the missing SOL_IUCV socket level definition and socket options SO_IPRMDATA_MSG, SO_MSGLIMIT, SO_MSGSIZE which can be used with get/setsockopt(). SCM_IUCV_TRGCLS is needed to send/receive ancillary data with send/recvmsg(). The defines are copied from kernel-source: include/net/iucv/af_iucv.h include/linux/socket.h
2016-04-27localedata: add more translit entriesMike Frysinger4-0/+23
Some of the newer symbols we're using are missing translit entries which causes troubles when generating the locales with older encodings. tr_TR: ₺ -> "TL" uz_UZ: ʻ -> "'" common: ֏ -> "AMD" ₪ -> "ILS" ₱ -> "PHP" ₸ -> "KZT" ₾ -> "GEL"
2016-04-26libio: Update internal fmemopen position after write (BZ #20005)Adhemerval Zanella4-4/+83
Current GLIBC fmemopen fails with a simple testcase: char buffer[500] = "x"; FILE *stream; stream = fmemopen(buffer, 500, "r+"); fwrite("fish",sizeof(char),5,stream); printf("pos-1:%ld\n",ftell(stream)); fflush(stream); printf("pos-2:%ld\n",ftell(stream)); It returns: pos-1:5 pos-2:0 Where it should return: pos-1:5 pos-2:5 This is due the internal write function does not correctly update the internal object position state and then the seek operation returns a wrong value. This patch fixes it. It fixes both BZ #20005 and BZ #19230 (marked as duplicated). A new test is added to check for such case. Tested on x86_64 and i686. * libio/fmemopen.c (fmemopen_write): Update internal position after write. * stdio-common/Makefile (tests): Add tst-fmemopen4.c. * stdio-common/tst-fmemopen4.c: New file..
2016-04-26Fix langinfo.h nl_langinfo_l namespace (bug 19996).Joseph Myers3-2/+7
langinfo.h declares nl_langinfo_l if __USE_XOPEN2K. But this function was new in the 2008 edition of POSIX. This patch fixes the condition accordingly. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #19996] * locale/langinfo.h (nl_langinfo_l): Declare if [__USE_XOPEN2K8], not [__USE_XOPEN2K]. * conform/Makefile (test-xfail-XOPEN2K/langinfo.h/conform): Remove variable.
2016-04-26conformtest: Correct XOPEN2K stdarg.h expectations.Joseph Myers3-2/+5
The conform/ test expectations for stdarg.h were wrongly missing an expectation of va_copy for XOPEN2K (based on C99, so including that macro). This patch fixes this. Tested for x86_64 and x86. * conform/data/stdarg.h-data [XOPEN2K] (va_copy): Require macro. * conform/Makefile (test-xfail-XOPEN2K/stdarg.h/conform): Remove variable.
2016-04-26Define off_t in stdio.h for XOPEN2K.Joseph Myers3-2/+11
The header conformance test for stdio.h for XOPEN2K fails because the header does not define the off_t type, used in the expected declarations for fseeko and ftello. The absence of this type is not actually strictly a bug (hence no bug report being filed in Bugzilla), since POSIX didn't require the type to be declared in this header until the 2008 edition. However, the glibc convention in such cases - where the type falls under the general *_t POSIX reservation, and so it's OK to define it for all POSIX versions - is to make the headers self-contained in this regard even for the older POSIX versions not requiring the type to be defined despite including other declarations depending on the type. Thus, this patch adjusts the condition in the header and removes the XFAIL (rather than adapting the expectation to work when the functions are declared using __off_t without off_t being defined). Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * libio/stdio.h (off_t): Define if [__USE_XOPEN2K], not [__USE_XOPEN2K8]. [__USE_LARGEFILE64] (off64_t): Likewise. * conform/Makefile (test-xfail-XOPEN2K/stdio.h/conform): Remove variable.
2016-04-25Fix stdio.h cuserid namespace (bug 19989).Joseph Myers3-2/+9
stdio.h declares cuserid if __USE_XOPEN. But this was removed in the 2001 edition of POSIX. The #endif comment "Use X/Open, but not issue 6." reflects the correct logic, but does not correspond to the #ifdef. The use of a correct libc-hacker. The online archives for libc-hacker in August 2000 are broken, but the messages can be found in the qmail archives in /sourceware1/qmail/lists-sourceware/libc-hacker/archive/26 if you have shell access to sourceware. The issue showed up in August 2000 because of a warning about a non-prototype definition in sysdeps/posix/cuserid.c when there was no previous prototype declaration. Since we've now eliminated non-prototype function definitions, that issue does not apply. The other points from that discussion were about whether it should be included in _GNU_SOURCE; whether _GNU_SOURCE should include "everything"; whether deprecated interfaces such as this should be excluded from it; and whether, even given exclusion of deprecated interfaces, it should apply for deprecations in a version of POSIX that at that time had not been released. This patch follows the more conservative approach to a fix of keeping the interface in _GNU_SOURCE. That matches how L_cuserid is handled. I think there is a strong case for eliminating this interface from _GNU_SOURCE (but this may not automatically be the case for every interface removed in newer POSIX versions), but then L_cuserid should also be removed from _GNU_SOURCE (in stdio-common/stdio_lim.h.in) at the same time. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #19989] * libio/stdio.h (cuserid): Do not declare if [__USE_XOPEN2K && !__USE_GNU]. * conform/Makefile (test-xfail-XOPEN2K8/stdio.h/conform): Remove variable.
2016-04-25powerpc: Add optimized strcspn for P8Paul E. Murphy9-29/+176
A few minor adjustments to the P8 strspn gives us an almost equally optimized P8 strcspn.
2016-04-25vfprintf: Fix memory with large width and precision [BZ #19931]Florian Weimer4-5/+134
Free a previously allocated work buffer if it is not large enough.
2016-04-25Fix stdlib/tst-makecontext regression for Nios IIChung-Lin Tang2-0/+17
2016-04-24non-linux: Apply RFC3542 obsoletion of RFC2292 macrosSamuel Thibault2-2/+16
(IPV6_RECVHOPLIMIT, IPV6_HOPLIMIT, IPV6_RECVHOPOPTS, IPV6_HOPOPTS, IPV6_RTHDRDSTOPTS, IPV6_RECVRTHDR, IPV6_RTHDR, IPV6_RECVDSTOPTS, IPV6_DSTOPTS, IPV6_RECVPATHMTU, IPV6_PATHMTU, IPV6_DONTFRAG): New macros.
2016-04-24non-linux: Apply RFC3542 obsoletion of RFC2292 macrosSamuel Thibault2-11/+30
RFC2292 macros were obsoleted by RFC3542, and should not be exposed any more. Notably since IPV6_PKTINFO has been reintroduced with a completely different API. * bits/in.h (IPV6_PKTINFO): Rename to IPV6_2292PKTINFO. (IPV6_HOPOPTS): Rename to IPV6_2292HOPOPTS. (IPV6_DSTOPTS): Rename to IPV6_2292DSTOPTS. (IPV6_RTHDR): Rename to IPV6_2292RTHDR. (IPV6_PKTOPTIONS): Rename to IPV6_2292PKTOPTIONS. (IPV6_HOPLIMIT): Rename to IPV6_2292HOPLIMIT. (IPV6_RECVPKTINFO): New macro. (IPV6_PKTINFO): New macro.
2016-04-23tst-fmon/tst-numeric: switch malloc to static stack space [BZ #19671]Mike Frysinger3-4/+11
The current test code doesn't check the return value of malloc. This should rarely (if ever) cause a problem, but rather than add some return value checks, just statically allocate the buffer on the stack. This will never fail (or if it does, we've got much bigger problems that don't matter to the test).
2016-04-23tst-langinfo: update yesexpr/noexpr baselinesMike Frysinger2-12/+17
2016-04-23Reduce number of mmap calls from __libc_memalign in ld.soH.J. Lu2-7/+9
__libc_memalign in ld.so allocates one page at a time and tries to optimize consecutive __libc_memalign calls by hoping that the next mmap is after the current memory allocation. However, the kernel hands out mmap addresses in top-down order, so this optimization in practice never happens, with the result that we have more mmap calls and waste a bunch of space for each __libc_memalign. This change makes __libc_memalign to mmap one page extra. Worst case, the kernel never puts a backing page behind it, but best case it allows __libc_memalign to operate much much better. For elf/tst-align --direct, it reduces number of mmap calls from 12 to 9. * elf/dl-minimal.c (__libc_memalign): Mmap one extra page.
2016-04-23localedata: CLDRv29: update LC_MESSAGES yes/no strings [BZ #15264] [BZ #16975]Mike Frysinger90-42/+276
The yes/no strings should be based on the dictionary words. That means they are capitalized based on the dictionary rather than position in the sentence (e.g. the first word). bo_CN: nostr: changing མེན to མིན། bo_CN: yesstr: changing ཨིན to ཡིན། dz_BT: nostr: changing མེན to མེན་ dz_BT: yesstr: changing ཨིན to ཨིན་ en_CA: yesstr: changing Yes to yes en_CA: nostr: changing No to no en_US: yesstr: changing Yes to yes en_US: nostr: changing No to no es_ES: nostr: changing No to no es_ES: yesstr: changing Si to sí fi_FI: nostr: changing Ei to ei fi_FI: yesstr: changing Kyllä to kyllä ig_NG: yesstr: changing Ee to Eye ko_KR: nostr: changing 아니오 to 아니요 ky_KG: nostr: changing Жок to жок ky_KG: yesstr: changing Ооба to ооба ms_MY: nostr: changing Tidak to tidak ms_MY: yesstr: changing Ya to ya te_IN: nostr: changing కాదు to వద్దు te_IN: yesstr: changing అవను to అవును ur_PK: nostr: changing نهيں to نہیں ur_PK: yesstr: changing بلكل to ہاں uz_UZ: nostr: changing Yo'q to yo‘q uz_UZ: yesstr: changing Ha to ha uz_UZ@cyrillic: nostr: changing Йўқ to йўқ uz_UZ@cyrillic: yesstr: changing Ҳа to ҳа wae_CH: nostr: changing Nei to nei wae_CH: yesstr: changing Ja to ja yo_NG: nostr: changing Bẹ́ẹ̀ kọ́ to Bẹ́ẹ̀kọ́ yo_NG: yesstr: changing Bẹ́ẹ̀ ni to Bẹ́ẹ̀ni Some of the translations were just wrong. el_GR: nostr: changing no to όχι el_GR: yesstr: changing yes to ναι km_KH: nostr: changing no:NO:n:N to ទេ​៖ n km_KH: yesstr: changing yes:YES:y:Y to បាទ/ចាស​៖ y ug_CN: nostr: changing No to ياق ug_CN: yesstr: changing Yes to ھەئە Add missing translations for a number of locales: af_ZA: nostr: setting to nee af_ZA: yesstr: setting to ja am_ET: nostr: setting to አይ am_ET: yesstr: setting to አዎን ast_ES: nostr: setting to non ast_ES: yesstr: setting to sí be_BY: nostr: setting to не be_BY: yesstr: setting to так bem_ZM: nostr: setting to Awe bem_ZM: yesstr: setting to Ee bg_BG: nostr: setting to не bg_BG: yesstr: setting to да brx_IN: nostr: setting to नहीं brx_IN: yesstr: setting to हाँ bs_BA: nostr: setting to ne bs_BA: yesstr: setting to da ca_ES: nostr: setting to no ca_ES: yesstr: setting to sí da_DK: nostr: setting to nej da_DK: yesstr: setting to ja de_DE: nostr: setting to nein de_DE: yesstr: setting to ja en_DK: nostr: setting to yes en_DK: yesstr: setting to no et_EE: nostr: setting to ei et_EE: yesstr: setting to jah eu_ES: nostr: setting to ez eu_ES: yesstr: setting to bai fa_IR: nostr: setting to نه fa_IR: yesstr: setting to بله ff_SN: nostr: setting to Alaa ff_SN: yesstr: setting to Eey fo_FO: nostr: setting to nei fo_FO: yesstr: setting to já fr_BE: nostr: setting to non fr_BE: yesstr: setting to oui fr_CH: nostr: setting to non fr_CH: yesstr: setting to oui fr_FR: nostr: setting to non fr_FR: yesstr: setting to oui fr_LU: nostr: setting to non fr_LU: yesstr: setting to oui fur_IT: nostr: setting to no fur_IT: yesstr: setting to sì fy_DE: nostr: setting to nee fy_DE: yesstr: setting to ja ga_IE: nostr: setting to níl ga_IE: yesstr: setting to tá gd_GB: nostr: setting to chan eil gd_GB: yesstr: setting to tha gl_ES: nostr: setting to non gl_ES: yesstr: setting to si gu_IN: nostr: setting to નહીં gu_IN: yesstr: setting to હા he_IL: nostr: setting to לא he_IL: yesstr: setting to כן hi_IN: nostr: setting to नहीं hi_IN: yesstr: setting to हाँ hr_HR: nostr: setting to ne hr_HR: yesstr: setting to da hu_HU: nostr: setting to nem hu_HU: yesstr: setting to igen id_ID: nostr: setting to tidak id_ID: yesstr: setting to ya is_IS: nostr: setting to nei is_IS: yesstr: setting to já it_CH: nostr: setting to no it_CH: yesstr: setting to sì it_IT: nostr: setting to no it_IT: yesstr: setting to sì ka_GE: nostr: setting to არა ka_GE: yesstr: setting to კი kk_KZ: nostr: setting to жоқ kk_KZ: yesstr: setting to иә kl_GL: nostr: setting to naagga kl_GL: yesstr: setting to aap kn_IN: nostr: setting to ಇಲ್ಲ kn_IN: yesstr: setting to ಹೌದು ko_KR: yesstr: setting to 예 lb_LU: nostr: setting to nee lb_LU: yesstr: setting to jo lg_UG: nostr: setting to Nedda lg_UG: yesstr: setting to Ye lt_LT: nostr: setting to ne lt_LT: yesstr: setting to taip lv_LV: nostr: setting to nē lv_LV: yesstr: setting to jā mg_MG: nostr: setting to Tsia mg_MG: yesstr: setting to Eny mn_MN: nostr: setting to үгүй mn_MN: yesstr: setting to тийм mr_IN: nostr: setting to नाहीःना mr_IN: yesstr: setting to होयःहो mt_MT: nostr: setting to le mt_MT: yesstr: setting to iva nb_NO: nostr: setting to nei nb_NO: yesstr: setting to ja ne_NP: nostr: setting to होइन ne_NP: yesstr: setting to हो nl_NL: nostr: setting to nee nl_NL: yesstr: setting to ja nn_NO: nostr: setting to nei nn_NO: yesstr: setting to ja or_IN: nostr: setting to ନା or_IN: yesstr: setting to ହଁ os_RU: nostr: setting to нӕйы os_RU: yesstr: setting to уойы pa_IN: nostr: setting to ਨਹੀਂ pa_IN: yesstr: setting to ਹਾਂ pl_PL: nostr: setting to nie pl_PL: yesstr: setting to tak pt_BR: nostr: setting to não pt_BR: yesstr: setting to sim pt_PT: nostr: setting to não pt_PT: yesstr: setting to sim ro_RO: nostr: setting to nu ro_RO: yesstr: setting to da ru_RU: nostr: setting to нет ru_RU: yesstr: setting to да ru_UA: nostr: setting to нет ru_UA: yesstr: setting to да se_NO: nostr: setting to ii se_NO: yesstr: setting to jo sl_SI: nostr: setting to ne sl_SI: yesstr: setting to da so_DJ: nostr: setting to maya so_DJ: yesstr: setting to haa so_SO: nostr: setting to maya so_SO: yesstr: setting to haa sq_AL: nostr: setting to jo sq_AL: yesstr: setting to po sr_RS@latin: nostr: setting to ne sr_RS@latin: yesstr: setting to da sr_RS: nostr: setting to не sr_RS: yesstr: setting to да sv_SE: nostr: setting to nej sv_SE: yesstr: setting to ja sw_KE: nostr: setting to Hapana sw_KE: yesstr: setting to Ndiyo yue_HK: nostr: setting to 唔係 yue_HK: yesstr: setting to 係 zu_ZA: nostr: setting to cha zu_ZA: yesstr: setting to yebo