sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[[SM-Commit] ] GIT changes to master grimoire by Thomas Orgis (991922203dde6af709a4bf7b96bab4cdef6947ac)
- From: Thomas Orgis <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org, sm-commit AT lists.sourcemage.org
- Subject: [[SM-Commit] ] GIT changes to master grimoire by Thomas Orgis (991922203dde6af709a4bf7b96bab4cdef6947ac)
- Date: Tue, 11 Mar 2025 13:43:31 +0000
GIT changes to master grimoire by Thomas Orgis <sobukus AT sourcemage.org>:
libs/glibc/DETAILS | 1
libs/glibc/HISTORY | 5
libs/glibc/patches/0002-glibc-2.41-getenv-override.patch | 117
+++++++++++++++
3 files changed, 123 insertions(+)
New commits:
commit 991922203dde6af709a4bf7b96bab4cdef6947ac
Author: Thomas Orgis <sobukus AT sourcemage.org>
Commit: Thomas Orgis <sobukus AT sourcemage.org>
glibc: patch to fix bash build
Bash wants to override getenv in static build. Glibc 2.41 broke that.
2.42 supposedly fixes that, with the patch I added here.
diff --git a/libs/glibc/DETAILS b/libs/glibc/DETAILS
index 8db5055..8e40b9f 100755
--- a/libs/glibc/DETAILS
+++ b/libs/glibc/DETAILS
@@ -11,6 +11,7 @@ SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-git"
SOURCE_IGNORE=volatile
else
VERSION=2.41
+ PATCHLEVEL=1
SOURCE_HASH="sha512:894a3e5a796bc13df30c26a5bfbe4d60b5dbdaac54e7763432235124b547070c7dda88c50584536870cab79183d8cad73a3ac6ed09bfe54fa8482aad07253169"
SECURITY_PATCH=25
SOURCE=$SPELL-$VERSION.tar.xz
diff --git a/libs/glibc/HISTORY b/libs/glibc/HISTORY
index a8660e2..b6395f3 100644
--- a/libs/glibc/HISTORY
+++ b/libs/glibc/HISTORY
@@ -1,3 +1,8 @@
+2025-03-11 Thomas Orgis <sobukus AT sourcemage.org>
+ * patches/0002-glibc-2.41-getenv-override.patch: fix bash build,
broken
+ by recent update
+ * DETAILS: ++PATCHLEVEL
+
2025-01-29 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 2.41, SECURITY_PATCH++, (CVE-2025-039),
HEADERS_VERSION=6.13.0, quoting++, switched to hashsum checking
where
diff --git a/libs/glibc/patches/0002-glibc-2.41-getenv-override.patch
b/libs/glibc/patches/0002-glibc-2.41-getenv-override.patch
new file mode 100644
index 0000000..adf6cec
--- /dev/null
+++ b/libs/glibc/patches/0002-glibc-2.41-getenv-override.patch
@@ -0,0 +1,117 @@
+From: Florian Weimer <fweimer AT redhat.com>
+To: libc-alpha AT sourceware.org
+Subject: [PATCH] posix: Move environ helper variables next to environ
definition (bug 32541)
+Date: Fri, 07 Mar 2025 17:32:41 +0100 [thread overview]
+Message-ID: <871pv84x92.fsf AT oldenburg.str.redhat.com> (raw)
+
+This helps with statically interposing getenv.
+
+Updates commit 7a61e7f557a97ab597d6fca5e2d1f13f65685c61
+("stdlib: Make getenv thread-safe in more cases").
+
+---
+ posix/environ.c | 4 ++++
+ stdlib/Makefile | 2 ++
+ stdlib/getenv.c | 3 ---
+ stdlib/tst-getenv-static.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 44 insertions(+), 3 deletions(-)
+
+diff --git a/posix/environ.c b/posix/environ.c
+index a0ed0d80ea..924effe3cd 100644
+--- a/posix/environ.c
++++ b/posix/environ.c
+@@ -2,6 +2,7 @@
+
+ #include <unistd.h>
+ #include <stddef.h>
++#include <stdlib/setenv.h>
+
+ /* This must be initialized; we cannot have a weak alias into bss. */
+ char **__environ = NULL;
+@@ -10,3 +11,6 @@ weak_alias (__environ, environ)
+ /* The SVR4 ABI says `_environ' will be the name to use
+ in case the user overrides the weak alias `environ'. */
+ weak_alias (__environ, _environ)
++
++struct environ_array *__environ_array_list;
++environ_counter __environ_counter;
+diff --git a/stdlib/Makefile b/stdlib/Makefile
+index 1c4fa2382f..c9c8f702a2 100644
+--- a/stdlib/Makefile
++++ b/stdlib/Makefile
+@@ -282,6 +282,7 @@ tests := \
+ tst-environ-change-3 \
+ tst-environ-change-4 \
+ tst-getenv-signal \
++ tst-getenv-static \
+ tst-getenv-thread \
+ tst-getenv-unsetenv \
+ tst-getrandom \
+@@ -377,6 +378,7 @@ tests-internal := \
+ # tests-internal
+
+ tests-static := \
++ tst-getenv-static \
+ tst-secure-getenv \
+ # tests-static
+
+diff --git a/stdlib/getenv.c b/stdlib/getenv.c
+index 5e7212cca6..1a7b0bfc06 100644
+--- a/stdlib/getenv.c
++++ b/stdlib/getenv.c
+@@ -20,9 +20,6 @@
+ #include <string.h>
+ #include <unistd.h>
+
+-struct environ_array *__environ_array_list;
+-environ_counter __environ_counter;
+-
+ char *
+ getenv (const char *name)
+ {
+diff --git a/stdlib/tst-getenv-static.c b/stdlib/tst-getenv-static.c
+new file mode 100644
+index 0000000000..f5f484c83a
+--- /dev/null
++++ b/stdlib/tst-getenv-static.c
+@@ -0,0 +1,38 @@
++/* Static interposition of getenv (bug 32541).
++ 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
++ <https://www.gnu.org/licenses/>. */
++
++#include <stdlib.h>
++#include <support/check.h>
++
++/* Some programs try to interpose getenv for their own use (not
++ glibc's internal use). Make sure that this is possible without
++ introducing linker failures due to duplicate symbols. */
++
++char *
++getenv (const char *ignored)
++{
++ return NULL;
++}
++
++static int
++do_test (void)
++{
++ TEST_COMPARE_STRING (getenv ("PATH"), NULL);
++ return 0;
++}
++
++#include <support/test-driver.c>
+
+base-commit: 59dc232df277c21239c357e3519682c26e182cd7
- [[SM-Commit] ] GIT changes to master grimoire by Thomas Orgis (991922203dde6af709a4bf7b96bab4cdef6947ac), Thomas Orgis, 03/11/2025
Archive powered by MHonArc 2.6.24.