[PATCH v3 07/16] misc/sys/cdefs.h: Create FORTIFY redirects for internal calls
Siddhesh Poyarekar
siddhesh@gotplt.org
Fri Jun 30 15:13:20 GMT 2023
On 2023-06-28 04:42, Frédéric Bérat wrote:
> 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.
> ---
LGTM.
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__
>
More information about the Libc-alpha
mailing list