diff options
author | Nick Kralevich <nnk@google.com> | 2014-05-07 10:32:39 -0700 |
---|---|---|
committer | Dmitriy Ivanov <dimitry@google.com> | 2014-05-08 13:17:17 -0700 |
commit | 2aebf5429bb1241a3298b5b642d38f73124c2026 (patch) | |
tree | 9380302829e56b061ee6df1b30babbe45b2bb798 /linker/linker.cpp | |
parent | a3ce6bdb63cc1d657d9180269bf858af9fa685bf (diff) |
Remove support for non-PIE executables
Don't support the dynamic linker loading ET_EXEC executables. Only
support ET_DYN executables.
Bug: 14566672
Change-Id: Ia1f2bfffe7ea867c1cd62e67d7fd637c60c0728d
Diffstat (limited to 'linker/linker.cpp')
-rwxr-xr-x | linker/linker.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 08231eae0..1f32f6d09 100755 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -2071,6 +2071,12 @@ static ElfW(Addr) __linker_init_post_relocation(KernelArgumentBlock& args, ElfW( si->dynamic = NULL; si->ref_count = 1; + ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base); + if (elf_hdr->e_type != ET_DYN) { + __libc_format_fd(2, "error: only position independent executables (PIE) are supported.\n"); + exit(EXIT_FAILURE); + } + // Use LD_LIBRARY_PATH and LD_PRELOAD (but only if we aren't setuid/setgid). parse_LD_LIBRARY_PATH(ldpath_env); parse_LD_PRELOAD(ldpreload_env); |