[PATCH] elf: Apply attribute_relro to pointers in elf/dl-minimal.c

H.J. Lu hjl.tools@gmail.com
Wed Feb 26 15:51:00 GMT 2020


On Wed, Feb 26, 2020 at 7:18 AM Florian Weimer <fweimer@redhat.com> wrote:
>
> The present code leaves the function pointers unprotected, but moves
> some of the static functions into .data.rel.ro instead.  This causes
> the linker to produce an allocatable, executable, writable section
> and eventually an RWX load segment.  Not only do we really do not
> want that, it also breaks valgrind because valgrind does not load
> debuginfo from the mmap interceptor if all it sees are RX and RWX
> mappings.
>
> -----
>  elf/dl-minimal.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
> index c79ce23be4..7c64e24c87 100644
> --- a/elf/dl-minimal.c
> +++ b/elf/dl-minimal.c
> @@ -39,16 +39,16 @@
>    implementation below.  Before the final relocation,
>    __rtld_malloc_init_real is called to replace the pointers with the
>    real implementation.  */
> -__typeof (calloc) *__rtld_calloc;
> -__typeof (free) *__rtld_free;
> -__typeof (malloc) *__rtld_malloc;
> -__typeof (realloc) *__rtld_realloc;
> +__typeof (calloc) *__rtld_calloc attribute_relro;
> +__typeof (free) *__rtld_free attribute_relro;
> +__typeof (malloc) *__rtld_malloc attribute_relro;
> +__typeof (realloc) *__rtld_realloc attribute_relro;
>
>  /* Defined below.  */
> -static __typeof (calloc) rtld_calloc attribute_relro;
> -static __typeof (free) rtld_free attribute_relro;
> -static __typeof (malloc) rtld_malloc attribute_relro;
> -static __typeof (realloc) rtld_realloc attribute_relro;
> +static __typeof (calloc) rtld_calloc;
> +static __typeof (free) rtld_free;
> +static __typeof (malloc) rtld_malloc;
> +static __typeof (realloc) rtld_realloc;
>
>  void
>  __rtld_malloc_init_stubs (void)
>

LGTM.

Thanks.

-- 
H.J.



More information about the Libc-alpha mailing list