[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r25890 - in /branches/eglibc-2_19: ./ libc/ libc/elf/ libc/iconv/ libc/iconvdata/ libc/include/ libc/locale/ libc/localedata...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r25890 - in /branches/eglibc-2_19: ./ libc/ libc/elf/ libc/iconv/ libc/iconvdata/ libc/include/ libc/locale/ libc/localedata...
- From: joseph@xxxxxxxxxx
- Date: Mon, 29 Sep 2014 20:30:30 -0000
Author: joseph
Date: Mon Sep 29 13:30:30 2014
New Revision: 25890
Log:
Merge changes between r25242 and r25889 from /fsf/glibc-2_19-branch.
Added:
branches/eglibc-2_19/libc/elf/tst-dl-iter-static.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/elf/tst-dl-iter-static.c
branches/eglibc-2_19/libc/localedata/tst-setlocale3.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/localedata/tst-setlocale3.c
branches/eglibc-2_19/libc/nptl/tst-spin4.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/nptl/tst-spin4.c
branches/eglibc-2_19/libc/posix/bug-regex36.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/posix/bug-regex36.c
branches/eglibc-2_19/libc/sysdeps/s390/s390-32/__longjmp.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/s390/s390-32/__longjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/s390-32/setjmp.S
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/s390/s390-32/setjmp.S
branches/eglibc-2_19/libc/sysdeps/s390/s390-64/__longjmp.c
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/s390/s390-64/__longjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/s390-64/setjmp.S
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/s390/s390-64/setjmp.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/ucontext_i.sym
- copied unchanged from r25889, fsf/glibc-2_19-branch/libc/sysdeps/unix/sysv/linux/s390/ucontext_i.sym
Removed:
branches/eglibc-2_19/libc/sysdeps/s390/Makefile
branches/eglibc-2_19/libc/sysdeps/s390/__longjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/rtld-__longjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/rtld-global-offsets.sym
branches/eglibc-2_19/libc/sysdeps/s390/rtld-setjmp.S
branches/eglibc-2_19/libc/sysdeps/s390/s390-32/__longjmp-common.c
branches/eglibc-2_19/libc/sysdeps/s390/s390-32/setjmp-common.S
branches/eglibc-2_19/libc/sysdeps/s390/s390-64/__longjmp-common.c
branches/eglibc-2_19/libc/sysdeps/s390/s390-64/setjmp-common.S
branches/eglibc-2_19/libc/sysdeps/s390/setjmp.S
branches/eglibc-2_19/libc/sysdeps/s390/sigjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/v1-longjmp.c
branches/eglibc-2_19/libc/sysdeps/s390/v1-setjmp.h
branches/eglibc-2_19/libc/sysdeps/s390/v1-sigjmp.c
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/getcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/rtld-getcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.sym
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c
Modified:
branches/eglibc-2_19/ (props changed)
branches/eglibc-2_19/libc/ChangeLog
branches/eglibc-2_19/libc/NEWS
branches/eglibc-2_19/libc/elf/Makefile
branches/eglibc-2_19/libc/iconv/gconv_trans.c
branches/eglibc-2_19/libc/iconvdata/Makefile
branches/eglibc-2_19/libc/iconvdata/ibm1364.c
branches/eglibc-2_19/libc/iconvdata/ibm932.c
branches/eglibc-2_19/libc/iconvdata/ibm933.c
branches/eglibc-2_19/libc/iconvdata/ibm935.c
branches/eglibc-2_19/libc/iconvdata/ibm937.c
branches/eglibc-2_19/libc/iconvdata/ibm939.c
branches/eglibc-2_19/libc/iconvdata/ibm943.c
branches/eglibc-2_19/libc/iconvdata/run-iconv-test.sh
branches/eglibc-2_19/libc/include/resolv.h
branches/eglibc-2_19/libc/locale/findlocale.c
branches/eglibc-2_19/libc/locale/setlocale.c
branches/eglibc-2_19/libc/localedata/ChangeLog
branches/eglibc-2_19/libc/localedata/Makefile
branches/eglibc-2_19/libc/manual/locale.texi
branches/eglibc-2_19/libc/misc/sys/xattr.h
branches/eglibc-2_19/libc/nis/nss_nis/nis-hosts.c
branches/eglibc-2_19/libc/nis/nss_nis/nis-initgroups.c
branches/eglibc-2_19/libc/nis/nss_nis/nis-network.c
branches/eglibc-2_19/libc/nis/nss_nis/nis-service.c
branches/eglibc-2_19/libc/nptl/Makefile
branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.S
branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.S
branches/eglibc-2_19/libc/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
branches/eglibc-2_19/libc/nscd/netgroupcache.c
branches/eglibc-2_19/libc/nss/nss_files/files-netgrp.c
branches/eglibc-2_19/libc/po/eo.po
branches/eglibc-2_19/libc/po/sv.po
branches/eglibc-2_19/libc/ports/ChangeLog.aarch64
branches/eglibc-2_19/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
branches/eglibc-2_19/libc/posix/Makefile
branches/eglibc-2_19/libc/posix/regcomp.c
branches/eglibc-2_19/libc/posix/spawn_faction_addopen.c
branches/eglibc-2_19/libc/posix/spawn_faction_destroy.c
branches/eglibc-2_19/libc/posix/spawn_int.h
branches/eglibc-2_19/libc/posix/tst-spawn.c
branches/eglibc-2_19/libc/resolv/gethnamaddr.c
branches/eglibc-2_19/libc/resolv/nss_dns/dns-canon.c
branches/eglibc-2_19/libc/resolv/nss_dns/dns-host.c
branches/eglibc-2_19/libc/resolv/nss_dns/dns-network.c
branches/eglibc-2_19/libc/resolv/res_query.c
branches/eglibc-2_19/libc/resolv/res_send.c
branches/eglibc-2_19/libc/string/test-strcmp.c
branches/eglibc-2_19/libc/sysdeps/ieee754/dbl-64/s_sin.c
branches/eglibc-2_19/libc/sysdeps/s390/Versions
branches/eglibc-2_19/libc/sysdeps/s390/bits/setjmp.h
branches/eglibc-2_19/libc/sysdeps/s390/longjmp.c
branches/eglibc-2_19/libc/sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S
branches/eglibc-2_19/libc/sysdeps/sparc/sparc64/strcmp.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/Makefile
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/sparc/bits/eventfd.h
branches/eglibc-2_19/libc/sysdeps/unix/sysv/linux/sparc/bits/resource.h
branches/eglibc-2_19/libc/sysdeps/x86_64/fpu/libm-test-ulps
branches/eglibc-2_19/libc/timezone/Makefile
Propchange: branches/eglibc-2_19/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 29 13:30:30 2014
@@ -1,1 +1,2 @@
+/fsf/glibc-2_19-branch:25243-25889
/fsf/trunk:15224-25236
Modified: branches/eglibc-2_19/libc/ChangeLog
==============================================================================
--- branches/eglibc-2_19/libc/ChangeLog (original)
+++ branches/eglibc-2_19/libc/ChangeLog Mon Sep 29 13:30:30 2014
@@ -1,3 +1,315 @@
+2014-09-03 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ [BZ #17325]
+ * iconvdata/ibm1364.c (BODY): Fix check for sentinel.
+ * iconvdata/ibm932.c (BODY): Replace invalid sentinel check with
+ assert.
+ * iconvdata/ibm933.c (BODY): Fix check for sentinel.
+ * iconvdata/ibm935.c (BODY): Likewise.
+ * iconvdata/ibm937.c (BODY): Likewise.
+ * iconvdata/ibm939.c (BODY): Likewise.
+ * iconvdata/ibm943.c (BODY): Replace invalid sentinel check with
+ assert.
+ * iconvdata/Makefile (iconv-test.out): Pass module list to test
+ script.
+ * iconvdata/run-iconv-test.sh: New test loop for checking for
+ decoder crashers.
+
+2014-08-26 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ [BZ #17187]
+ * iconv/gconv_trans.c (struct known_trans, search_tree, lock,
+ trans_compare, open_translit, __gconv_translit_find):
+ Remove module loading code.
+
+2014-08-01 Stefan Liebler <stli@xxxxxxxxxxxxxxxxxx>
+
+ * NEWS: Explain the s390 jmp_buf / ucontext_t ABI change
+ reversal.
+
+2014-07-31 Stefan Liebler <stli@xxxxxxxxxxxxxxxxxx>
+
+ * sysdeps/s390/Makefile: Delete file.
+ * sysdeps/s390/Versions (GLIBC_2.19): Remove __setjmp.
+ * sysdeps/s390/__longjmp.c: Delete file.
+ * sysdeps/s390/bits/setjmp.h (__s390_jmp_buf):
+ Remove fields __flags and __reserved.
+ * sysdeps/s390/longjmp.c: Include setjmp/longjmp.c
+ and add versioning.
+ * sysdeps/s390/rtld-__longjmp.c: Delete file.
+ * sysdeps/s390/rtld-global-offsets.sym: Likewise.
+ * sysdeps/s390/rtld-setjmp.S: Likewise.
+ * sysdeps/s390/s390-32/__longjmp-common.c: Move to ...
+ * sysdeps/s390/s390-32/__longjmp.c: ... here.
+ * sysdeps/s390/s390-32/setjmp-common.S: Move to ...
+ * sysdeps/s390/s390-32/setjmp.S: ... here.
+ Add versioning.
+ (__sigsetjmp): Remove setting __flags field.
+ * sysdeps/s390/s390-64/__longjmp-common.c:Move to ...
+ * sysdeps/s390/s390-64/__longjmp.c: ... here.
+ * sysdeps/s390/s390-64/setjmp-common.S: Move to ...
+ * sysdeps/s390/s390-64/setjmp.S: ... here.
+ Add versioning.
+ (__sigsetjmp): Remove setting __flags field.
+ * sysdeps/s390/setjmp.S: Delete file.
+ * sysdeps/s390/sigjmp.c: Likewise.
+ * sysdeps/s390/v1-longjmp.c: Likewise.
+ * sysdeps/s390/v1-setjmp.h: Likewise.
+ * sysdeps/s390/v1-sigjmp.c: Likewise.
+ * sysdeps/unix/sysv/linux/s390/Makefile (sysdep_routines):
+ Remove v1-longjmp_chk.
+ * sysdeps/unix/sysv/linux/s390/getcontext.S: Delete file.
+ * sysdeps/unix/sysv/linux/s390/longjmp_chk.c:
+ Include debug/longjmp_chk.c and add versioning.
+ * nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c:
+ Include nptl/sysdeps/pthread/pt-longjmp.c and add versioning.
+ * sysdeps/unix/sysv/linux/s390/rtld-getcontext.S: Delete file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c:
+ Include __longjmp.c.
+ * sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S:
+ Move to ...
+ * sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S: ... here.
+ (__getcontext): Remove setting __flags field.
+ Add versioning.
+ * sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S:
+ DonÃÂt restore upper high grps.
+ * sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S:
+ Likewise.
+ (__swapcontext): Remove setting uc_flags field.
+ * sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym:
+ Delete file.
+ * sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c:
+ Include __longjmp.c.
+ * sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S:
+ Move to ...
+ * sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S: ... here.
+ (__getcontext): Remove setting __flags field.
+ Add versioning.
+ * sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S:
+ (__swapcontext): Remove setting uc_flags field.
+ * unix/sysv/linux/s390/s390-64/ucontext_i.sym: Delete file.
+ * sysdeps/unix/sysv/linux/s390/sys/ucontext.h (ucontext):
+ Remove fields uc_high_gprs and __reserved.
+ * sysdeps/unix/sysv/linux/s390/ucontext_i.sym:
+ New file with reverted content.
+ * sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c: Delete file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist:
+ Regenerated.
+ * sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist:
+ Regenerated.
+
+2014-07-02 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ * manual/locale.texi (Locale Names): New section documenting
+ locale name syntax. Adjust menu and node chaining accordingly.
+ (Choosing Locale): Reference Locale Names, Locale Categories.
+ Mention setting LC_ALL=C. Reflect that name syntax is now
+ documented.
+ (Locale Categories): New section title. Reference Locale Names.
+ LC_ALL is an environment variable, but not a category.
+ (Setting the Locale): Remove "locale -a" invocation and LOCPATH
+ description, now in Locale Name. Reference that section. Locale
+ name syntax is now documented.
+
+2014-07-02 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ [BZ #17137]
+ * locale/findlocale.c (name_present, valid_locale_name): New
+ functions.
+ (_nl_find_locale): Use the loc_name variable to store name
+ candidates. Call name_present and valid_locale_name to check and
+ validate locale names. Return an error if the locale is invalid.
+
+2014-07-02 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ * locale/setlocale.c (setlocale): Use strdup for allocating
+ composite name copy.
+
+2014-05-26 Siddhesh Poyarekar <siddhesh@xxxxxxxxxx>
+
+ [BZ #16878]
+ * nscd/netgroupcache.c (addgetnetgrentX): Look for
+ NSS_STATUS_TRYAGAIN to indicate insufficient buffer space.
+ * nscd/nss_files/files-netgrp.c (_nss_netgroup_parseline): Use
+ NSS_STATUS_TRYAGAIN to indicate insufficient buffer space.
+
+2014-03-12 Siddhesh Poyarekar <siddhesh@xxxxxxxxxx>
+
+ [BZ #16695]
+ * nscd/netgroupcache.c (addgetnetgrentX): Factor in space for
+ key in the buffer.
+
+2014-06-20 Maciej W. Rozycki <macro@xxxxxxxxxxxxxxxx>
+
+ [BZ #16046]
+ * elf/tst-dl-iter-static.c: New file.
+ * elf/Makefile (tests-static): Add tst-dl-iter-static.
+
+2014-06-20 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ [BZ #17069]
+ * posix/regcomp.c (parse_reg_exp): Deallocate partially
+ constructed tree before returning error.
+ * posix/bug-regexp36.c: Expand test case.
+
+2014-06-19 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ [BZ #17069]
+ * posix/regcomp.c (parse_expression): Deallocate partially
+ constructed tree before returning error.
+ * posix/Makefile.c (tests): Add bug-regex36.
+ (generated): Add bug-regex36.mtrace.
+ (tests-special): Add $(objpfx)bug-regex36-mem.out
+ (bug-regex36-ENV): New variable.
+ ($(objpfx)bug-regex36-mem.out): New rule.
+ * posix/bug-regex36.c: New file.
+
+2014-06-03 Andreas Schwab <schwab@xxxxxxx>
+
+ [BZ #15946]
+ * resolv/res_send.c (send_dg): Reload file descriptor after
+ calling reopen.
+
+2014-02-18 Andreas Schwab <schwab@xxxxxxx>
+
+ [BZ #16574]
+ * resolv/res_send.c (send_vc): Add parameter ansp2_malloced.
+ Store non-zero if the second buffer was newly allocated.
+ (send_dg): Likewise.
+ (__libc_res_nsend): Add parameter ansp2_malloced and pass it down
+ to send_vc and send_dg.
+ (res_nsend): Pass NULL for ansp2_malloced.
+ * resolv/res_query.c (__libc_res_nquery): Add parameter
+ answerp2_malloced and pass it down to __libc_res_nsend.
+ (res_nquery): Pass additional NULL to __libc_res_nquery.
+ (__libc_res_nsearch): Add parameter answerp2_malloced and pass it
+ down to __libc_res_nquery and __libc_res_nquerydomain. Deallocate
+ second answer buffer if answerp2_malloced was set.
+ (res_nsearch): Pass additional NULL to __libc_res_nsearch.
+ (__libc_res_nquerydomain): Add parameter
+ answerp2_malloced and pass it down to __libc_res_nquery.
+ (res_nquerydomain): Pass additional NULL to
+ __libc_res_nquerydomain.
+ * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r): Pass
+ additional NULL to __libc_res_nsend and __libc_res_nquery.
+ * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname3_r): Pass
+ additional NULL to __libc_res_nsearch.
+ (_nss_dns_gethostbyname4_r): Revert last change. Use new
+ parameter of __libc_res_nsearch to check for separately allocated
+ second buffer.
+ (_nss_dns_gethostbyaddr2_r): Pass additional NULL to
+ __libc_res_nquery.
+ * resolv/nss_dns/dns-canon.c (_nss_dns_getcanonname_r): Pass
+ additional NULL to __libc_res_nquery.
+ * resolv/gethnamaddr.c (gethostbyname2): Pass additional NULL to
+ __libc_res_nsearch.
+ (gethostbyaddr): Pass additional NULL to __libc_res_nquery.
+ * include/resolv.h: Update prototypes of __libc_res_nquery,
+ __libc_res_nsearch, __libc_res_nsend.
+
+2014-02-13 Andreas Schwab <schwab@xxxxxxx>
+
+ [BZ #16574]
+ * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname4_r): Free the
+ second answer buffer if it was separately allocated.
+
+2014-05-12 Andreas Schwab <schwab@xxxxxxx>
+
+ [BZ #16932]
+ * nis/nss_nis/nis-hosts.c (internal_gethostbyname2_r)
+ (_nss_nis_gethostbyname4_r): Return error if item length is larger
+ than maximum RPC packet size.
+ * nis/nss_nis/nis-initgroups.c (initgroups_netid): Likewise.
+ * nis/nss_nis/nis-network.c (_nss_nis_getnetbyname_r): Likewise.
+ * nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r)
+ (_nss_nis_getservbyport_r): Likewise.
+
+2014-06-21 Allan McRae <allan@xxxxxxxxxxxxx>
+
+ * NEWS: Mention CVE-2014-4043.
+
+2014-06-12 Stefan Liebler <stli@xxxxxxxxxxxxxxxxxx>
+
+ * posix/spawn_faction_addopen.c: Include string.h.
+
+2014-06-11 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ [BZ #17048]
+ * posix/spawn_int.h (struct __spawn_action): Make the path string
+ non-const to support deallocation.
+ * posix/spawn_faction_addopen.c
+ (posix_spawn_file_actions_addopen): Make a copy of the pathname.
+ * posix/spawn_faction_destroy.c
+ (posix_spawn_file_actions_destroy): Adjust comment. Deallocate
+ path in all spawn_do_open actions.
+ * posix/tst-spawn.c (do_test): Exercise the copy operation in
+ posix_spawn_file_actions_addopen.
+
+2014-06-03 Guo Yixuan <culu.gyx@xxxxxxxxx>
+
+ [BZ #16882]
+ * nptl/sysdeps/sparc/sparc32/pthread_spin_lock.S
+ (pthread_spin_lock): Branch out of spin loop to proper location.
+ * nptl/sysdeps/sparc/sparc64/pthread_spin_lock.S
+ (pthread_spin_lock): Likewise.
+
+ * nptl/tst-spin4.c: New test.
+ * nptl/Makefile (tests): Add tst-spin4.
+
+2014-05-17 Jose E. Marchesi <jose.marchesi@xxxxxxxxxx>
+
+ [BZ #16958]
+ * sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S: Add missing
+ membar to avoid block loads/stores to overlap previous stores.
+
+2014-05-13 Sami Kerola <kerolasa@xxxxxx>
+
+ * timezone/Makefile ($(objpfx)tzselect): Use zonedir instead
+ current working directory
+
+2014-05-16 Allan McRae <allan@xxxxxxxxxxxxx>
+
+ * po/sv.po: Update Swedish translation from translation project.
+
+2014-05-16 Aurelien Jarno <aurelien@xxxxxxxxxxx>
+
+ [BZ #16943]
+ * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Declare prlimit
+ and prlimit64.
+
+2014-05-06 Aurelien Jarno <aurelien@xxxxxxxxxxx>
+
+ [BZ# 16916]
+ * sysdeps/unix/sysv/linux/sparc/bits/eventfd.h (EFD_SEMAPHORE):
+ Define.
+
+2014-05-04 Allan McRae <allan@xxxxxxxxxxxxx>
+
+ * po/eo.po: Update Esperanto translation from translation project.
+
+2014-05-01 David S. Miller <davem@xxxxxxxxxxxxx>
+
+ [BZ #16885]
+ * sysdeps/sparc/sparc64/strcmp.S: Fix end comparison handling when
+ multiple zero bytes exist at the end of a string.
+ Reported by Aurelien Jarno <aurelien@xxxxxxxxxxx>
+
+ * string/test-strcmp.c (check): Add explicit test for situations where
+ there are multiple zero bytes after the first.
+
+2014-02-27 Siddhesh Poyarekar <siddhesh@xxxxxxxxxx>
+
+ [BZ #16623]
+ * sysdeps/ieee754/dbl-64/s_sin.c (__sin): Preserve sign of A
+ and DA.
+ (__cos): Likewise.
+
+2014-02-12 Dylan Alex Simon <dylan@xxxxxxxxx>
+
+ [BZ #16545]
+ * sysdeps/x86_64/fpu/libm-test-ulps: Update on AMD family 21h
+ model 1.
+
2014-02-06 Carlos O'Donell <carlos@xxxxxxxxxx>
[BZ #16529]
Modified: branches/eglibc-2_19/libc/NEWS
==============================================================================
--- branches/eglibc-2_19/libc/NEWS (original)
+++ branches/eglibc-2_19/libc/NEWS Mon Sep 29 13:30:30 2014
@@ -4,6 +4,51 @@
Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
using `glibc' in the "product" field.
+
+Version 2.19.1
+
+* The following bugs are resolved with this release:
+
+ 15946, 16545, 16574, 16623, 16695, 16878, 16882, 16885, 16916, 16932,
+ 16943, 16958, 17048, 17069, 17137, 17263, 17325.
+
+* Reverted change of ABI data structures for s390 and s390x:
+ On s390 and s390x the size of struct ucontext and jmp_buf was increased in
+ 2.19. This change is reverted in 2.19.1 and 2.20. The introduced 2.19 symbol
+ versions of getcontext, setjmp, _setjmp, __sigsetjmp, longjmp, _longjmp,
+ siglongjmp are preserved pointing straight to the same implementation as the
+ old ones. Given that, new callers will simply provide a too-big buffer to
+ these functions. Any applications/libraries out there that embed jmp_buf or
+ ucontext_t in an ABI-relevant data structure that have already been rebuilt
+ against 2.19 headers will have to rebuilt again. This is necessary in any
+ case to revert the breakage in their ABI caused by the glibc change.
+
+* CVE-2014-4043 The posix_spawn_file_actions_addopen implementation did not
+ copy the path argument. This allowed programs to cause posix_spawn to
+ deference a dangling pointer, or use an unexpected pathname argument if
+ the string was modified after the posix_spawn_file_actions_addopen
+ invocation.
+
+* Locale names, including those obtained from environment variables (LANG
+ and the LC_* variables), are more tightly checked for proper syntax.
+ setlocale will now fail (with EINVAL) for locale names that are overly
+ long, contain slashes without starting with a slash, or contain ".." path
+ components. (CVE-2014-0475) Previously, some valid locale names were
+ silently replaced with the "C" locale when running in AT_SECURE mode
+ (e.g., in a SUID program). This is no longer necessary because of the
+ additional checks.
+
+* Support for loadable gconv transliteration modules has been removed.
+ The support for transliteration modules has been non-functional for
+ over a decade, and the removal is prompted by security defects. The
+ normal gconv conversion modules are still supported. Transliteration
+ with //TRANSLIT is still possible, and the //IGNORE specifier
+ continues to be supported. (CVE-2014-5119)
+
+* Decoding a crafted input sequence in the character sets IBM933, IBM935,
+ IBM937, IBM939, IBM1364 could result in an out-of-bounds array read,
+ resulting a denial-of-service security vulnerability in applications which
+ use functions related to iconv. (CVE-2014-6040)
Version 2.19
Modified: branches/eglibc-2_19/libc/elf/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/elf/Makefile (original)
+++ branches/eglibc-2_19/libc/elf/Makefile Mon Sep 29 13:30:30 2014
@@ -123,7 +123,7 @@
tst-auxv
tests-static = tst-tls1-static tst-tls2-static tst-stackguard1-static \
tst-leaks1-static tst-array1-static tst-array5-static \
- tst-ptrguard1-static
+ tst-ptrguard1-static tst-dl-iter-static
ifeq (yes,$(build-shared))
tests-static += tst-tls9-static
tst-tls9-static-ENV = \
Modified: branches/eglibc-2_19/libc/iconv/gconv_trans.c
==============================================================================
--- branches/eglibc-2_19/libc/iconv/gconv_trans.c (original)
+++ branches/eglibc-2_19/libc/iconv/gconv_trans.c Mon Sep 29 13:30:30 2014
@@ -241,181 +241,12 @@
return __GCONV_ILLEGAL_INPUT;
}
-
-/* Structure to represent results of found (or not) transliteration
- modules. */
-struct known_trans
-{
- /* This structure must remain the first member. */
- struct trans_struct info;
-
- char *fname;
- void *handle;
- int open_count;
-};
-
-
-/* Tree with results of previous calls to __gconv_translit_find. */
-static void *search_tree;
-
-/* We modify global data. */
-__libc_lock_define_initialized (static, lock);
-
-
-/* Compare two transliteration entries. */
-static int
-trans_compare (const void *p1, const void *p2)
-{
- const struct known_trans *s1 = (const struct known_trans *) p1;
- const struct known_trans *s2 = (const struct known_trans *) p2;
-
- return strcmp (s1->info.name, s2->info.name);
-}
-
-
-/* Open (maybe reopen) the module named in the struct. Get the function
- and data structure pointers we need. */
-static int
-open_translit (struct known_trans *trans)
-{
- __gconv_trans_query_fct queryfct;
-
- trans->handle = __libc_dlopen (trans->fname);
- if (trans->handle == NULL)
- /* Not available. */
- return 1;
-
- /* Find the required symbol. */
- queryfct = __libc_dlsym (trans->handle, "gconv_trans_context");
- if (queryfct == NULL)
- {
- /* We cannot live with that. */
- close_and_out:
- __libc_dlclose (trans->handle);
- trans->handle = NULL;
- return 1;
- }
-
- /* Get the context. */
- if (queryfct (trans->info.name, &trans->info.csnames, &trans->info.ncsnames)
- != 0)
- goto close_and_out;
-
- /* Of course we also have to have the actual function. */
- trans->info.trans_fct = __libc_dlsym (trans->handle, "gconv_trans");
- if (trans->info.trans_fct == NULL)
- goto close_and_out;
-
- /* Now the optional functions. */
- trans->info.trans_init_fct =
- __libc_dlsym (trans->handle, "gconv_trans_init");
- trans->info.trans_context_fct =
- __libc_dlsym (trans->handle, "gconv_trans_context");
- trans->info.trans_end_fct =
- __libc_dlsym (trans->handle, "gconv_trans_end");
-
- trans->open_count = 1;
-
- return 0;
-}
-
-
int
internal_function
__gconv_translit_find (struct trans_struct *trans)
{
- struct known_trans **found;
- const struct path_elem *runp;
- int res = 1;
-
- /* We have to have a name. */
- assert (trans->name != NULL);
-
- /* Acquire the lock. */
- __libc_lock_lock (lock);
-
- /* See whether we know this module already. */
- found = __tfind (trans, &search_tree, trans_compare);
- if (found != NULL)
- {
- /* Is this module available? */
- if ((*found)->handle != NULL)
- {
- /* Maybe we have to reopen the file. */
- if ((*found)->handle != (void *) -1)
- /* The object is not unloaded. */
- res = 0;
- else if (open_translit (*found) == 0)
- {
- /* Copy the data. */
- *trans = (*found)->info;
- (*found)->open_count++;
- res = 0;
- }
- }
- }
- else
- {
- size_t name_len = strlen (trans->name) + 1;
- int need_so = 0;
- struct known_trans *newp;
-
- /* We have to continue looking for the module. */
- if (__gconv_path_elem == NULL)
- __gconv_get_path ();
-
- /* See whether we have to append .so. */
- if (name_len <= 4 || memcmp (&trans->name[name_len - 4], ".so", 3) != 0)
- need_so = 1;
-
- /* Create a new entry. */
- newp = (struct known_trans *) malloc (sizeof (struct known_trans)
- + (__gconv_max_path_elem_len
- + name_len + 3)
- + name_len);
- if (newp != NULL)
- {
- char *cp;
-
- /* Clear the struct. */
- memset (newp, '\0', sizeof (struct known_trans));
-
- /* Store a copy of the module name. */
- newp->info.name = cp = (char *) (newp + 1);
- cp = __mempcpy (cp, trans->name, name_len);
-
- newp->fname = cp;
-
- /* Search in all the directories. */
- for (runp = __gconv_path_elem; runp->name != NULL; ++runp)
- {
- cp = __mempcpy (__stpcpy ((char *) newp->fname, runp->name),
- trans->name, name_len);
- if (need_so)
- memcpy (cp, ".so", sizeof (".so"));
-
- if (open_translit (newp) == 0)
- {
- /* We found a module. */
- res = 0;
- break;
- }
- }
-
- if (res)
- newp->fname = NULL;
-
- /* In any case we'll add the entry to our search tree. */
- if (__tsearch (newp, &search_tree, trans_compare) == NULL)
- {
- /* Yickes, this should not happen. Unload the object. */
- res = 1;
- /* XXX unload here. */
- }
- }
- }
-
- __libc_lock_unlock (lock);
-
- return res;
+ /* Transliteration module loading has been removed because it never
+ worked as intended and suffered from a security vulnerability.
+ Consequently, this function always fails. */
+ return 1;
}
Modified: branches/eglibc-2_19/libc/iconvdata/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/Makefile (original)
+++ branches/eglibc-2_19/libc/iconvdata/Makefile Mon Sep 29 13:30:30 2014
@@ -303,6 +303,7 @@
$(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
$(addprefix $(objpfx),$(modules.so)) \
$(common-objdir)/iconv/iconv_prog TESTS
+ iconv_modules="$(modules)" \
$(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
$(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm1364.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm1364.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm1364.c Mon Sep 29 13:30:30 2014
@@ -220,7 +220,8 @@
++rp2; \
\
uint32_t res; \
- if (__builtin_expect (ch < rp2->start, 0) \
+ if (__builtin_expect (rp2->start == 0xffff, 0) \
+ || __builtin_expect (ch < rp2->start, 0) \
|| (res = DB_TO_UCS4[ch + rp2->idx], \
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
{ \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm932.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm932.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm932.c Mon Sep 29 13:30:30 2014
@@ -73,11 +73,12 @@
} \
\
ch = (ch * 0x100) + inptr[1]; \
+ /* ch was less than 0xfd. */ \
+ assert (ch < 0xfd00); \
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
- || __builtin_expect (ch < rp2->start, 0) \
+ if (__builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm932db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, '\1') == 0 && ch !=0)) \
{ \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm933.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm933.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm933.c Mon Sep 29 13:30:30 2014
@@ -161,7 +161,7 @@
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
+ if (__builtin_expect (rp2->start == 0xffff, 0) \
|| __builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm933db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm935.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm935.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm935.c Mon Sep 29 13:30:30 2014
@@ -161,7 +161,7 @@
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
+ if (__builtin_expect (rp2->start == 0xffff, 0) \
|| __builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm935db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm937.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm937.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm937.c Mon Sep 29 13:30:30 2014
@@ -161,7 +161,7 @@
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
+ if (__builtin_expect (rp2->start == 0xffff, 0) \
|| __builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm937db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm939.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm939.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm939.c Mon Sep 29 13:30:30 2014
@@ -161,7 +161,7 @@
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
+ if (__builtin_expect (rp2->start == 0xffff, 0) \
|| __builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm939db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \
Modified: branches/eglibc-2_19/libc/iconvdata/ibm943.c
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/ibm943.c (original)
+++ branches/eglibc-2_19/libc/iconvdata/ibm943.c Mon Sep 29 13:30:30 2014
@@ -74,11 +74,12 @@
} \
\
ch = (ch * 0x100) + inptr[1]; \
+ /* ch was less than 0xfd. */ \
+ assert (ch < 0xfd00); \
while (ch > rp2->end) \
++rp2; \
\
- if (__builtin_expect (rp2 == NULL, 0) \
- || __builtin_expect (ch < rp2->start, 0) \
+ if (__builtin_expect (ch < rp2->start, 0) \
|| (res = __ibm943db_to_ucs4[ch + rp2->idx], \
__builtin_expect (res, '\1') == 0 && ch !=0)) \
{ \
Modified: branches/eglibc-2_19/libc/iconvdata/run-iconv-test.sh
==============================================================================
--- branches/eglibc-2_19/libc/iconvdata/run-iconv-test.sh (original)
+++ branches/eglibc-2_19/libc/iconvdata/run-iconv-test.sh Mon Sep 29 13:30:30 2014
@@ -188,6 +188,24 @@
done < TESTS2
+# Check for crashes in decoders.
+printf '\016\377\377\377\377\377\377\377' > $temp1
+for from in $iconv_modules ; do
+ echo $ac_n "test decoder $from $ac_c"
+ PROG=`eval echo $ICONV`
+ if $PROG < $temp1 >/dev/null 2>&1 ; then
+ : # fall through
+ else
+ status=$?
+ if test $status -gt 1 ; then
+ echo "/FAILED"
+ failed=1
+ continue
+ fi
+ fi
+ echo "OK"
+done
+
exit $failed
# Local Variables:
# mode:shell-script
Modified: branches/eglibc-2_19/libc/include/resolv.h
==============================================================================
--- branches/eglibc-2_19/libc/include/resolv.h (original)
+++ branches/eglibc-2_19/libc/include/resolv.h Mon Sep 29 13:30:30 2014
@@ -48,11 +48,11 @@
libc_hidden_proto (__res_state)
int __libc_res_nquery (res_state, const char *, int, int, u_char *, int,
- u_char **, u_char **, int *, int *);
+ u_char **, u_char **, int *, int *, int *);
int __libc_res_nsearch (res_state, const char *, int, int, u_char *, int,
- u_char **, u_char **, int *, int *);
+ u_char **, u_char **, int *, int *, int *);
int __libc_res_nsend (res_state, const u_char *, int, const u_char *, int,
- u_char *, int, u_char **, u_char **, int *, int *)
+ u_char *, int, u_char **, u_char **, int *, int *, int *)
attribute_hidden;
libresolv_hidden_proto (_sethtent)
Modified: branches/eglibc-2_19/libc/locale/findlocale.c
==============================================================================
--- branches/eglibc-2_19/libc/locale/findlocale.c (original)
+++ branches/eglibc-2_19/libc/locale/findlocale.c Mon Sep 29 13:30:30 2014
@@ -17,6 +17,7 @@
<http://www.gnu.org/licenses/>. */
#include <assert.h>
+#include <errno.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
@@ -57,6 +58,45 @@
const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR;
+/* Checks if the name is actually present, that is, not NULL and not
+ empty. */
+static inline int
+name_present (const char *name)
+{
+ return name != NULL && name[0] != '\0';
+}
+
+/* Checks that the locale name neither extremely long, nor contains a
+ ".." path component (to prevent directory traversal). */
+static inline int
+valid_locale_name (const char *name)
+{
+ /* Not set. */
+ size_t namelen = strlen (name);
+ /* Name too long. The limit is arbitrary and prevents stack overflow
+ issues later. */
+ if (__glibc_unlikely (namelen > 255))
+ return 0;
+ /* Directory traversal attempt. */
+ static const char slashdot[4] = {'/', '.', '.', '/'};
+ if (__glibc_unlikely (memmem (name, namelen,
+ slashdot, sizeof (slashdot)) != NULL))
+ return 0;
+ if (namelen == 2 && __glibc_unlikely (name[0] == '.' && name [1] == '.'))
+ return 0;
+ if (namelen >= 3
+ && __glibc_unlikely (((name[0] == '.'
+ && name[1] == '.'
+ && name[2] == '/')
+ || (name[namelen - 3] == '/'
+ && name[namelen - 2] == '.'
+ && name[namelen - 1] == '.'))))
+ return 0;
+ /* If there is a slash in the name, it must start with one. */
+ if (__glibc_unlikely (memchr (name, '/', namelen) != NULL) && name[0] != '/')
+ return 0;
+ return 1;
+}
struct __locale_data *
internal_function
@@ -65,7 +105,7 @@
{
int mask;
/* Name of the locale for this category. */
- char *loc_name;
+ char *loc_name = (char *) *name;
const char *language;
const char *modifier;
const char *territory;
@@ -73,31 +113,39 @@
const char *normalized_codeset;
struct loaded_l10nfile *locale_file;
- if ((*name)[0] == '\0')
+ if (loc_name[0] == '\0')
{
/* The user decides which locale to use by setting environment
variables. */
- *name = getenv ("LC_ALL");
- if (*name == NULL || (*name)[0] == '\0')
- *name = getenv (_nl_category_names.str
+ loc_name = getenv ("LC_ALL");
+ if (!name_present (loc_name))
+ loc_name = getenv (_nl_category_names.str
+ _nl_category_name_idxs[category]);
- if (*name == NULL || (*name)[0] == '\0')
- *name = getenv ("LANG");
- }
-
- if (*name == NULL || (*name)[0] == '\0'
- || (__builtin_expect (__libc_enable_secure, 0)
- && strchr (*name, '/') != NULL))
- *name = (char *) _nl_C_name;
-
- if (__builtin_expect (strcmp (*name, _nl_C_name), 1) == 0
- || __builtin_expect (strcmp (*name, _nl_POSIX_name), 1) == 0)
+ if (!name_present (loc_name))
+ loc_name = getenv ("LANG");
+ if (!name_present (loc_name))
+ loc_name = (char *) _nl_C_name;
+ }
+
+ /* We used to fall back to the C locale if the name contains a slash
+ character '/', but we now check for directory traversal in
+ valid_locale_name, so this is no longer necessary. */
+
+ if (__builtin_expect (strcmp (loc_name, _nl_C_name), 1) == 0
+ || __builtin_expect (strcmp (loc_name, _nl_POSIX_name), 1) == 0)
{
/* We need not load anything. The needed data is contained in
the library itself. */
*name = (char *) _nl_C_name;
return _nl_C[category];
}
+ else if (!valid_locale_name (loc_name))
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ *name = loc_name;
/* We really have to load some data. First we try the archive,
but only if there was no LOCPATH environment variable specified. */
Modified: branches/eglibc-2_19/libc/locale/setlocale.c
==============================================================================
--- branches/eglibc-2_19/libc/locale/setlocale.c (original)
+++ branches/eglibc-2_19/libc/locale/setlocale.c Mon Sep 29 13:30:30 2014
@@ -242,6 +242,8 @@
of entries of the form `CATEGORY=VALUE'. */
const char *newnames[__LC_LAST];
struct __locale_data *newdata[__LC_LAST];
+ /* Copy of the locale argument, for in-place splitting. */
+ char *locale_copy = NULL;
/* Set all name pointers to the argument name. */
for (category = 0; category < __LC_LAST; ++category)
@@ -251,7 +253,13 @@
if (__builtin_expect (strchr (locale, ';') != NULL, 0))
{
/* This is a composite name. Make a copy and split it up. */
- char *np = strdupa (locale);
+ locale_copy = strdup (locale);
+ if (__glibc_unlikely (locale_copy == NULL))
+ {
+ __libc_rwlock_unlock (__libc_setlocale_lock);
+ return NULL;
+ }
+ char *np = locale_copy;
char *cp;
int cnt;
@@ -269,6 +277,7 @@
{
error_return:
__libc_rwlock_unlock (__libc_setlocale_lock);
+ free (locale_copy);
/* Bogus category name. */
ERROR_RETURN;
@@ -361,8 +370,9 @@
/* Critical section left. */
__libc_rwlock_unlock (__libc_setlocale_lock);
- /* Free the resources (the locale path variable). */
+ /* Free the resources. */
free (locale_path);
+ free (locale_copy);
return composite;
}
Modified: branches/eglibc-2_19/libc/localedata/ChangeLog
==============================================================================
--- branches/eglibc-2_19/libc/localedata/ChangeLog (original)
+++ branches/eglibc-2_19/libc/localedata/ChangeLog Mon Sep 29 13:30:30 2014
@@ -1,3 +1,9 @@
+2014-07-02 Florian Weimer <fweimer@xxxxxxxxxx>
+
+ * tst-setlocale3.c: New file.
+ * Makefile (tests): Add tst-setlocale3.
+ (tst-setlocale3-ENV): New variable.
+
2013-12-26 Chris Leonard <cjl@xxxxxxxxxxxxx>
* locales/sa_IN: Add lang_name.
Modified: branches/eglibc-2_19/libc/localedata/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/localedata/Makefile (original)
+++ branches/eglibc-2_19/libc/localedata/Makefile Mon Sep 29 13:30:30 2014
@@ -91,7 +91,7 @@
tests-$(OPTION_EGLIBC_LOCALE_CODE) \
+= $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \
tst-leaks tst-mbswcs6 tst-xlocale1 tst-xlocale2 bug-usesetlocale \
- tst-strfmon1 tst-sscanf bug-setlocale1 tst-setlocale2
+ tst-strfmon1 tst-sscanf bug-setlocale1 tst-setlocale2 tst-setlocale3
ifeq (y,$(OPTION_EGLIBC_LOCALE_CODE))
tests-static = bug-setlocale1-static
tests += $(tests-static)
@@ -306,7 +306,7 @@
tst-strfmon1-ENV = $(TEST_MBWC_ENV)
tst-strptime-ENV = $(TEST_MBWC_ENV)
-tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-JP
+tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-
bug-iconv-trans-ENV = LOCPATH=$(common-objpfx)localedata
@@ -322,6 +322,7 @@
bug-setlocale1-static-ENV = $(bug-setlocale1-ENV)
bug-setlocale1-static-ARGS = $(bug-setlocale1-ARGS)
tst-setlocale2-ENV = LOCPATH=$(common-objpfx)localedata
+tst-setlocale3-ENV = LOCPATH=$(common-objpfx)localedata
$(objdir)/iconvdata/gconv-modules:
$(MAKE) -C ../iconvdata subdir=iconvdata $@
Modified: branches/eglibc-2_19/libc/manual/locale.texi
==============================================================================
--- branches/eglibc-2_19/libc/manual/locale.texi (original)
+++ branches/eglibc-2_19/libc/manual/locale.texi Mon Sep 29 13:30:30 2014
@@ -29,6 +29,7 @@
* Setting the Locale:: How a program specifies the locale
with library functions.
* Standard Locales:: Locale names available on all systems.
+* Locale Names:: Format of system-specific locale names.
* Locale Information:: How to access the information for the locale.
* Formatting Numbers:: A dedicated function to format numbers.
* Yes-or-No Questions:: Check a Response against the locale.
@@ -99,14 +100,16 @@
most of Spain.
The set of locales supported depends on the operating system you are
-using, and so do their names. We can't make any promises about what
-locales will exist, except for one standard locale called @samp{C} or
-@samp{POSIX}. Later we will describe how to construct locales.
-@comment (@pxref{Building Locale Files}).
+using, and so do their names, except that the standard locale called
+@samp{C} or @samp{POSIX} always exist. @xref{Locale Names}.
+
+In order to force the system to always use the default locale, the
+user can set the @code{LC_ALL} environment variable to @samp{C}.
@cindex combining locales
-A user also has the option of specifying different locales for different
-purposes---in effect, choosing a mixture of multiple locales.
+A user also has the option of specifying different locales for
+different purposes---in effect, choosing a mixture of multiple
+locales. @xref{Locale Categories}.
For example, the user might specify the locale @samp{espana-castellano}
for most purposes, but specify the locale @samp{usa-english} for
@@ -120,7 +123,7 @@
for a particular subset of those purposes.
@node Locale Categories, Setting the Locale, Choosing Locale, Locales
-@section Categories of Activities that Locales Affect
+@section Locale Categories
@cindex categories for locales
@cindex locale categories
@@ -128,7 +131,11 @@
that a user or a program can choose the locale for each category
independently. Here is a table of categories; each name is both an
environment variable that a user can set, and a macro name that you can
-use as an argument to @code{setlocale}.
+use as the first argument to @code{setlocale}.
+
+The contents of the environment variable (or the string in the second
+argument to @code{setlocale}) has to be a valid locale name.
+@xref{Locale Names}.
@vtable @code
@comment locale.h
@@ -172,7 +179,7 @@
@comment locale.h
@comment ISO
@item LC_ALL
-This is not an environment variable; it is only a macro that you can use
+This is not a category; it is only a macro that you can use
with @code{setlocale} to set a single locale for all purposes. Setting
this environment variable overwrites all selections by the other
@code{LC_*} variables or @code{LANG}.
@@ -355,13 +362,7 @@
@c strndup @ascuheap @acsmem
@c strcasecmp_l ok (C locale)
The function @code{setlocale} sets the current locale for category
-@var{category} to @var{locale}. A list of all the locales the system
-provides can be created by running
-
-@pindex locale
-@smallexample
- locale -a
-@end smallexample
+@var{category} to @var{locale}.
If @var{category} is @code{LC_ALL}, this specifies the locale for all
purposes. The other possible values of @var{category} specify an
@@ -386,10 +387,9 @@
When you read the current locale for category @code{LC_ALL}, the value
encodes the entire combination of selected locales for all categories.
-In this case, the value is not just a single locale name. In fact, we
-don't make any promises about what it looks like. But if you specify
-the same ``locale name'' with @code{LC_ALL} in a subsequent call to
-@code{setlocale}, it restores the same combination of locale selections.
+If you specify the same ``locale name'' with @code{LC_ALL} in a
+subsequent call to @code{setlocale}, it restores the same combination
+of locale selections.
To be sure you can use the returned string encoding the currently selected
locale at a later time, you must make a copy of the string. It is not
@@ -405,19 +405,14 @@
If a nonempty string is given for @var{locale}, then the locale of that
name is used if possible.
+The effective locale name (either the second argument to
+@code{setlocale}, or if the argument is an empty string, the name
+obtained from the process environment) must be valid locale name.
+@xref{Locale Names}.
+
If you specify an invalid locale name, @code{setlocale} returns a null
pointer and leaves the current locale unchanged.
@end deftypefun
-
-The path used for finding locale data can be set using the
-@code{LOCPATH} environment variable. The default path for finding
-locale data is system specific. It is computed from the value given
-as the prefix while configuring the C library. This value normally is
-@file{/usr} or @file{/}. For the former the complete path is:
-
-@smallexample
-/usr/lib/locale
-@end smallexample
Here is an example showing how you might use @code{setlocale} to
temporarily switch to a new locale.
@@ -458,7 +453,7 @@
portability, assume that any symbol beginning with @samp{LC_} might be
defined in @file{locale.h}.
-@node Standard Locales, Locale Information, Setting the Locale, Locales
+@node Standard Locales, Locale Names, Setting the Locale, Locales
@section Standard Locales
The only locale names you can count on finding on all operating systems
@@ -492,7 +487,94 @@
locale explicitly by name. Remember, different machines might have
different sets of locales installed.
-@node Locale Information, Formatting Numbers, Standard Locales, Locales
+@node Locale Names, Locale Information, Standard Locales, Locales
+@section Locale Names
+
+The following command prints a list of locales supported by the
+system:
+
+@pindex locale
+@smallexample
+ locale -a
+@end smallexample
+
+@strong{Portability Note:} With the notable exception of the standard
+locale names @samp{C} and @samp{POSIX}, locale names are
+system-specific.
+
+Most locale names follow XPG syntax and consist of up to four parts:
+
+@smallexample
+@var{language}[_@var{territory}[.@var{codeset}]][@@@var{modifier}]
+@end smallexample
+
+Beside the first part, all of them are allowed to be missing. If the
+full specified locale is not found, less specific ones are looked for.
+The various parts will be stripped off, in the following order:
+
+@enumerate
+@item
+codeset
+@item
+normalized codeset
+@item
+territory
+@item
+modifier
+@end enumerate
+
+For example, the locale name @samp{de_AT.iso885915@@euro} denotes a
+German-language locale for use in Austria, using the ISO-8859-15
+(Latin-9) character set, and with the Euro as the currency symbol.
+
+In addition to locale names which follow XPG syntax, systems may
+provide aliases such as @samp{german}. Both categories of names must
+not contain the slash character @samp{/}.
+
+If the locale name starts with a slash @samp{/}, it is treated as a
+path relative to the configured locale directories; see @code{LOCPATH}
+below. The specified path must not contain a component @samp{..}, or
+the name is invalid, and @code{setlocale} will fail.
+
+@strong{Portability Note:} POSIX suggests that if a locale name starts
+with a slash @samp{/}, it is resolved as an absolute path. However,
+@theglibc{} treats it as a relative path under the directories listed
+in @code{LOCPATH} (or the default locale directory if @code{LOCPATH}
+is unset).
+
+Locale names which are longer than an implementation-defined limit are
+invalid and cause @code{setlocale} to fail.
+
+As a special case, locale names used with @code{LC_ALL} can combine
+several locales, reflecting different locale settings for different
+categories. For example, you might want to use a U.S. locale with ISO
+A4 paper format, so you set @code{LANG} to @samp{en_US.UTF-8}, and
+@code{LC_PAPER} to @samp{de_DE.UTF-8}. In this case, the
+@code{LC_ALL}-style combined locale name is
+
+@smallexample
+LC_CTYPE=en_US.UTF-8;LC_TIME=en_US.UTF-8;LC_PAPER=de_DE.UTF-8;@dots{}
+@end smallexample
+
+followed by other category settings not shown here.
+
+@vindex LOCPATH
+The path used for finding locale data can be set using the
+@code{LOCPATH} environment variable. This variable lists the
+directories in which to search for locale definitions, separated by a
+colon @samp{:}.
+
+The default path for finding locale data is system specific. A typical
+value for the @code{LOCPATH} default is:
+
+@smallexample
+/usr/share/locale
+@end smallexample
+
+The value of @code{LOCPATH} is ignored by privileged programs for
+security reasons, and only the default directory is used.
+
+@node Locale Information, Formatting Numbers, Locale Names, Locales
@section Accessing Locale Information
There are several ways to access locale information. The simplest
Modified: branches/eglibc-2_19/libc/misc/sys/xattr.h
==============================================================================
--- branches/eglibc-2_19/libc/misc/sys/xattr.h (original)
+++ branches/eglibc-2_19/libc/misc/sys/xattr.h Mon Sep 29 13:30:30 2014
@@ -26,6 +26,7 @@
/* The following constants should be used for the fifth parameter of
`*setxattr'. */
+#ifndef __USE_KERNEL_XATTR_DEFS
enum
{
XATTR_CREATE = 1, /* set value, fail if attr already exists. */
@@ -33,6 +34,7 @@
XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */
#define XATTR_REPLACE XATTR_REPLACE
};
+#endif
/* Set the attribute NAME of the file pointed to by PATH to VALUE (which
is SIZE bytes long). Return 0 on success, -1 for errors. */
Modified: branches/eglibc-2_19/libc/nis/nss_nis/nis-hosts.c
==============================================================================
--- branches/eglibc-2_19/libc/nis/nss_nis/nis-hosts.c (original)
+++ branches/eglibc-2_19/libc/nis/nss_nis/nis-hosts.c Mon Sep 29 13:30:30 2014
@@ -270,6 +270,13 @@
/* Convert name to lowercase. */
size_t namlen = strlen (name);
+ /* Limit name length to the maximum size of an RPC packet. */
+ if (namlen > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
char name2[namlen + 1];
size_t i;
@@ -461,6 +468,13 @@
/* Convert name to lowercase. */
size_t namlen = strlen (name);
+ /* Limit name length to the maximum size of an RPC packet. */
+ if (namlen > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
char name2[namlen + 1];
size_t i;
Modified: branches/eglibc-2_19/libc/nis/nss_nis/nis-initgroups.c
==============================================================================
--- branches/eglibc-2_19/libc/nis/nss_nis/nis-initgroups.c (original)
+++ branches/eglibc-2_19/libc/nis/nss_nis/nis-initgroups.c Mon Sep 29 13:30:30 2014
@@ -150,6 +150,13 @@
gid_t **groupsp, long int limit, int *errnop,
const char *domainname)
{
+ /* Limit domainname length to the maximum size of an RPC packet. */
+ if (strlen (domainname) > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
/* Prepare the key. The form is "unix.UID@DOMAIN" with the UID and
DOMAIN field filled in appropriately. */
char key[sizeof ("unix.@") + sizeof (uid_t) * 3 + strlen (domainname)];
Modified: branches/eglibc-2_19/libc/nis/nss_nis/nis-network.c
==============================================================================
--- branches/eglibc-2_19/libc/nis/nss_nis/nis-network.c (original)
+++ branches/eglibc-2_19/libc/nis/nss_nis/nis-network.c Mon Sep 29 13:30:30 2014
@@ -179,6 +179,13 @@
/* Convert name to lowercase. */
size_t namlen = strlen (name);
+ /* Limit name length to the maximum size of an RPC packet. */
+ if (namlen > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
char name2[namlen + 1];
size_t i;
Modified: branches/eglibc-2_19/libc/nis/nss_nis/nis-service.c
==============================================================================
--- branches/eglibc-2_19/libc/nis/nss_nis/nis-service.c (original)
+++ branches/eglibc-2_19/libc/nis/nss_nis/nis-service.c Mon Sep 29 13:30:30 2014
@@ -271,6 +271,13 @@
/* If the protocol is given, we could try if our NIS server knows
about services.byservicename map. If yes, we only need one query. */
size_t keylen = strlen (name) + (protocol ? 1 + strlen (protocol) : 0);
+ /* Limit key length to the maximum size of an RPC packet. */
+ if (keylen > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
char key[keylen + 1];
/* key is: "name/proto" */
@@ -355,6 +362,13 @@
Otherwise try first port/tcp, then port/udp and then fallback
to sequential scanning of services.byname. */
const char *proto = protocol != NULL ? protocol : "tcp";
+ /* Limit protocol name length to the maximum size of an RPC packet. */
+ if (strlen (proto) > UDPMSGSIZE)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_UNAVAIL;
+ }
+
do
{
/* key is: "port/proto" */
Modified: branches/eglibc-2_19/libc/nptl/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/nptl/Makefile (original)
+++ branches/eglibc-2_19/libc/nptl/Makefile Mon Sep 29 13:30:30 2014
@@ -212,7 +212,7 @@
tst-mutexpi1 tst-mutexpi2 tst-mutexpi3 tst-mutexpi4 tst-mutexpi5 \
tst-mutexpi5a tst-mutexpi6 tst-mutexpi7 tst-mutexpi7a tst-mutexpi8 \
tst-mutexpi9 \
- tst-spin1 tst-spin2 tst-spin3 \
+ tst-spin1 tst-spin2 tst-spin3 tst-spin4 \
tst-cond1 tst-cond2 tst-cond3 tst-cond4 tst-cond5 tst-cond6 tst-cond7 \
tst-cond8 tst-cond9 tst-cond10 tst-cond11 tst-cond12 tst-cond13 \
tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \
Modified: branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.S
==============================================================================
--- branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.S (original)
+++ branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.S Mon Sep 29 13:30:30 2014
@@ -19,11 +19,11 @@
.text
ENTRY(pthread_spin_lock)
- ldstub [%o0], %g1
+1: ldstub [%o0], %g1
orcc %g1, 0x0, %g0
bne,a 2f
ldub [%o0], %g1
-1: retl
+ retl
mov 0, %o0
2: orcc %g1, 0x0, %g0
bne,a 2b
Modified: branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.S
==============================================================================
--- branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.S (original)
+++ branches/eglibc-2_19/libc/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.S Mon Sep 29 13:30:30 2014
@@ -19,10 +19,10 @@
.text
ENTRY(pthread_spin_lock)
- ldstub [%o0], %g1
+1: ldstub [%o0], %g1
brnz,pn %g1, 2f
membar #StoreLoad | #StoreStore
-1: retl
+ retl
mov 0, %o0
2: ldub [%o0], %g1
brnz,pt %g1, 2b
Modified: branches/eglibc-2_19/libc/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
==============================================================================
--- branches/eglibc-2_19/libc/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c (original)
+++ branches/eglibc-2_19/libc/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c Mon Sep 29 13:30:30 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013 Free Software Foundation, Inc.
+/* Copyright (C) 2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -15,49 +15,30 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>.
- This is a copy of pthread/pt-longjmp.c made for extending the
- jmpbuf structure on System z. */
+ Versioned copy of nptl/pt-longjmp.c modified for versioning
+ the reverted jmpbuf extension. */
-#include <setjmp.h>
-#include <stdlib.h>
-#include <bits/wordsize.h>
-#include "pthreadP.h"
#include <shlib-compat.h>
-#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_19)
-/* The __v1 version prototypes are declared in v1-setjmp.h which
- cannot be included together with setjmp.h. So we put the
- prototypes here manually. */
-extern void __v1__libc_siglongjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
-extern void __v1__libc_longjmp (sigjmp_buf env, int val)
- __attribute__ ((noreturn));
+#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
+ /* we need a unique name in case of symbol versioning. */
+# define longjmp __v1longjmp
+#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */
-void __v1_siglongjmp (sigjmp_buf env, int val)
-{
- __v1__libc_siglongjmp (env, val);
-}
+#include <nptl/sysdeps/pthread/pt-longjmp.c>
-void __v1_longjmp (jmp_buf env, int val)
-{
- __v1__libc_longjmp (env, val);
-}
+#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
+/* In glibc release 2.19 new versions of longjmp-functions were introduced,
+ but were reverted before 2.20. Thus both versions are the same function. */
-compat_symbol (libpthread, __v1_longjmp, longjmp, GLIBC_2_0);
-compat_symbol (libpthread, __v1_siglongjmp, siglongjmp, GLIBC_2_0);
-#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_19)) */
+# undef longjmp
-void
-__v2_longjmp (jmp_buf env, int val)
-{
- __libc_longjmp (env, val);
-}
+strong_alias (__v1longjmp, __v2longjmp)
+versioned_symbol (libpthread, __v1longjmp, longjmp, GLIBC_2_0);
+compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19);
-void
-__v2_siglongjmp (jmp_buf env, int val)
-{
- __libc_siglongjmp (env, val);
-}
-
-versioned_symbol (libpthread, __v2_longjmp, longjmp, GLIBC_2_19);
-versioned_symbol (libpthread, __v2_siglongjmp, siglongjmp, GLIBC_2_19);
+weak_alias (siglongjmp, __v1siglongjmp)
+weak_alias (siglongjmp, __v2siglongjmp)
+versioned_symbol (libpthread, __v1siglongjmp, siglongjmp, GLIBC_2_0);
+compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19);
+#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)) */
Modified: branches/eglibc-2_19/libc/nscd/netgroupcache.c
==============================================================================
--- branches/eglibc-2_19/libc/nscd/netgroupcache.c (original)
+++ branches/eglibc-2_19/libc/nscd/netgroupcache.c Mon Sep 29 13:30:30 2014
@@ -202,12 +202,7 @@
{
int e;
status = getfct.f (&data, buffer + buffilled,
- buflen - buffilled, &e);
- if (status == NSS_STATUS_RETURN
- || status == NSS_STATUS_NOTFOUND)
- /* This was either the last one for this group or the
- group was empty. Look at next group if available. */
- break;
+ buflen - buffilled - req->key_len, &e);
if (status == NSS_STATUS_SUCCESS)
{
if (data.type == triple_val)
@@ -322,11 +317,18 @@
}
}
}
- else if (status == NSS_STATUS_UNAVAIL && e == ERANGE)
+ else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE)
{
buflen *= 2;
buffer = xrealloc (buffer, buflen);
}
+ else if (status == NSS_STATUS_RETURN
+ || status == NSS_STATUS_NOTFOUND
+ || status == NSS_STATUS_UNAVAIL)
+ /* This was either the last one for this group or the
+ group was empty or the NSS module had an internal
+ failure. Look at next group if available. */
+ break;
}
enum nss_status (*endfct) (struct __netgrent *);
Modified: branches/eglibc-2_19/libc/nss/nss_files/files-netgrp.c
==============================================================================
--- branches/eglibc-2_19/libc/nss/nss_files/files-netgrp.c (original)
+++ branches/eglibc-2_19/libc/nss/nss_files/files-netgrp.c Mon Sep 29 13:30:30 2014
@@ -252,7 +252,7 @@
if (cp - host > buflen)
{
*errnop = ERANGE;
- status = NSS_STATUS_UNAVAIL;
+ status = NSS_STATUS_TRYAGAIN;
}
else
{
Modified: branches/eglibc-2_19/libc/po/eo.po
==============================================================================
--- branches/eglibc-2_19/libc/po/eo.po (original)
+++ branches/eglibc-2_19/libc/po/eo.po Mon Sep 29 13:30:30 2014
@@ -10,7 +10,7 @@
"Project-Id-Version: libc 2.18.90.20140105\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-05 17:40+1000\n"
-"PO-Revision-Date: 2014-01-08 21:23+0100\n"
+"PO-Revision-Date: 2014-04-22 22:50+0200\n"
"Last-Translator: Benno Schulenberg <benno@xxxxxxxxxxx>\n"
"Language-Team: Esperanto <translation-team-eo@xxxxxxxxxxxxxxxxxxxxx>\n"
"Language: eo\n"
@@ -967,7 +967,7 @@
#. TRANS expected to already exist.
#: elf/ldd.bash.in:147 sysdeps/gnu/errlist.c:36
msgid "No such file or directory"
-msgstr "Dosiero aÃÂ dosierujo ne ekzistas"
+msgstr "Dosiero aÃÂ dosierujo ne ekzistas"
#: elf/ldd.bash.in:150 inet/rcmd.c:488
msgid "not regular file"
@@ -992,7 +992,7 @@
#: elf/pldd-xx.c:105
#, c-format
msgid "cannot find program header of process"
-msgstr ""
+msgstr "ne eblas trovi programÃÂapon de procezo"
#: elf/pldd-xx.c:110
#, c-format
@@ -1055,7 +1055,7 @@
#: elf/pldd.c:145
#, c-format
msgid "cannot prepare reading %s/task"
-msgstr ""
+msgstr "ne eblas prepari legado de %s/task"
#: elf/pldd.c:158
#, c-format
@@ -1070,7 +1070,7 @@
#: elf/pldd.c:261
#, c-format
msgid "cannot get information about process %lu"
-msgstr ""
+msgstr "ne eblas ekhavi informon pri procezo %lu"
#: elf/pldd.c:274
#, c-format
@@ -1080,7 +1080,7 @@
#: elf/readelflib.c:34
#, c-format
msgid "file %s is truncated\n"
-msgstr ""
+msgstr "dosiero %s trunkiÃÂis\n"
#: elf/readelflib.c:66
#, c-format
@@ -1105,7 +1105,7 @@
#: elf/readelflib.c:108
#, c-format
msgid "more than one dynamic segment\n"
-msgstr ""
+msgstr "pli ol unu dinamika segmento\n"
#: elf/readlib.c:96
#, c-format
@@ -1191,7 +1191,7 @@
#: elf/sotruss.ksh:46
msgid "Mandatory arguments to long options are also mandatory for any corresponding\\nshort options.\\n"
-msgstr ""
+msgstr "Endaj argumentoj por longaj opcioj ankaÃÂ endas por korespondaj mallongaj opcioj.\\n"
#: elf/sotruss.ksh:55
msgid "%s: option requires an argument -- '%s'\\n"
@@ -1576,7 +1576,7 @@
#: inet/rcmd.c:493
msgid "cannot open"
-msgstr ""
+msgstr "ne eblas malfermi"
#: inet/rcmd.c:495
msgid "fstat failed"
@@ -5788,7 +5788,7 @@
#. TRANS computer.
#: sysdeps/gnu/errlist.c:82
msgid "No such device or address"
-msgstr "Tiu aparato aÃÂ adreso ne ekzistas"
+msgstr "Tiu aparato aÃÂ adreso ne ekzistas"
#. TRANS Argument list too long; used when the arguments passed to a new program
#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
@@ -6311,7 +6311,7 @@
#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
#: sysdeps/gnu/errlist.c:931
msgid "Invalid or incomplete multibyte or wide character"
-msgstr "Nevalida aÃÂ nekompleta plurbajta aÃÂ larÃÂa signo"
+msgstr "Nevalida aÃÂ nekompleta plurbajta aÃÂ larÃÂa signo"
#. TRANS On @gnuhurdsystems{}, servers supporting the @code{term} protocol return
#. TRANS this error for certain operations when the caller is not in the
Modified: branches/eglibc-2_19/libc/po/sv.po
==============================================================================
--- branches/eglibc-2_19/libc/po/sv.po (original)
+++ branches/eglibc-2_19/libc/po/sv.po Mon Sep 29 13:30:30 2014
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: libc 2.18.90.20140105\n"
"POT-Creation-Date: 2014-01-05 17:40+1000\n"
-"PO-Revision-Date: 2014-01-09 10:33+0100\n"
+"PO-Revision-Date: 2014-05-06 18:15+0200\n"
"Last-Translator: Jan DjÃÂrv <jan.h.d@xxxxxxxxxx>\n"
"Language-Team: Swedish <tp-sv@xxxxxxxxxxxxxxx>\n"
"Language: sv\n"
@@ -883,7 +883,7 @@
#: elf/ldconfig.c:1072
#, c-format
msgid "Warning: ignoring configuration file that cannot be opened: %s"
-msgstr "Varning: Ignorerar konfigurationsfil som inte kan ÃÂppnas: %s"
+msgstr "Varning: ignorerar konfigurationsfil som inte kan ÃÂppnas: %s"
#: elf/ldconfig.c:1138
#, c-format
@@ -4104,7 +4104,7 @@
#: nscd/nscd.c:120
msgid "Do not fork, but otherwise behave like a daemon"
-msgstr "Skapa inte brnprocess, men i allt annat upptrÃÂd som en demon"
+msgstr "Skapa inte barnprocess, men i allt annat upptrÃÂd som en demon"
#: nscd/nscd.c:121
msgid "NUMBER"
@@ -4630,7 +4630,7 @@
#: nss/makedb.c:799
#, c-format
msgid "failed to write new database file"
-msgstr "misslyckades med att skriva databasfil"
+msgstr "misslyckades med att skriva ny databasfil"
#: nss/makedb.c:812
#, c-format
@@ -5496,7 +5496,7 @@
#: sunrpc/rpc_main.c:1445
#, c-format
msgid "-5\t\tSysVr4 compatibility mode\n"
-msgstr "-5\t\tSysVr4 kompabilitetslÃÂge\n"
+msgstr "-5\t\tSysVr4-kompatibilitetslÃÂge\n"
#: sunrpc/rpc_main.c:1446
#, c-format
@@ -6812,7 +6812,7 @@
"\n"
"Report bugs to %s.\n"
msgstr ""
-"%s: anvÃÂndning ÃÂr %s [ --version ] [ --help ] [ -{vV} ] [ -{ct} [start,]slut] zonnamn ...\n"
+"%s: anvÃÂndning: %s [ --version ] [ --help ] [ -{vV} ] [ -{ct} [start,]slut] zonnamn ...\n"
"Rapportera fel till %s.\n"
"Rapportera fel eller synpunkter pÃÂ ÃÂversÃÂttningen till <tp-sv@xxxxxxxxxxxxxxx>.\n"
Modified: branches/eglibc-2_19/libc/ports/ChangeLog.aarch64
==============================================================================
--- branches/eglibc-2_19/libc/ports/ChangeLog.aarch64 (original)
+++ branches/eglibc-2_19/libc/ports/ChangeLog.aarch64 Mon Sep 29 13:30:30 2014
@@ -1,3 +1,9 @@
+2014-05-21 Richard Henderson <rth@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
+ (SINGLE_THREAD_P): Use the correct width load. Fold an add
+ into the ldr offset.
+
2014-01-22 Marcus Shawcroft <marcus.shawcroft@xxxxxxx>
* sysdeps/aarch64/libm-test-ulps: Regenerated.
Modified: branches/eglibc-2_19/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h
==============================================================================
--- branches/eglibc-2_19/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h (original)
+++ branches/eglibc-2_19/libc/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h Mon Sep 29 13:30:30 2014
@@ -162,9 +162,8 @@
# else
# define SINGLE_THREAD_P \
adrp x16, __local_multiple_threads; \
- add x16, x16, #:lo12:__local_multiple_threads; \
- ldr x16, [x16]; \
- cmp x16, 0;
+ ldr w16, [x16, :lo12:__local_multiple_threads]; \
+ cmp w16, 0;
# endif
# else
/* There is no __local_multiple_threads for librt, so use the TCB. */
@@ -180,12 +179,12 @@
cfi_rel_offset (x30, 8); \
bl __read_tp; \
sub x0, x0, PTHREAD_SIZEOF; \
- ldr x16, [x0, PTHREAD_MULTIPLE_THREADS_OFFSET]; \
+ ldr w16, [x0, PTHREAD_MULTIPLE_THREADS_OFFSET]; \
ldp x0, x30, [sp], 16; \
cfi_restore (x0); \
cfi_restore (x30); \
cfi_adjust_cfa_offset (-16); \
- cmp x16, 0
+ cmp w16, 0
# define SINGLE_THREAD_P_PIC(x) SINGLE_THREAD_P
# endif
# endif
Modified: branches/eglibc-2_19/libc/posix/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/posix/Makefile (original)
+++ branches/eglibc-2_19/libc/posix/Makefile Mon Sep 29 13:30:30 2014
@@ -96,7 +96,7 @@
tst-fnmatch2 tst-cpucount tst-cpuset \
bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
bug-getopt5 tst-getopt_long1 bug-regex34 bug-regex35 \
- tst-pathconf tst-getaddrinfo4
+ tst-pathconf tst-getaddrinfo4 bug-regex36
tests-$(OPTION_EGLIBC_LOCALE_CODE) \
+= tst-fnmatch tst-regexloc bug-regex1 bug-regex5 \
bug-regex23 bug-regex25 bug-regex32 bug-regex33
@@ -135,7 +135,7 @@
tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \
- tst-fnmatch-mem tst-fnmatch.mtrace
+ tst-fnmatch-mem tst-fnmatch.mtrace bug-regex36.mtrace
include ../Rules
@@ -297,6 +297,12 @@
$(objpfx)bug-regex31-mem: $(objpfx)bug-regex31.out
$(common-objpfx)malloc/mtrace $(objpfx)bug-regex31.mtrace > $@
+bug-regex36-ENV = MALLOC_TRACE=$(objpfx)bug-regex36.mtrace
+
+$(objpfx)bug-regex36-mem.out: $(objpfx)bug-regex36.out
+ $(common-objpfx)malloc/mtrace $(objpfx)bug-regex36.mtrace > $@; \
+ $(evaluate-test)
+
tst-vfork3-ENV = MALLOC_TRACE=$(objpfx)tst-vfork3.mtrace
$(objpfx)tst-vfork3-mem: $(objpfx)tst-vfork3.out
Modified: branches/eglibc-2_19/libc/posix/regcomp.c
==============================================================================
--- branches/eglibc-2_19/libc/posix/regcomp.c (original)
+++ branches/eglibc-2_19/libc/posix/regcomp.c Mon Sep 29 13:30:30 2014
@@ -2163,7 +2163,11 @@
{
branch = parse_branch (regexp, preg, token, syntax, nest, err);
if (BE (*err != REG_NOERROR && branch == NULL, 0))
- return NULL;
+ {
+ if (tree != NULL)
+ postorder (tree, free_tree, NULL);
+ return NULL;
+ }
}
else
branch = NULL;
@@ -2424,14 +2428,21 @@
while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
|| token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
{
- tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
- if (BE (*err != REG_NOERROR && tree == NULL, 0))
- return NULL;
+ bin_tree_t *dup_tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
+ if (BE (*err != REG_NOERROR && dup_tree == NULL, 0))
+ {
+ if (tree != NULL)
+ postorder (tree, free_tree, NULL);
+ return NULL;
+ }
+ tree = dup_tree;
/* In BRE consecutive duplications are not allowed. */
if ((syntax & RE_CONTEXT_INVALID_DUP)
&& (token->type == OP_DUP_ASTERISK
|| token->type == OP_OPEN_DUP_NUM))
{
+ if (tree != NULL)
+ postorder (tree, free_tree, NULL);
*err = REG_BADRPT;
return NULL;
}
Modified: branches/eglibc-2_19/libc/posix/spawn_faction_addopen.c
==============================================================================
--- branches/eglibc-2_19/libc/posix/spawn_faction_addopen.c (original)
+++ branches/eglibc-2_19/libc/posix/spawn_faction_addopen.c Mon Sep 29 13:30:30 2014
@@ -18,6 +18,7 @@
#include <errno.h>
#include <spawn.h>
#include <unistd.h>
+#include <string.h>
#include "spawn_int.h"
@@ -35,17 +36,24 @@
if (fd < 0 || fd >= maxfd)
return EBADF;
+ char *path_copy = strdup (path);
+ if (path_copy == NULL)
+ return ENOMEM;
+
/* Allocate more memory if needed. */
if (file_actions->__used == file_actions->__allocated
&& __posix_spawn_file_actions_realloc (file_actions) != 0)
- /* This can only mean we ran out of memory. */
- return ENOMEM;
+ {
+ /* This can only mean we ran out of memory. */
+ free (path_copy);
+ return ENOMEM;
+ }
/* Add the new value. */
rec = &file_actions->__actions[file_actions->__used];
rec->tag = spawn_do_open;
rec->action.open_action.fd = fd;
- rec->action.open_action.path = path;
+ rec->action.open_action.path = path_copy;
rec->action.open_action.oflag = oflag;
rec->action.open_action.mode = mode;
Modified: branches/eglibc-2_19/libc/posix/spawn_faction_destroy.c
==============================================================================
--- branches/eglibc-2_19/libc/posix/spawn_faction_destroy.c (original)
+++ branches/eglibc-2_19/libc/posix/spawn_faction_destroy.c Mon Sep 29 13:30:30 2014
@@ -18,11 +18,29 @@
#include <spawn.h>
#include <stdlib.h>
-/* Initialize data structure for file attribute for `spawn' call. */
+#include "spawn_int.h"
+
+/* Deallocate the file actions. */
int
posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *file_actions)
{
- /* Free the memory allocated. */
+ /* Free the paths in the open actions. */
+ for (int i = 0; i < file_actions->__used; ++i)
+ {
+ struct __spawn_action *sa = &file_actions->__actions[i];
+ switch (sa->tag)
+ {
+ case spawn_do_open:
+ free (sa->action.open_action.path);
+ break;
+ case spawn_do_close:
+ case spawn_do_dup2:
+ /* No cleanup required. */
+ break;
+ }
+ }
+
+ /* Free the array of actions. */
free (file_actions->__actions);
return 0;
}
Modified: branches/eglibc-2_19/libc/posix/spawn_int.h
==============================================================================
--- branches/eglibc-2_19/libc/posix/spawn_int.h (original)
+++ branches/eglibc-2_19/libc/posix/spawn_int.h Mon Sep 29 13:30:30 2014
@@ -22,7 +22,7 @@
struct
{
int fd;
- const char *path;
+ char *path;
int oflag;
mode_t mode;
} open_action;
Modified: branches/eglibc-2_19/libc/posix/tst-spawn.c
==============================================================================
--- branches/eglibc-2_19/libc/posix/tst-spawn.c (original)
+++ branches/eglibc-2_19/libc/posix/tst-spawn.c Mon Sep 29 13:30:30 2014
@@ -168,6 +168,7 @@
char fd2name[18];
char fd3name[18];
char fd4name[18];
+ char *name3_copy;
char *spargv[12];
int i;
@@ -222,9 +223,15 @@
if (posix_spawn_file_actions_addclose (&actions, fd1) != 0)
error (EXIT_FAILURE, errno, "posix_spawn_file_actions_addclose");
/* We want to open the third file. */
- if (posix_spawn_file_actions_addopen (&actions, fd3, name3,
+ name3_copy = strdup (name3);
+ if (name3_copy == NULL)
+ error (EXIT_FAILURE, errno, "strdup");
+ if (posix_spawn_file_actions_addopen (&actions, fd3, name3_copy,
O_RDONLY, 0666) != 0)
error (EXIT_FAILURE, errno, "posix_spawn_file_actions_addopen");
+ /* Overwrite the name to check that a copy has been made. */
+ memset (name3_copy, 'X', strlen (name3_copy));
+
/* We dup the second descriptor. */
fd4 = MAX (2, MAX (fd1, MAX (fd2, fd3))) + 1;
if (posix_spawn_file_actions_adddup2 (&actions, fd2, fd4) != 0)
@@ -253,6 +260,7 @@
/* Cleanup. */
if (posix_spawn_file_actions_destroy (&actions) != 0)
error (EXIT_FAILURE, errno, "posix_spawn_file_actions_destroy");
+ free (name3_copy);
/* Wait for the child. */
if (waitpid (pid, &status, 0) != pid)
Modified: branches/eglibc-2_19/libc/resolv/gethnamaddr.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/gethnamaddr.c (original)
+++ branches/eglibc-2_19/libc/resolv/gethnamaddr.c Mon Sep 29 13:30:30 2014
@@ -621,7 +621,7 @@
buf.buf = origbuf = (querybuf *) alloca (1024);
if ((n = __libc_res_nsearch(&_res, name, C_IN, type, buf.buf->buf, 1024,
- &buf.ptr, NULL, NULL, NULL)) < 0) {
+ &buf.ptr, NULL, NULL, NULL, NULL)) < 0) {
if (buf.buf != origbuf)
free (buf.buf);
Dprintf("res_nsearch failed (%d)\n", n);
@@ -716,12 +716,12 @@
buf.buf = orig_buf = (querybuf *) alloca (1024);
n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, 1024,
- &buf.ptr, NULL, NULL, NULL);
+ &buf.ptr, NULL, NULL, NULL, NULL);
if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) {
strcpy(qp, "ip6.int");
n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf,
buf.buf != orig_buf ? MAXPACKET : 1024,
- &buf.ptr, NULL, NULL, NULL);
+ &buf.ptr, NULL, NULL, NULL, NULL);
}
if (n < 0) {
if (buf.buf != orig_buf)
Modified: branches/eglibc-2_19/libc/resolv/nss_dns/dns-canon.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/nss_dns/dns-canon.c (original)
+++ branches/eglibc-2_19/libc/resolv/nss_dns/dns-canon.c Mon Sep 29 13:30:30 2014
@@ -62,7 +62,7 @@
{
int r = __libc_res_nquery (&_res, name, ns_c_in, qtypes[i],
buf, sizeof (buf), &ansp.ptr, NULL, NULL,
- NULL);
+ NULL, NULL);
if (r > 0)
{
/* We need to decode the response. Just one question record.
Modified: branches/eglibc-2_19/libc/resolv/nss_dns/dns-host.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/nss_dns/dns-host.c (original)
+++ branches/eglibc-2_19/libc/resolv/nss_dns/dns-host.c Mon Sep 29 13:30:30 2014
@@ -190,7 +190,7 @@
host_buffer.buf = orig_host_buffer = (querybuf *) alloca (1024);
n = __libc_res_nsearch (&_res, name, C_IN, type, host_buffer.buf->buf,
- 1024, &host_buffer.ptr, NULL, NULL, NULL);
+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL);
if (n < 0)
{
switch (errno)
@@ -225,7 +225,7 @@
n = __libc_res_nsearch (&_res, name, C_IN, T_A, host_buffer.buf->buf,
host_buffer.buf != orig_host_buffer
? MAXPACKET : 1024, &host_buffer.ptr,
- NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL);
if (n < 0)
{
@@ -308,13 +308,20 @@
u_char *ans2p = NULL;
int nans2p = 0;
int resplen2 = 0;
+ int ans2p_malloced = 0;
int olderr = errno;
enum nss_status status;
int n = __libc_res_nsearch (&_res, name, C_IN, T_UNSPEC,
host_buffer.buf->buf, 2048, &host_buffer.ptr,
- &ans2p, &nans2p, &resplen2);
- if (n < 0)
+ &ans2p, &nans2p, &resplen2, &ans2p_malloced);
+ if (n >= 0)
+ {
+ status = gaih_getanswer (host_buffer.buf, n, (const querybuf *) ans2p,
+ resplen2, name, pat, buffer, buflen,
+ errnop, herrnop, ttlp);
+ }
+ else
{
switch (errno)
{
@@ -341,16 +348,11 @@
*errnop = EAGAIN;
else
__set_errno (olderr);
-
- if (host_buffer.buf != orig_host_buffer)
- free (host_buffer.buf);
-
- return status;
- }
-
- status = gaih_getanswer(host_buffer.buf, n, (const querybuf *) ans2p,
- resplen2, name, pat, buffer, buflen,
- errnop, herrnop, ttlp);
+ }
+
+ /* Check whether ans2p was separately allocated. */
+ if (ans2p_malloced)
+ free (ans2p);
if (host_buffer.buf != orig_host_buffer)
free (host_buffer.buf);
@@ -460,7 +462,7 @@
strcpy (qp, "].ip6.arpa");
n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR,
host_buffer.buf->buf, 1024, &host_buffer.ptr,
- NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL);
if (n >= 0)
goto got_it_already;
}
@@ -481,14 +483,14 @@
}
n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf,
- 1024, &host_buffer.ptr, NULL, NULL, NULL);
+ 1024, &host_buffer.ptr, NULL, NULL, NULL, NULL);
if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0)
{
strcpy (qp, "ip6.int");
n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf,
host_buffer.buf != orig_host_buffer
? MAXPACKET : 1024, &host_buffer.ptr,
- NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL);
}
if (n < 0)
{
Modified: branches/eglibc-2_19/libc/resolv/nss_dns/dns-network.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/nss_dns/dns-network.c (original)
+++ branches/eglibc-2_19/libc/resolv/nss_dns/dns-network.c Mon Sep 29 13:30:30 2014
@@ -129,7 +129,7 @@
net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024);
anslen = __libc_res_nsearch (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf,
- 1024, &net_buffer.ptr, NULL, NULL, NULL);
+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL);
if (anslen < 0)
{
/* Nothing found. */
@@ -205,7 +205,7 @@
net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024);
anslen = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf,
- 1024, &net_buffer.ptr, NULL, NULL, NULL);
+ 1024, &net_buffer.ptr, NULL, NULL, NULL, NULL);
if (anslen < 0)
{
/* Nothing found. */
Modified: branches/eglibc-2_19/libc/resolv/res_query.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/res_query.c (original)
+++ branches/eglibc-2_19/libc/resolv/res_query.c Mon Sep 29 13:30:30 2014
@@ -98,7 +98,7 @@
__libc_res_nquerydomain(res_state statp, const char *name, const char *domain,
int class, int type, u_char *answer, int anslen,
u_char **answerp, u_char **answerp2, int *nanswerp2,
- int *resplen2);
+ int *resplen2, int *answerp2_malloced);
/*
* Formulate a normal query, send, and await answer.
@@ -119,7 +119,8 @@
u_char **answerp, /* if buffer needs to be enlarged */
u_char **answerp2,
int *nanswerp2,
- int *resplen2)
+ int *resplen2,
+ int *answerp2_malloced)
{
HEADER *hp = (HEADER *) answer;
HEADER *hp2;
@@ -224,7 +225,8 @@
}
assert (answerp == NULL || (void *) *answerp == (void *) answer);
n = __libc_res_nsend(statp, query1, nquery1, query2, nquery2, answer,
- anslen, answerp, answerp2, nanswerp2, resplen2);
+ anslen, answerp, answerp2, nanswerp2, resplen2,
+ answerp2_malloced);
if (use_malloc)
free (buf);
if (n < 0) {
@@ -316,7 +318,7 @@
int anslen) /* size of answer buffer */
{
return __libc_res_nquery(statp, name, class, type, answer, anslen,
- NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL);
}
libresolv_hidden_def (res_nquery)
@@ -335,7 +337,8 @@
u_char **answerp,
u_char **answerp2,
int *nanswerp2,
- int *resplen2)
+ int *resplen2,
+ int *answerp2_malloced)
{
const char *cp, * const *domain;
HEADER *hp = (HEADER *) answer;
@@ -360,7 +363,7 @@
if (!dots && (cp = res_hostalias(statp, name, tmp, sizeof tmp))!= NULL)
return (__libc_res_nquery(statp, cp, class, type, answer,
anslen, answerp, answerp2,
- nanswerp2, resplen2));
+ nanswerp2, resplen2, answerp2_malloced));
#ifdef DEBUG
if (statp->options & RES_DEBUG)
@@ -377,7 +380,8 @@
if (dots >= statp->ndots || trailing_dot) {
ret = __libc_res_nquerydomain(statp, name, NULL, class, type,
answer, anslen, answerp,
- answerp2, nanswerp2, resplen2);
+ answerp2, nanswerp2, resplen2,
+ answerp2_malloced);
if (ret > 0 || trailing_dot)
return (ret);
saved_herrno = h_errno;
@@ -386,11 +390,11 @@
answer = *answerp;
anslen = MAXPACKET;
}
- if (answerp2
- && (*answerp2 < answer || *answerp2 >= answer + anslen))
+ if (answerp2 && *answerp2_malloced)
{
free (*answerp2);
*answerp2 = NULL;
+ *answerp2_malloced = 0;
}
}
@@ -417,7 +421,7 @@
class, type,
answer, anslen, answerp,
answerp2, nanswerp2,
- resplen2);
+ resplen2, answerp2_malloced);
if (ret > 0)
return (ret);
@@ -425,12 +429,11 @@
answer = *answerp;
anslen = MAXPACKET;
}
- if (answerp2
- && (*answerp2 < answer
- || *answerp2 >= answer + anslen))
+ if (answerp2 && *answerp2_malloced)
{
free (*answerp2);
*answerp2 = NULL;
+ *answerp2_malloced = 0;
}
/*
@@ -486,7 +489,8 @@
&& !(tried_as_is || root_on_list)) {
ret = __libc_res_nquerydomain(statp, name, NULL, class, type,
answer, anslen, answerp,
- answerp2, nanswerp2, resplen2);
+ answerp2, nanswerp2, resplen2,
+ answerp2_malloced);
if (ret > 0)
return (ret);
}
@@ -498,10 +502,11 @@
* else send back meaningless H_ERRNO, that being the one from
* the last DNSRCH we did.
*/
- if (answerp2 && (*answerp2 < answer || *answerp2 >= answer + anslen))
+ if (answerp2 && *answerp2_malloced)
{
free (*answerp2);
*answerp2 = NULL;
+ *answerp2_malloced = 0;
}
if (saved_herrno != -1)
RES_SET_H_ERRNO(statp, saved_herrno);
@@ -521,7 +526,7 @@
int anslen) /* size of answer */
{
return __libc_res_nsearch(statp, name, class, type, answer,
- anslen, NULL, NULL, NULL, NULL);
+ anslen, NULL, NULL, NULL, NULL, NULL);
}
libresolv_hidden_def (res_nsearch)
@@ -539,7 +544,8 @@
u_char **answerp,
u_char **answerp2,
int *nanswerp2,
- int *resplen2)
+ int *resplen2,
+ int *answerp2_malloced)
{
char nbuf[MAXDNAME];
const char *longname = nbuf;
@@ -581,7 +587,7 @@
}
return (__libc_res_nquery(statp, longname, class, type, answer,
anslen, answerp, answerp2, nanswerp2,
- resplen2));
+ resplen2, answerp2_malloced));
}
int
@@ -593,7 +599,8 @@
int anslen) /* size of answer */
{
return __libc_res_nquerydomain(statp, name, domain, class, type,
- answer, anslen, NULL, NULL, NULL, NULL);
+ answer, anslen, NULL, NULL, NULL, NULL,
+ NULL);
}
libresolv_hidden_def (res_nquerydomain)
Modified: branches/eglibc-2_19/libc/resolv/res_send.c
==============================================================================
--- branches/eglibc-2_19/libc/resolv/res_send.c (original)
+++ branches/eglibc-2_19/libc/resolv/res_send.c Mon Sep 29 13:30:30 2014
@@ -186,12 +186,12 @@
static int send_vc(res_state, const u_char *, int,
const u_char *, int,
u_char **, int *, int *, int, u_char **,
- u_char **, int *, int *);
+ u_char **, int *, int *, int *);
static int send_dg(res_state, const u_char *, int,
const u_char *, int,
u_char **, int *, int *, int,
int *, int *, u_char **,
- u_char **, int *, int *);
+ u_char **, int *, int *, int *);
#ifdef DEBUG
static void Aerror(const res_state, FILE *, const char *, int,
const struct sockaddr *);
@@ -343,7 +343,7 @@
__libc_res_nsend(res_state statp, const u_char *buf, int buflen,
const u_char *buf2, int buflen2,
u_char *ans, int anssiz, u_char **ansp, u_char **ansp2,
- int *nansp2, int *resplen2)
+ int *nansp2, int *resplen2, int *ansp2_malloced)
{
int gotsomewhere, terrno, try, v_circuit, resplen, ns, n;
@@ -546,7 +546,8 @@
try = statp->retry;
n = send_vc(statp, buf, buflen, buf2, buflen2,
&ans, &anssiz, &terrno,
- ns, ansp, ansp2, nansp2, resplen2);
+ ns, ansp, ansp2, nansp2, resplen2,
+ ansp2_malloced);
if (n < 0)
return (-1);
if (n == 0 && (buf2 == NULL || *resplen2 == 0))
@@ -556,7 +557,7 @@
n = send_dg(statp, buf, buflen, buf2, buflen2,
&ans, &anssiz, &terrno,
ns, &v_circuit, &gotsomewhere, ansp,
- ansp2, nansp2, resplen2);
+ ansp2, nansp2, resplen2, ansp2_malloced);
if (n < 0)
return (-1);
if (n == 0 && (buf2 == NULL || *resplen2 == 0))
@@ -646,7 +647,7 @@
const u_char *buf, int buflen, u_char *ans, int anssiz)
{
return __libc_res_nsend(statp, buf, buflen, NULL, 0, ans, anssiz,
- NULL, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL);
}
libresolv_hidden_def (res_nsend)
@@ -657,7 +658,7 @@
const u_char *buf, int buflen, const u_char *buf2, int buflen2,
u_char **ansp, int *anssizp,
int *terrno, int ns, u_char **anscp, u_char **ansp2, int *anssizp2,
- int *resplen2)
+ int *resplen2, int *ansp2_malloced)
{
const HEADER *hp = (HEADER *) buf;
const HEADER *hp2 = (HEADER *) buf2;
@@ -823,6 +824,8 @@
}
*thisanssizp = MAXPACKET;
*thisansp = newp;
+ if (thisansp == ansp2)
+ *ansp2_malloced = 1;
anhp = (HEADER *) newp;
len = rlen;
} else {
@@ -992,7 +995,7 @@
const u_char *buf, int buflen, const u_char *buf2, int buflen2,
u_char **ansp, int *anssizp,
int *terrno, int ns, int *v_circuit, int *gotsomewhere, u_char **anscp,
- u_char **ansp2, int *anssizp2, int *resplen2)
+ u_char **ansp2, int *anssizp2, int *resplen2, int *ansp2_malloced)
{
const HEADER *hp = (HEADER *) buf;
const HEADER *hp2 = (HEADER *) buf2;
@@ -1238,6 +1241,8 @@
if (newp != NULL) {
*anssizp = MAXPACKET;
*thisansp = ans = newp;
+ if (thisansp == ansp2)
+ *ansp2_malloced = 1;
}
}
HEADER *anhp = (HEADER *) *thisansp;
@@ -1405,6 +1410,7 @@
retval = reopen (statp, terrno, ns);
if (retval <= 0)
return retval;
+ pfd[0].fd = EXT(statp).nssocks[ns];
}
}
goto wait;
Modified: branches/eglibc-2_19/libc/string/test-strcmp.c
==============================================================================
--- branches/eglibc-2_19/libc/string/test-strcmp.c (original)
+++ branches/eglibc-2_19/libc/string/test-strcmp.c Mon Sep 29 13:30:30 2014
@@ -329,6 +329,34 @@
FOR_EACH_IMPL (impl, 0)
check_result (impl, s1 + i1, s2 + i2, exp_result);
}
+
+ /* Test cases where there are multiple zero bytes after the first. */
+
+ for (size_t i = 0; i < 16 + 1; i++)
+ {
+ s1[i] = 0x00;
+ s2[i] = 0x00;
+ }
+
+ for (size_t i = 0; i < 16; i++)
+ {
+ int exp_result;
+
+ for (int val = 0x01; val < 0x100; val++)
+ {
+ for (size_t j = 0; j < i; j++)
+ {
+ s1[j] = val;
+ s2[j] = val;
+ }
+
+ s2[i] = val;
+
+ exp_result = SIMPLE_STRCMP (s1, s2);
+ FOR_EACH_IMPL (impl, 0)
+ check_result (impl, s1, s2, exp_result);
+ }
+ }
}
Modified: branches/eglibc-2_19/libc/sysdeps/ieee754/dbl-64/s_sin.c
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/ieee754/dbl-64/s_sin.c (original)
+++ branches/eglibc-2_19/libc/sysdeps/ieee754/dbl-64/s_sin.c Mon Sep 29 13:30:30 2014
@@ -447,19 +447,21 @@
}
else
{
+ double t;
if (a > 0)
{
m = 1;
+ t = a;
db = da;
}
else
{
m = 0;
- a = -a;
+ t = -a;
db = -da;
}
- u.x = big + a;
- y = a - (u.x - big);
+ u.x = big + t;
+ y = t - (u.x - big);
res = do_sin (u, y, db, &cor);
cor = (cor > 0) ? 1.035 * cor + eps : 1.035 * cor - eps;
retval = ((res == res + cor) ? ((m) ? res : -res)
@@ -671,19 +673,21 @@
}
else
{
+ double t;
if (a > 0)
{
m = 1;
+ t = a;
db = da;
}
else
{
m = 0;
- a = -a;
+ t = -a;
db = -da;
}
- u.x = big + a;
- y = a - (u.x - big);
+ u.x = big + t;
+ y = t - (u.x - big);
res = do_sin (u, y, db, &cor);
cor = (cor > 0) ? 1.035 * cor + eps : 1.035 * cor - eps;
retval = ((res == res + cor) ? ((m) ? res : -res)
Removed: branches/eglibc-2_19/libc/sysdeps/s390/Makefile
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/Makefile (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/Makefile (removed)
@@ -1,9 +1,0 @@
-ifeq ($(subdir),setjmp)
-ifeq (yes,$(build-shared))
-sysdep_routines += v1-longjmp v1-sigjmp
-endif
-endif
-
-ifeq ($(subdir),csu)
-gen-as-const-headers += rtld-global-offsets.sym
-endif
Modified: branches/eglibc-2_19/libc/sysdeps/s390/Versions
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/Versions (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/Versions Mon Sep 29 13:30:30 2014
@@ -1,11 +1,7 @@
libc {
GLIBC_2.19 {
- setjmp; _setjmp; __setjmp; __sigsetjmp;
+ setjmp; _setjmp; __sigsetjmp;
longjmp; _longjmp; siglongjmp;
- }
- GLIBC_PRIVATE {
- __v1__libc_longjmp; __v1__libc_siglongjmp;
- __v2__libc_longjmp; __v2__libc_siglongjmp;
}
}
Removed: branches/eglibc-2_19/libc/sysdeps/s390/__longjmp.c
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/__longjmp.c (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/__longjmp.c (removed)
@@ -1,31 +1,0 @@
-/* Copyright (C) 2013 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <libc-symbols.h>
-#include <shlib-compat.h>
-
-#define __longjmp __v2__longjmp
-#include "__longjmp-common.c"
-#undef __longjmp
-strong_alias (__v2__longjmp, __longjmp)
-
-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
-# undef __longjmp
-# define __V1_JMPBUF
-# define __longjmp __v1__longjmp
-# include "__longjmp-common.c"
-#endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
Modified: branches/eglibc-2_19/libc/sysdeps/s390/bits/setjmp.h
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/bits/setjmp.h (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/bits/setjmp.h Mon Sep 29 13:30:30 2014
@@ -40,10 +40,6 @@
/* We save fpu registers 4 and 6. */
long __fpregs[4];
# endif
-#ifndef __V1_JMPBUF
- unsigned long __flags;
- char __reserved[128];
-#endif
} __jmp_buf[1];
#endif
Modified: branches/eglibc-2_19/libc/sysdeps/s390/longjmp.c
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/longjmp.c (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/longjmp.c Mon Sep 29 13:30:30 2014
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013 Free Software Foundation, Inc.
+/* Copyright (C) 2014 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -15,50 +15,28 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>.
- Versioned copy of sysdeps/generic/longjmp.c modified for extended
- jmpbuf. */
+ Versioned copy of setjmp/longjmp.c modified for versioning
+ the reverted jmpbuf extension. */
#include <shlib-compat.h>
-#include <stddef.h>
-#include <setjmp.h>
-#include <signal.h>
-extern void __v2__longjmp (__jmp_buf __env, int __val)
- __attribute__ ((__noreturn__));
-extern void __v2__libc_longjmp (sigjmp_buf env, int val)
- __attribute__ ((__noreturn__));
-libc_hidden_proto (__v2__libc_longjmp)
+#include <setjmp/longjmp.c>
-/* Set the signal mask to the one specified in ENV, and jump
- to the position specified in ENV, causing the setjmp
- call there to return VAL, or 1 if VAL is 0. */
-void
-__v2__libc_siglongjmp (sigjmp_buf env, int val)
-{
- /* Perform any cleanups needed by the frames being unwound. */
- _longjmp_unwind (env, val);
+#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
+/* In glibc release 2.19 new versions of longjmp-functions were introduced,
+ but were reverted before 2.20. Thus both versions are the same function. */
+weak_alias (__libc_siglongjmp, __v1_longjmp)
+weak_alias (__libc_siglongjmp, __v2_longjmp)
+versioned_symbol (libc, __v1_longjmp, _longjmp, GLIBC_2_0);
+compat_symbol (libc, __v2_longjmp, _longjmp, GLIBC_2_19);
- if (env[0].__mask_was_saved)
- /* Restore the saved signal mask. */
- (void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
- (sigset_t *) NULL);
+weak_alias (__libc_siglongjmp, __v1longjmp)
+weak_alias (__libc_siglongjmp, __v2longjmp)
+versioned_symbol (libc, __v1longjmp, longjmp, GLIBC_2_0);
+compat_symbol (libc, __v2longjmp, longjmp, GLIBC_2_19);
- /* Call the machine-dependent function to restore machine state. */
- __v2__longjmp (env[0].__jmpbuf, val ?: 1);
-}
-
-#ifndef __v2__longjmp
-strong_alias (__v2__libc_siglongjmp, __v2__libc_longjmp)
-libc_hidden_def (__v2__libc_longjmp)
-weak_alias (__v2__libc_siglongjmp, __v2_longjmp)
-weak_alias (__v2__libc_siglongjmp, __v2longjmp)
-weak_alias (__v2__libc_siglongjmp, __v2siglongjmp)
-
-/* These will be used by libpthread only. */
-versioned_symbol (libc, __v2__libc_longjmp, __libc_longjmp, GLIBC_PRIVATE);
-versioned_symbol (libc, __v2__libc_siglongjmp, __libc_siglongjmp, GLIBC_PRIVATE);
-
-versioned_symbol (libc, __v2_longjmp, _longjmp, GLIBC_2_19);
-versioned_symbol (libc, __v2longjmp, longjmp, GLIBC_2_19);
-versioned_symbol (libc, __v2siglongjmp, siglongjmp, GLIBC_2_19);
-#endif /* ifndef __v2__longjmp */
+weak_alias (__libc_siglongjmp, __v1siglongjmp)
+weak_alias (__libc_siglongjmp, __v2siglongjmp)
+versioned_symbol (libc, __v1siglongjmp, siglongjmp, GLIBC_2_0);
+compat_symbol (libc, __v2siglongjmp, siglongjmp, GLIBC_2_19);
+#endif /* SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20) */
Removed: branches/eglibc-2_19/libc/sysdeps/s390/rtld-__longjmp.c
==============================================================================
--- branches/eglibc-2_19/libc/sysdeps/s390/rtld-__longjmp.c (original)
+++ branches/eglibc-2_19/libc/sysdeps/s390/rtld-__longjmp.c (removed)
@@ -1,19 +1,0 @@
-/* Copyright (C) 2013 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
[... 1862 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits