[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