72 lines
2.1 KiB
Diff
72 lines
2.1 KiB
Diff
From 5451fa962cd0a90a0e2ec1d8910a559ace02bba0 Mon Sep 17 00:00:00 2001
|
|
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
|
Date: Mon, 6 Nov 2023 17:25:49 -0300
|
|
Subject: [PATCH] elf: Ignore LD_LIBRARY_PATH and debug env var for setuid for
|
|
static
|
|
|
|
It mimics the ld.so behavior.
|
|
|
|
Checked on x86_64-linux-gnu.
|
|
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
|
|
---
|
|
elf/dl-support.c | 32 ++++++++++++++++----------------
|
|
1 file changed, 16 insertions(+), 16 deletions(-)
|
|
|
|
Index: glibc-2.38/elf/dl-support.c
|
|
===================================================================
|
|
--- glibc-2.38.orig/elf/dl-support.c
|
|
+++ glibc-2.38/elf/dl-support.c
|
|
@@ -276,8 +276,6 @@ _dl_non_dynamic_init (void)
|
|
_dl_main_map.l_phdr = GL(dl_phdr);
|
|
_dl_main_map.l_phnum = GL(dl_phnum);
|
|
|
|
- _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1;
|
|
-
|
|
/* Set up the data structures for the system-supplied DSO early,
|
|
so they can influence _dl_init_paths. */
|
|
setup_vdso (NULL, NULL);
|
|
@@ -285,6 +283,22 @@ _dl_non_dynamic_init (void)
|
|
/* With vDSO setup we can initialize the function pointers. */
|
|
setup_vdso_pointers ();
|
|
|
|
+ if (__libc_enable_secure)
|
|
+ {
|
|
+ static const char unsecure_envvars[] =
|
|
+ UNSECURE_ENVVARS
|
|
+ ;
|
|
+ const char *cp = unsecure_envvars;
|
|
+
|
|
+ while (cp < unsecure_envvars + sizeof (unsecure_envvars))
|
|
+ {
|
|
+ __unsetenv (cp);
|
|
+ cp = strchr (cp, '\0') + 1;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1;
|
|
+
|
|
/* Initialize the data structures for the search paths for shared
|
|
objects. */
|
|
_dl_init_paths (getenv ("LD_LIBRARY_PATH"), "LD_LIBRARY_PATH",
|
|
@@ -306,20 +320,6 @@ _dl_non_dynamic_init (void)
|
|
_dl_profile_output
|
|
= &"/var/tmp\0/var/profile"[__libc_enable_secure ? 9 : 0];
|
|
|
|
- if (__libc_enable_secure)
|
|
- {
|
|
- static const char unsecure_envvars[] =
|
|
- UNSECURE_ENVVARS
|
|
- ;
|
|
- const char *cp = unsecure_envvars;
|
|
-
|
|
- while (cp < unsecure_envvars + sizeof (unsecure_envvars))
|
|
- {
|
|
- __unsetenv (cp);
|
|
- cp = strchr (cp, '\0') + 1;
|
|
- }
|
|
- }
|
|
-
|
|
#ifdef DL_PLATFORM_INIT
|
|
DL_PLATFORM_INIT;
|
|
#endif
|