[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAGXu5j+MvpWAsm3S75DDbKNyEcLd=qNXzhAYjAyWy-1K_c+RcA@mail.gmail.com>
Date: Tue, 26 Jan 2016 15:25:50 -0800
From: Kees Cook <keescook@...omium.org>
To: Ard Biesheuvel <ard.biesheuvel@...aro.org>
Cc: "linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"kernel-hardening@...ts.openwall.com"
<kernel-hardening@...ts.openwall.com>,
Will Deacon <will.deacon@....com>,
Catalin Marinas <catalin.marinas@....com>,
Mark Rutland <mark.rutland@....com>,
Leif Lindholm <leif.lindholm@...aro.org>,
LKML <linux-kernel@...r.kernel.org>, stuart.yoder@...escale.com,
bhupesh.sharma@...escale.com, Arnd Bergmann <arnd@...db.de>,
Marc Zyngier <marc.zyngier@....com>,
Christoffer Dall <christoffer.dall@...aro.org>,
Laura Abbott <labbott@...oraproject.org>,
Matt Fleming <matt@...eblueprint.co.uk>
Subject: Re: [PATCH v4 15/22] scripts/sortextable: add support for ET_DYN binaries
On Tue, Jan 26, 2016 at 9:10 AM, Ard Biesheuvel
<ard.biesheuvel@...aro.org> wrote:
> Add support to scripts/sortextable for handling relocatable (PIE)
> executables, whose ELF type is ET_DYN, not ET_EXEC. Other than adding
> support for the new type, no changes are needed.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@...aro.org>
Reviewed-by: Kees Cook <keescook@...omium.org>
Something I can actually test! :)
-Kees
> ---
> scripts/sortextable.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/sortextable.c b/scripts/sortextable.c
> index af247c70fb66..19d83647846c 100644
> --- a/scripts/sortextable.c
> +++ b/scripts/sortextable.c
> @@ -266,9 +266,9 @@ do_file(char const *const fname)
> break;
> } /* end switch */
> if (memcmp(ELFMAG, ehdr->e_ident, SELFMAG) != 0
> - || r2(&ehdr->e_type) != ET_EXEC
> + || (r2(&ehdr->e_type) != ET_EXEC && r2(&ehdr->e_type) != ET_DYN)
> || ehdr->e_ident[EI_VERSION] != EV_CURRENT) {
> - fprintf(stderr, "unrecognized ET_EXEC file %s\n", fname);
> + fprintf(stderr, "unrecognized ET_EXEC/ET_DYN file %s\n", fname);
> fail_file();
> }
>
> @@ -304,7 +304,7 @@ do_file(char const *const fname)
> if (r2(&ehdr->e_ehsize) != sizeof(Elf32_Ehdr)
> || r2(&ehdr->e_shentsize) != sizeof(Elf32_Shdr)) {
> fprintf(stderr,
> - "unrecognized ET_EXEC file: %s\n", fname);
> + "unrecognized ET_EXEC/ET_DYN file: %s\n", fname);
> fail_file();
> }
> do32(ehdr, fname, custom_sort);
> @@ -314,7 +314,7 @@ do_file(char const *const fname)
> if (r2(&ghdr->e_ehsize) != sizeof(Elf64_Ehdr)
> || r2(&ghdr->e_shentsize) != sizeof(Elf64_Shdr)) {
> fprintf(stderr,
> - "unrecognized ET_EXEC file: %s\n", fname);
> + "unrecognized ET_EXEC/ET_DYN file: %s\n", fname);
> fail_file();
> }
> do64(ghdr, fname, custom_sort);
> --
> 2.5.0
>
--
Kees Cook
Chrome OS & Brillo Security
Powered by blists - more mailing lists