Sync from SUSE:SLFO:Main glibc revision e047c8446074aefab836e019a5f41fc1
This commit is contained in:
parent
212e12e8ba
commit
087bf6cd2e
@ -1,8 +1,33 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 18 08:31:37 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- s390x-wcsncmp.patch: s390x: Fix segfault in wcsncmp (bsc#1228041, BZ
|
||||||
|
#31934)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 29 10:41:20 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- Fix typo in last change
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu May 23 11:31:34 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- Also include stat64 in the 32-bit libc_nonshared.a workaround
|
||||||
|
(bsc#1221482)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 8 14:06:39 UTC 2024 - Giuliano Belinassi <giuliano.belinassi@suse.com>
|
||||||
|
|
||||||
|
- ulp-prologue-into-asm-functions.patch: Avoid creating ULP prologue
|
||||||
|
for _start routine (bsc#1221940)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 7 10:32:54 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
Tue May 7 10:32:54 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
- nscd-netgroup-cache-timeout.patch: Use time_t for return type of
|
- nscd-netgroup-cache-timeout.patch: Use time_t for return type of
|
||||||
addgetnetgrentX (CVE-2024-33602, bsc#1223425)
|
addgetnetgrentX (CVE-2024-33602, bsc#1223425)
|
||||||
|
- Also add libc_nonshared.a workaround to 32-bit x86 compat package
|
||||||
|
(bsc#1221482)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed May 1 23:50:51 UTC 2024 - Giuliano Belinassi <giuliano.belinassi@suse.com>
|
Wed May 1 23:50:51 UTC 2024 - Giuliano Belinassi <giuliano.belinassi@suse.com>
|
||||||
@ -26,6 +51,12 @@ Thu Apr 18 08:22:48 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
|||||||
- iconv-iso-2022-cn-ext.patch: iconv: ISO-2022-CN-EXT: fix out-of-bound
|
- iconv-iso-2022-cn-ext.patch: iconv: ISO-2022-CN-EXT: fix out-of-bound
|
||||||
writes when writing escape sequence (CVE-2024-2961, bsc#1222992)
|
writes when writing escape sequence (CVE-2024-2961, bsc#1222992)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 3 15:54:02 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- Add workaround for invalid use of libc_nonshared.a with non-SUSE libc
|
||||||
|
(bsc#1221482)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 21 13:22:51 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
Thu Mar 21 13:22:51 UTC 2024 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
45
glibc.spec
45
glibc.spec
@ -359,6 +359,8 @@ Patch1030: glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch
|
|||||||
Patch1031: glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch
|
Patch1031: glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch
|
||||||
# PATCH-FIX-UPSTREAM nscd: Use time_t for return type of addgetnetgrentX (CVE-2024-33602)
|
# PATCH-FIX-UPSTREAM nscd: Use time_t for return type of addgetnetgrentX (CVE-2024-33602)
|
||||||
Patch1032: nscd-netgroup-cache-timeout.patch
|
Patch1032: nscd-netgroup-cache-timeout.patch
|
||||||
|
# PATCH-FIX-UPSTREAM s390x: Fix segfault in wcsncmp (BZ #31934)
|
||||||
|
Patch1033: s390x-wcsncmp.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
# Patches awaiting upstream approval
|
# Patches awaiting upstream approval
|
||||||
@ -767,40 +769,31 @@ echo 'CFLAGS-.os += -fdump-ipa-clones' \
|
|||||||
|
|
||||||
make %{?_smp_mflags} %{?make_output_sync}
|
make %{?_smp_mflags} %{?make_output_sync}
|
||||||
|
|
||||||
%ifarch x86_64
|
|
||||||
%if %{build_main} && 0%{?sle_version}
|
%if %{build_main} && 0%{?sle_version}
|
||||||
|
%ifarch x86_64 i686
|
||||||
# Horrible workaround for bsc#1221482
|
# Horrible workaround for bsc#1221482
|
||||||
gcc -O2 -xc - -c -o stat.oS <<\EOF
|
xstatbuild ()
|
||||||
#define _STAT_VER 1
|
{
|
||||||
int __xstat (int, const char *, void *);
|
gcc -O2 -I ../sysdeps/unix/sysv/linux/x86 -xc - -c -o $1stat$2.oS <<EOF
|
||||||
|
#include <xstatver.h>
|
||||||
|
int __$1xstat$2 (int, $3, void *);
|
||||||
|
|
||||||
int
|
int
|
||||||
stat (const char *file, void *buf)
|
$1stat$2 ($3 file, void *buf)
|
||||||
{
|
{
|
||||||
return __xstat (_STAT_VER, file, buf);
|
return __$1xstat$2 (_STAT_VER, file, buf);
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
gcc -O2 -xc - -c -o fstat.oS <<\EOF
|
ar r libc_nonshared.a $1stat$2.oS
|
||||||
#define _STAT_VER 1
|
|
||||||
int __fxstat (int, int, void *);
|
|
||||||
|
|
||||||
int
|
|
||||||
fstat (int fd, void *buf)
|
|
||||||
{
|
|
||||||
return __fxstat (_STAT_VER, fd, buf);
|
|
||||||
}
|
}
|
||||||
EOF
|
xstatbuild "" "" "const char *"
|
||||||
gcc -O2 -xc - -c -o lstat.oS <<\EOF
|
xstatbuild f "" int
|
||||||
#define _STAT_VER 1
|
xstatbuild l "" "const char *"
|
||||||
int __lxstat (int, const char *, void *);
|
%ifarch i686
|
||||||
|
xstatbuild "" 64 "const char *"
|
||||||
int
|
xstatbuild f 64 int
|
||||||
lstat (const char *file, void *buf)
|
xstatbuild l 64 "const char *"
|
||||||
{
|
%endif
|
||||||
return __lxstat (_STAT_VER, file, buf);
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
ar r libc_nonshared.a stat.oS fstat.oS lstat.oS
|
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
58
s390x-wcsncmp.patch
Normal file
58
s390x-wcsncmp.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
From 712453634c8efd71a9b3ff0122145a9e90e9955c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Liebler <stli@linux.ibm.com>
|
||||||
|
Date: Thu, 11 Jul 2024 11:28:53 +0200
|
||||||
|
Subject: [PATCH] s390x: Fix segfault in wcsncmp [BZ #31934]
|
||||||
|
|
||||||
|
The z13/vector-optimized wcsncmp implementation segfaults if n=1
|
||||||
|
and there is only one character (equal on both strings) before
|
||||||
|
the page end. Then it loads and compares one character and misses
|
||||||
|
to check n again. The following load fails.
|
||||||
|
|
||||||
|
This patch removes the extra load and compare of the first character
|
||||||
|
and just start with the loop which uses vector-load-to-block-boundary.
|
||||||
|
This code-path also checks n.
|
||||||
|
|
||||||
|
With this patch both tests are passing:
|
||||||
|
- the simplified one mentioned in the bugzilla 31934
|
||||||
|
- the full one in Florian Weimer's patch:
|
||||||
|
"manual: Document a GNU extension for strncmp/wcsncmp"
|
||||||
|
(https://patchwork.sourceware.org/project/glibc/patch/874j9eml6y.fsf@oldenburg.str.redhat.com/):
|
||||||
|
On s390x-linux-gnu (z16), the new wcsncmp test fails due to bug 31934.
|
||||||
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||||
|
|
||||||
|
(cherry picked from commit 9b7651410375ec8848a1944992d663d514db4ba7)
|
||||||
|
---
|
||||||
|
sysdeps/s390/wcsncmp-vx.S | 10 +---------
|
||||||
|
1 file changed, 1 insertion(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sysdeps/s390/wcsncmp-vx.S b/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
index 1bf769b870..4028d1e624 100644
|
||||||
|
--- a/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
+++ b/sysdeps/s390/wcsncmp-vx.S
|
||||||
|
@@ -59,14 +59,7 @@ ENTRY(WCSNCMP_Z13)
|
||||||
|
sllg %r4,%r4,2 /* Convert character-count to byte-count. */
|
||||||
|
locgrne %r4,%r1 /* Use max byte-count, if bit 0/1 was one. */
|
||||||
|
|
||||||
|
- /* Check first character without vector load. */
|
||||||
|
- lghi %r5,4 /* current_len = 4 bytes. */
|
||||||
|
- /* Check s1/2[0]. */
|
||||||
|
- lt %r0,0(%r2)
|
||||||
|
- l %r1,0(%r3)
|
||||||
|
- je .Lend_cmp_one_char
|
||||||
|
- crjne %r0,%r1,.Lend_cmp_one_char
|
||||||
|
-
|
||||||
|
+ lghi %r5,0 /* current_len = 0 bytes. */
|
||||||
|
.Lloop:
|
||||||
|
vlbb %v17,0(%r5,%r3),6 /* Load s2 to block boundary. */
|
||||||
|
vlbb %v16,0(%r5,%r2),6 /* Load s1 to block boundary. */
|
||||||
|
@@ -167,7 +160,6 @@ ENTRY(WCSNCMP_Z13)
|
||||||
|
srl %r4,2 /* And convert it to character-index. */
|
||||||
|
vlgvf %r0,%v16,0(%r4) /* Load character-values. */
|
||||||
|
vlgvf %r1,%v17,0(%r4)
|
||||||
|
-.Lend_cmp_one_char:
|
||||||
|
cr %r0,%r1
|
||||||
|
je .Lend_equal
|
||||||
|
lghi %r2,1
|
||||||
|
--
|
||||||
|
2.45.2
|
||||||
|
|
@ -153,19 +153,19 @@ index 0b3483a77a..329c16306e 100644
|
|||||||
|
|
||||||
+/* For 32-bit glibc then define those macros as empty. */
|
+/* For 32-bit glibc then define those macros as empty. */
|
||||||
+#ifndef ULP_PRE_PROLOGUE
|
+#ifndef ULP_PRE_PROLOGUE
|
||||||
+# define ULP_PRE_PROLOGUE
|
+# define ULP_PRE_PROLOGUE(name)
|
||||||
+#endif
|
+#endif
|
||||||
+#ifndef ULP_POST_PROLOGUE
|
+#ifndef ULP_POST_PROLOGUE
|
||||||
+# define ULP_POST_PROLOGUE
|
+# define ULP_POST_PROLOGUE(name)
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+/* Define the first instructions of a function. */
|
+/* Define the first instructions of a function. */
|
||||||
+#define FUNCTION_START(name) \
|
+#define FUNCTION_START(name) \
|
||||||
+ ULP_PRE_PROLOGUE; \
|
+ ULP_PRE_PROLOGUE(name); \
|
||||||
+ C_LABEL(name); \
|
+ C_LABEL(name); \
|
||||||
+ cfi_startproc; \
|
+ cfi_startproc; \
|
||||||
+ _CET_ENDBR; \
|
+ _CET_ENDBR; \
|
||||||
+ ULP_POST_PROLOGUE; \
|
+ ULP_POST_PROLOGUE(name); \
|
||||||
+ CALL_MCOUNT;
|
+ CALL_MCOUNT;
|
||||||
+
|
+
|
||||||
/* Define an entry point visible from C. */
|
/* Define an entry point visible from C. */
|
||||||
@ -230,10 +230,10 @@ index cbb22884eb..327377daa6 100644
|
|||||||
/*
|
/*
|
||||||
* This implementation uses SSE to compare up to 16 bytes at a time.
|
* This implementation uses SSE to compare up to 16 bytes at a time.
|
||||||
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h
|
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h
|
||||||
index 6ca169573d..c18f0ef914 100644
|
index c8ad778fee..59c278eb58 100644
|
||||||
--- a/sysdeps/x86_64/sysdep.h
|
--- a/sysdeps/x86_64/sysdep.h
|
||||||
+++ b/sysdeps/x86_64/sysdep.h
|
+++ b/sysdeps/x86_64/sysdep.h
|
||||||
@@ -24,6 +24,19 @@
|
@@ -23,6 +23,46 @@
|
||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
@ -242,12 +242,39 @@ index 6ca169573d..c18f0ef914 100644
|
|||||||
+ written in ASM, the way we do this is by adding this prologue manually. */
|
+ written in ASM, the way we do this is by adding this prologue manually. */
|
||||||
+
|
+
|
||||||
+#if ENABLE_USERSPACE_LIVEPATCH
|
+#if ENABLE_USERSPACE_LIVEPATCH
|
||||||
+# undef ULP_PRE_PROLOGUE
|
+
|
||||||
+# undef ULP_POST_PROLOGUE
|
+/* Instructions to be inserted before the function label. */
|
||||||
+# define ULP_PRE_PROLOGUE \
|
+# define ULP_NOPS_PRE_PROLOGUE .rept 14; nop; .endr
|
||||||
+ .rept 14; nop; .endr
|
+
|
||||||
+# define ULP_POST_PROLOGUE \
|
+/* Instruction to be inserted after the function label. */
|
||||||
+ xchg %ax, %ax
|
+# define ULP_NOPS_POST_PROLOGUE .rept 2; nop; .endr
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/* this macro expands according to the following condition:
|
||||||
|
+ * if name = _start, then the prologue is not inserted.
|
||||||
|
+ * if name = _dl_relocate_static_pie, then the prologue is not inserted.
|
||||||
|
+ * if name = anything else, then the prologue is inserted.
|
||||||
|
+ **/
|
||||||
|
+# define __ULP_POST_PROLOGUE_dl_relocate_static_pie ,
|
||||||
|
+# define __ULP_PRE_PROLOGUE_start ,
|
||||||
|
+# define __ULP_PRE_PROLOGUE(x, y,...) y
|
||||||
|
+# define _ULP_PRE_PROLOGUE(x, ...) __ULP_PRE_PROLOGUE(x, __VA_ARGS__)
|
||||||
|
+# define ULP_PRE_PROLOGUE(name) _ULP_PRE_PROLOGUE(__ULP_PRE_PROLOGUE##name, ULP_NOPS_PRE_PROLOGUE,)
|
||||||
|
+
|
||||||
|
+/* this macro expands according to the following condition:
|
||||||
|
+ * if name = _start, then the postlogue is not inserted.
|
||||||
|
+ * if name = _dl_relocate_static_pie, then the postlogue is not inserted.
|
||||||
|
+ * if name = anything else, then the postlogue is inserted.
|
||||||
|
+ **/
|
||||||
|
+# define __ULP_POST_PROLOGUE_dl_relocate_static_pie ,
|
||||||
|
+# define __ULP_POST_PROLOGUE_start ,
|
||||||
|
+# define __ULP_POST_PROLOGUE(x, y,...) y
|
||||||
|
+# define _ULP_POST_PROLOGUE(x, ...) __ULP_POST_PROLOGUE(x, __VA_ARGS__)
|
||||||
|
+# define ULP_POST_PROLOGUE(name) _ULP_POST_PROLOGUE(__ULP_POST_PROLOGUE##name, ULP_NOPS_POST_PROLOGUE,)
|
||||||
|
+
|
||||||
|
+#else
|
||||||
|
+# define ULP_PRE_PROLOGUE(name)
|
||||||
|
+# define ULP_POST_PROLOGUE(name)
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
/* Syntactic details of assembler. */
|
/* Syntactic details of assembler. */
|
||||||
|
Loading…
Reference in New Issue
Block a user