public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "Frédéric Bérat" <fberat@redhat.com>
To: libc-alpha@sourceware.org
Cc: siddhesh@gotplt.org, fberat@redhat.com,
	Siddhesh Poyarekar <siddhesh@sourceware.org>
Subject: [PATCH v6 06/14] misc/sys/cdefs.h: Create FORTIFY redirects for internal calls
Date: Wed,  5 Jul 2023 16:38:12 +0200	[thread overview]
Message-ID: <20230705143822.275049-7-fberat@redhat.com> (raw)
In-Reply-To: <20230705143822.275049-1-fberat@redhat.com>

The __REDIRECT* macros are creating aliases which may lead to unwanted
PLT entries when fortification is enabled.
To prevent these entries, the REDIRECT alias should be set to point to the
existing __GI_* aliases.
This is done transparently by creating a __REDIRECT_FORTIFY* version of
these macros, that can be overwritten internally when necessary.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
---
 include/sys/cdefs.h | 14 ++++++++++++++
 misc/sys/cdefs.h    |  8 ++++++++
 2 files changed, 22 insertions(+)

diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h
index 56adb231aa..b84ad34a70 100644
--- a/include/sys/cdefs.h
+++ b/include/sys/cdefs.h
@@ -40,6 +40,20 @@ rtld_hidden_proto (__chk_fail)
 
 #endif
 
+#if defined SHARED
+#if IS_IN (libc) && __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+
+#undef __REDIRECT_FORTIFY
+#define __REDIRECT_FORTIFY(name, proto, alias) \
+  __REDIRECT(name, proto, __GI_##alias)
+
+#undef __REDIRECT_FORTIFY_NTH
+#define __REDIRECT_FORTIFY_NTH(name, proto, alias) \
+  __REDIRECT_NTH(name, proto, __GI_##alias)
+
+#endif
+#endif /* defined SHARED */
+
 #endif /* !defined _ISOMAC */
 
 #endif
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 393d9091d9..90c21e2703 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -268,6 +268,14 @@
 # define __ASMNAME(cname)  __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
 # define __ASMNAME2(prefix, cname) __STRING (prefix) cname
 
+#ifndef __REDIRECT_FORTIFY
+#define __REDIRECT_FORTIFY __REDIRECT
+#endif
+
+#ifndef __REDIRECT_FORTIFY_NTH
+#define __REDIRECT_FORTIFY_NTH __REDIRECT_NTH
+#endif
+
 /*
 #elif __SOME_OTHER_COMPILER__
 
-- 
2.41.0


  parent reply	other threads:[~2023-07-05 14:38 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-05 14:38 [PATCH v6 00/14] Allow glibc to be built with _FORTIFY_SOURCE Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 01/14] " Frédéric Bérat
2023-07-05 14:41   ` Siddhesh Poyarekar
2023-07-05 14:38 ` [PATCH v6 02/14] Exclude routines from fortification Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 03/14] sysdeps: Ensure ieee128*_chk routines to be properly named Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 04/14] string: Ensure *_chk routines have their hidden builtin definition available Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 05/14] stdio: " Frédéric Bérat
2023-07-05 14:38 ` Frédéric Bérat [this message]
2023-07-05 14:38 ` [PATCH v6 07/14] wchar: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 08/14] posix/bits/unistd.h: Clearly separate declaration from definitions Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 09/14] unistd: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 10/14] misc/bits/select2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 11/14] misc/bits/syslog.h: Clearly separate declaration from definition Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 12/14] libio/bits/stdio2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 13/14] libio/bits/stdio2-decl.h: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-07-05 14:38 ` [PATCH v6 14/14] sysdeps/ieee754/ldbl-128ibm-compat: Fix warn unused result Frédéric Bérat
2023-07-06 13:15 ` [PATCH v6 00/14] Allow glibc to be built with _FORTIFY_SOURCE Andreas Schwab
2023-07-06 13:41   ` Frederic Berat
2023-07-06 13:46     ` Andreas Schwab
2023-07-10  5:57   ` Frederic Berat
2023-07-06 13:38 ` Andreas Schwab
2023-07-10  5:56   ` Frederic Berat
2023-07-11  8:44 ` Andreas Schwab
2023-07-12 13:35   ` Frederic Berat
2023-07-12 13:38     ` Andreas Schwab
2023-07-12 13:42       ` Frederic Berat

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230705143822.275049-7-fberat@redhat.com \
    --to=fberat@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=siddhesh@gotplt.org \
    --cc=siddhesh@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).