From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3nfhdYgcKCiAI6OGN6UCKKCHA.8KIHE78-6HLD6OKQN8AS6NA.KNC@flex--maskray.bounces.google.com> Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by sourceware.org (Postfix) with ESMTPS id 8BDFB3858D1E for ; Mon, 18 Apr 2022 23:47:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8BDFB3858D1E Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2ec06f77db8so131958057b3.8 for ; Mon, 18 Apr 2022 16:47:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=n7NZXBnHB8k+q4gxBS2KZzsz1d6foChutkS5SZQwPNg=; b=nZOFfuYVzfpXvRRNLggzfEQnbN5rj4W5tEX5CITYwxHmMWlnVLm8xPDHbmBLkyssoi ZtexHCCaonwPPs9nUxKqJBhaERfuPZKGHwulafnXbDeuKC7vcUdlUiOOTMlU13oU/s85 7hlicJCTiLlDZU5jJ9Cj/A//C8oGyNhQ6jbAGyUCsvaeNkFP+1AjzNrP+Mb8czfIkK0V eVUC7uNFun+9HeKAW3/tpamSP3nLTyLeMKN/XXNC5nh0SmFpp8s2fLE1HRlGVJ9rMTdp ctkkk++Mt9ZCuZ3cZQigMTKGQZ3vDDksNxc8vphYslNhYYhqeo3TGqOSFtChG5+R4OCu H6XQ== X-Gm-Message-State: AOAM531bypYl87vsPHh9cWYnF2gzBGUVn0nrwtC/ZX7niOhEo9Eq82qu 76oIDAJMJVPsCyPCvJ7ab1Y+Hg2uXG0VVaV3l6hRndVm44WRGloegujUgzhaM91NlslciNA8wjV ojslQ64eATcFVeb/CAmY84OHxzUfQjahO+sO9uOru1ws11SoZSCjJzzdeSTnZLWENBqRv X-Google-Smtp-Source: ABdhPJzvpw6LotD/tmHteCtTMqY7lkLA08Wp9sRejwMIDlXkjfXI7XJKD9rYP0ED6aVtNfWG0EIdTRXkoE3S X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:f2c5:60f5:e38f:e90b]) (user=maskray job=sendgmr) by 2002:a25:305:0:b0:645:3cc9:bd7a with SMTP id 5-20020a250305000000b006453cc9bd7amr173763ybd.11.1650325661916; Mon, 18 Apr 2022 16:47:41 -0700 (PDT) Date: Mon, 18 Apr 2022 16:47:38 -0700 Message-Id: <20220418234738.3170499-1-maskray@google.com> Mime-Version: 1.0 Subject: [PATCH] elf: Remove __libc_init_secure From: Fangrui Song To: libc-alpha@sourceware.org, Florian Weimer , "H . J . Lu" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-19.4 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Apr 2022 23:47:44 -0000 After 73fc4e28b9464f0e13edc719a5372839970e7ddb, __libc_enable_secure_decided is always 0 and a statically linked executable may overwrite __libc_enable_secure with a value not considering AT_SECURE. The __libc_enable_secure has been correctly initialized in _dl_aux_init, so just remove __libc_enable_secure_decided and __libc_init_secure. This allows us to remove some linux/i386 functions from 22b79ed7f413cd980a7af0cf258da5bf82b6d5e5. --- csu/libc-start.c | 3 --- elf/enbl-secure.c | 10 --------- include/libc-internal.h | 3 --- include/unistd.h | 1 - sysdeps/mach/hurd/enbl-secure.c | 30 -------------------------- sysdeps/unix/sysv/linux/i386/startup.h | 24 --------------------- 6 files changed, 71 deletions(-) delete mode 100644 sysdeps/mach/hurd/enbl-secure.c diff --git a/csu/libc-start.c b/csu/libc-start.c index e91f996426..b34bb6dbbc 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -285,9 +285,6 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), } } - /* Initialize very early so that tunables can use it. */ - __libc_init_secure (); - __tunables_init (__environ); ARCH_INIT_CPU_FEATURES (); diff --git a/elf/enbl-secure.c b/elf/enbl-secure.c index aa2a0bd877..4e4d66822b 100644 --- a/elf/enbl-secure.c +++ b/elf/enbl-secure.c @@ -26,15 +26,5 @@ #include #include -/* If nonzero __libc_enable_secure is already set. */ -int __libc_enable_secure_decided; /* Safest assumption, if somehow the initializer isn't run. */ int __libc_enable_secure = 1; - -void -__libc_init_secure (void) -{ - if (__libc_enable_secure_decided == 0) - __libc_enable_secure = (startup_geteuid () != startup_getuid () - || startup_getegid () != startup_getgid ()); -} diff --git a/include/libc-internal.h b/include/libc-internal.h index 15920d2bde..c052bccb27 100644 --- a/include/libc-internal.h +++ b/include/libc-internal.h @@ -21,9 +21,6 @@ #include -/* Initialize the `__libc_enable_secure' flag. */ -extern void __libc_init_secure (void); - /* Discover the tick frequency of the machine if something goes wrong, we return 0, an impossible hertz. */ extern int __profile_frequency (void); diff --git a/include/unistd.h b/include/unistd.h index 7090169601..af795a37c8 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -192,7 +192,6 @@ libc_hidden_proto (__tcsetpgrp) and some functions contained in the C library ignore various environment variables that normally affect them. */ extern int __libc_enable_secure attribute_relro; -extern int __libc_enable_secure_decided; rtld_hidden_proto (__libc_enable_secure) diff --git a/sysdeps/mach/hurd/enbl-secure.c b/sysdeps/mach/hurd/enbl-secure.c deleted file mode 100644 index 8c02789ecf..0000000000 --- a/sysdeps/mach/hurd/enbl-secure.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Define and initialize the `__libc_enable_secure' flag. Hurd version. - Copyright (C) 1998-2022 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 - . */ - -/* There is no need for this file in the Hurd; it is just a placeholder - to prevent inclusion of the sysdeps/generic version. - In the shared library, the `__libc_enable_secure' variable is defined - by the dynamic linker in dl-sysdep.c and set there. - In the static library, it is defined in init-first.c and set there. */ - -#include - -void -__libc_init_secure (void) -{ -} diff --git a/sysdeps/unix/sysv/linux/i386/startup.h b/sysdeps/unix/sysv/linux/i386/startup.h index aab8e26ca7..67c9310f3a 100644 --- a/sysdeps/unix/sysv/linux/i386/startup.h +++ b/sysdeps/unix/sysv/linux/i386/startup.h @@ -32,30 +32,6 @@ _startup_fatal (const char *message __attribute__ ((unused))) ABORT_INSTRUCTION; __builtin_unreachable (); } - -static inline uid_t -startup_getuid (void) -{ - return (uid_t) INTERNAL_SYSCALL_CALL (getuid32); -} - -static inline uid_t -startup_geteuid (void) -{ - return (uid_t) INTERNAL_SYSCALL_CALL (geteuid32); -} - -static inline gid_t -startup_getgid (void) -{ - return (gid_t) INTERNAL_SYSCALL_CALL (getgid32); -} - -static inline gid_t -startup_getegid (void) -{ - return (gid_t) INTERNAL_SYSCALL_CALL (getegid32); -} #else # include_next #endif -- 2.36.0.rc0.470.gd361397f0d-goog