Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Jan 2021 16:04:11 +0000
From:      Jessica Clarke <jrtc27@freebsd.org>
To:        Ed Maste <emaste@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 613a08cfa2e0 - main - rtld: map without PROT_EXEC for relocation
Message-ID:  <BA8AAC74-F91D-4128-8AF9-7BEE9D59BD1D@freebsd.org>
In-Reply-To: <202101051557.105FvmZf064874@gitrepo.freebsd.org>
References:  <202101051557.105FvmZf064874@gitrepo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 5 Jan 2021, at 15:57, Ed Maste <emaste@FreeBSD.org> wrote:
> diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
> index 27262ab9dbc5..7b8bfba84d7d 100644
> --- a/libexec/rtld-elf/rtld.c
> +++ b/libexec/rtld-elf/rtld.c
> @@ -2982,7 +2982,8 @@ reloc_textrel_prot(Obj_Entry *obj, bool before)
> 		base = obj->relocbase + trunc_page(ph->p_vaddr);
> 		sz = round_page(ph->p_vaddr + ph->p_filesz) -
> 		    trunc_page(ph->p_vaddr);
> -		prot = convert_prot(ph->p_flags) | (before ? PROT_WRITE : 0);
> +		prot = before ? (PROT_READ | PROT_WRITE) :
> +		    convert_prot(ph->p_flags);
> 		if (mprotect(base, sz, prot) == -1) {
> 			_rtld_error("%s: Cannot write-%sable text segment: %s",
> 			    obj->path, before ? "en" : "dis",

This error message could perhaps be improved now that both W and X are
varying? As it stands it reads like the code used to function.

Jess




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BA8AAC74-F91D-4128-8AF9-7BEE9D59BD1D>