LibELF: Ignore PT_GNU_STACK headers

We always map stacks R/W (never X), so we can just ignore this header
as far as I understand.
This commit is contained in:
Andreas Kling 2020-08-20 10:08:02 +02:00
parent 2c5cc189c5
commit 413db2d6d5
2 changed files with 6 additions and 0 deletions

View file

@ -197,6 +197,11 @@ bool validate_program_headers(const Elf32_Ehdr& elf_header, size_t file_size, u8
return false;
}
break;
case PT_GNU_STACK:
if (program_header.p_flags & PF_X) {
dbgprintf("Possible shenanigans! Validating an ELF with executable stack.\n");
}
break;
default:
// Not handling other program header types in other code so... let's not surprise them
dbgprintf("Found program header (%zu) of unrecognized type %x!\n", header_index, program_header.p_type);

View file

@ -469,6 +469,7 @@ typedef struct {
#define PT_GNU_EH_FRAME 0x6474e550 /* Exception handling info */
#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
#define PT_GNU_STACK 0x6474e551 /* Stack permissions info */
#define PT_OPENBSD_RANDOMIZE 0x65a3dbe6 /* fill with random data */
#define PT_OPENBSD_WXNEEDED 0x65a3dbe7 /* program performs W^X violations */