From d5ff3061a2c54ee0f30bb164d556f875daaea342 Mon Sep 17 00:00:00 2001 From: Patsy Griffin Date: Dec 16 2020 04:50:02 +0000 Subject: Auto-sync with upstream branch master Upstream commit: 4d0985543f479a6f421d4d8a9e0d1dc71c9c2c53 - elf: Record libc.so link map when it is the main program (bug 20972) - Use GMP 6.2.1 in build-many-glibcs.py. - aarch64: remove the strlen_asimd symbol - aarch64: fix static PIE start code for BTI [BZ #27068] - elf: Fix failure handling in _dl_map_object_from_fd - elf: inline lose for error handling - Remove strtoimax, strtoumax, wcstoimax, wcstoumax inlines - nsswitch: handle missing actions properly - x86: Remove the default REP MOVSB threshold tunable value [BZ #27061] - elf.h: Remove SHF_GNU_BUILD_NOTE. - elf.h: fix spelling typos in comments - Fix spelling and grammar in several comments - malloc: Detect infinite-loop in _int_free when freeing tcache [BZ#27052] - elf: Fix dl-load.c - elf: Include libc.so.6 as main program in dependency sort (bug 20972) - support: Add support_slibdir_prefix variable - aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831] - elf: Pass the fd to note processing - elf: Move note processing after l_phdr is updated - aarch64: align address for BTI protection [BZ #26988] - aarch64: Fix missing BTI protection from dependencies [BZ #26926] - Fix linknamespace errors in nss_database.c if build with -Os. - treewide: fix incorrect spelling of indices in comments - linux: Consolidate brk implementation - elf: Include in cache.c - s390x: Add glibc-hwcaps support - elf: Fix run-time dependencies of tst-dlopen-fail-2 - Handle out-of-memory case in svc_tcp.c/svc_unix.c:rendezvous_request. - elf: Fix incorrect comparison in sort_priorities_by_name - S390: Derive float_t from FLT_EVAL_METHOD - Fix parsing of /sys/devices/system/cpu/online (bug 25859) - Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases - Fixed typos in "NEWS for version 2.32" - Add NEWS entry for CVE-2020-29562 (BZ #26923) - iconv: Fix incorrect UCS4 inner loop bounds (BZ#26923) - Drop glibc-rh1906066 and glibc-rh741105 patches fixed by sync. --- diff --git a/glibc-rh1906066.patch b/glibc-rh1906066.patch deleted file mode 100644 index 902e353..0000000 --- a/glibc-rh1906066.patch +++ /dev/null @@ -1,59 +0,0 @@ -From d74a39158ab4aafa8af874e996bf5ddbde593bc0 Mon Sep 17 00:00:00 2001 -From: DJ Delorie -Date: Wed, 9 Dec 2020 21:46:30 -0500 -Subject: nsswitch: handle missing actions properly - -Some internal functions need to know if a database has a nonzero -list of actions; success getting the database does not guarantee -that. Add checks for such as needed. - -Skip the ":" in each nsswitch.conf line so as not to add a dummy -action libnss_:.so - -diff --git a/grp/initgroups.c b/grp/initgroups.c -index a60ca1c395..a0a836d862 100644 ---- a/grp/initgroups.c -+++ b/grp/initgroups.c -@@ -72,11 +72,13 @@ internal_getgrouplist (const char *user, gid_t group, long int *size, - - nss_action_list nip; - -- if (__nss_database_get (nss_database_initgroups, &nip)) -+ if (__nss_database_get (nss_database_initgroups, &nip) -+ && nip != NULL) - { - use_initgroups_entry = true; - } -- else if (__nss_database_get (nss_database_group, &nip)) -+ else if (__nss_database_get (nss_database_group, &nip) -+ && nip != NULL) - { - use_initgroups_entry = false; - } -diff --git a/nss/nss_database.c b/nss/nss_database.c -index e8c307d1f3..a036e95fbf 100644 ---- a/nss/nss_database.c -+++ b/nss/nss_database.c -@@ -212,7 +212,8 @@ process_line (struct nss_database_data *data, char *line) - if (line[0] == '\0' || name == line) - /* Syntax error. Skip this line. */ - return true; -- *line++ = '\0'; -+ while (line[0] != '\0' && (isspace (line[0]) || line[0] == ':')) -+ *line++ = '\0'; - - int db = name_to_database_index (name); - if (db < 0) -diff --git a/nss/nsswitch.c b/nss/nsswitch.c -index 40109c744d..921062e04f 100644 ---- a/nss/nsswitch.c -+++ b/nss/nsswitch.c -@@ -81,7 +81,7 @@ __nss_database_lookup2 (const char *database, const char *alternate_name, - if (database_names[database_id] == NULL) - return -1; - -- if (__nss_database_get (database_id, ni)) -+ if (__nss_database_get (database_id, ni) && *ni) - { - /* Success. */ - return 0; diff --git a/glibc-rh741105.patch b/glibc-rh741105.patch deleted file mode 100644 index 7637e08..0000000 --- a/glibc-rh741105.patch +++ /dev/null @@ -1,111 +0,0 @@ -Short description: Work ld.so --verify crash on debuginfo files. -Author(s): Fedora glibc team -Origin: PATCH -Bug-RHEL: #741105, #767146 -Upstream status: not-needed - -This change is designed to work around running ld.so on a debuginfo -file. This is the wrong fix for this problem and should be dropped. -The correct solution is to mark debuginfo files as new types of -ELF files. - - -diff --git a/elf/dl-load.c b/elf/dl-load.c -index 646c5dca40efcc9b..1f44ea3744f139f3 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c -@@ -952,6 +952,18 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd, - in this information for the executable in case of an explicit - loader invocation. */ - struct r_file_id id; -+ struct stat64 st; -+ -+ if (__glibc_unlikely (!_dl_get_file_id (fd, &id, &st))) -+ { -+ errstring = N_("cannot stat shared object"); -+ call_lose_errno: -+ errval = errno; -+ call_lose: -+ lose (errval, fd, name, realname, l, errstring, -+ make_consistent ? r : NULL, nsid); -+ } -+ - if (mode & __RTLD_OPENEXEC) - { - assert (nsid == LM_ID_BASE); -@@ -959,16 +971,6 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd, - } - else - { -- if (__glibc_unlikely (!_dl_get_file_id (fd, &id))) -- { -- errstring = N_("cannot stat shared object"); -- call_lose_errno: -- errval = errno; -- call_lose: -- lose (errval, fd, name, realname, l, errstring, -- make_consistent ? r : NULL, nsid); -- } -- - /* Look again to see if the real name matched another already loaded. */ - for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next) - if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id)) -@@ -1147,6 +1149,16 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd, - = N_("ELF load command address/offset not properly aligned"); - goto call_lose; - } -+ if (__glibc_unlikely (ph->p_offset + ph->p_filesz > st.st_size)) -+ { -+ /* If the segment requires zeroing of part of its last -+ page, we'll crash when accessing the unmapped page. -+ There's still a possibility of a race, if the shared -+ object is truncated between the fxstat above and the -+ memset below. */ -+ errstring = N_("ELF load command past end of file"); -+ goto call_lose; -+ } - - struct loadcmd *c = &loadcmds[nloadcmds++]; - c->mapstart = ALIGN_DOWN (ph->p_vaddr, GLRO(dl_pagesize)); -diff --git a/sysdeps/generic/dl-fileid.h b/sysdeps/generic/dl-fileid.h -index 459328d28c62c8e1..5070580b1b0cc629 100644 ---- a/sysdeps/generic/dl-fileid.h -+++ b/sysdeps/generic/dl-fileid.h -@@ -29,7 +29,8 @@ struct r_file_id - On error, returns false, with errno set. */ - static inline bool - _dl_get_file_id (int fd __attribute__ ((unused)), -- struct r_file_id *id __attribute__ ((unused))) -+ struct r_file_id *id __attribute__ ((unused)), -+ struct stat64_t *st __attribute__((unused))) - { - return true; - } -diff --git a/sysdeps/posix/dl-fileid.h b/sysdeps/posix/dl-fileid.h -index b3c8166701650b8b..cd862f511e6e3e94 100644 ---- a/sysdeps/posix/dl-fileid.h -+++ b/sysdeps/posix/dl-fileid.h -@@ -27,18 +27,16 @@ struct r_file_id - ino64_t ino; - }; - --/* Sample FD to fill in *ID. Returns true on success. -+/* Sample FD to fill in *ID and *ST. Returns true on success. - On error, returns false, with errno set. */ - static inline bool --_dl_get_file_id (int fd, struct r_file_id *id) -+_dl_get_file_id (int fd, struct r_file_id *id, struct stat64 *st) - { -- struct stat64 st; -- -- if (__glibc_unlikely (__fstat64 (fd, &st) < 0)) -+ if (__glibc_unlikely (__fstat64 (fd, st) < 0)) - return false; - -- id->dev = st.st_dev; -- id->ino = st.st_ino; -+ id->dev = st->st_dev; -+ id->ino = st->st_ino; - return true; - } - diff --git a/glibc.spec b/glibc.spec index af60777..d72e5e7 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,4 +1,4 @@ -%define glibcsrcdir glibc-2.32.9000-374-g088e962537 +%define glibcsrcdir glibc-2.32.9000-409-g4d0985543f %define glibcversion 2.32.9000 # Pre-release tarballs are pulled in from git using a command that is # effectively: @@ -96,7 +96,7 @@ Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} -Release: 21%{?dist} +Release: 22%{?dist} # In general, GPLv2+ is used by programs, LGPLv2+ is used for # libraries. @@ -142,7 +142,6 @@ Source12: ChangeLog.old Patch1: glibc-fedora-nscd.patch Patch3: glibc-rh697421.patch Patch4: glibc-fedora-linux-tcsetattr.patch -Patch5: glibc-rh741105.patch Patch6: glibc-fedora-localedef.patch Patch8: glibc-fedora-manual-dircategory.patch Patch9: glibc-rh827510.patch @@ -158,9 +157,6 @@ Patch29: glibc-fedora-nsswitch.patch Patch30: glibc-deprecated-selinux-makedb.patch Patch31: glibc-deprecated-selinux-nscd.patch -# Temporary until official patch is committed upstream -Patch99: glibc-rh1906066.patch - ############################################################################## # Continued list of core "glibc" package information: ############################################################################## @@ -2257,6 +2253,46 @@ fi %files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared %changelog +* Tue Dec 15 2020 Patsy Griffin - 2.32.9000-22 +- Auto-sync with upstream branch master, + commit 4d0985543f479a6f421d4d8a9e0d1dc71c9c2c53. +- elf: Record libc.so link map when it is the main program (bug 20972) +- Use GMP 6.2.1 in build-many-glibcs.py. +- aarch64: remove the strlen_asimd symbol +- aarch64: fix static PIE start code for BTI [BZ #27068] +- elf: Fix failure handling in _dl_map_object_from_fd +- elf: inline lose for error handling +- Remove strtoimax, strtoumax, wcstoimax, wcstoumax inlines +- nsswitch: handle missing actions properly +- x86: Remove the default REP MOVSB threshold tunable value [BZ #27061] +- elf.h: Remove SHF_GNU_BUILD_NOTE. +- elf.h: fix spelling typos in comments +- Fix spelling and grammar in several comments +- malloc: Detect infinite-loop in _int_free when freeing tcache [BZ#27052] +- elf: Fix dl-load.c +- elf: Include libc.so.6 as main program in dependency sort (bug 20972) +- support: Add support_slibdir_prefix variable +- aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831] +- elf: Pass the fd to note processing +- elf: Move note processing after l_phdr is updated +- aarch64: align address for BTI protection [BZ #26988] +- aarch64: Fix missing BTI protection from dependencies [BZ #26926] +- Fix linknamespace errors in nss_database.c if build with -Os. +- treewide: fix incorrect spelling of indices in comments +- linux: Consolidate brk implementation +- elf: Include in cache.c +- s390x: Add glibc-hwcaps support +- elf: Fix run-time dependencies of tst-dlopen-fail-2 +- Handle out-of-memory case in svc_tcp.c/svc_unix.c:rendezvous_request. +- elf: Fix incorrect comparison in sort_priorities_by_name +- S390: Derive float_t from FLT_EVAL_METHOD +- Fix parsing of /sys/devices/system/cpu/online (bug 25859) +- Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases +- Fixed typos in "NEWS for version 2.32" +- Add NEWS entry for CVE-2020-29562 (BZ #26923) +- iconv: Fix incorrect UCS4 inner loop bounds (BZ#26923) +- Drop glibc-rh1906066 and glibc-rh741105 patches fixed by sync. + * Mon Dec 14 2020 Florian Weimer - 2.32.9000-21 - Re-enable -Werror everywhere (#1888246) diff --git a/sources b/sources index 1dd85ba..c99ca59 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (glibc-2.32.9000-374-g088e962537.tar.xz) = e621b9a2e28491a1823f13541dc2d17ad812e6c8a12ae1b128dce0697280b8eb0571a06570b9e05ea1004d20d639f0193dfe425974bffccb9ff83bc14fd7c629 +SHA512 (glibc-2.32.9000-409-g4d0985543f.tar.xz) = 5665bba5c9105a9799ba815ddcbce9bbd6c9b7789f4069821b4db0537456ac6754ff5d728e70ec8f94a51514fbfb77889f27ecfe72f5b0854230d5a03f883950