Mercurial > hg > graal-jvmci-8
diff src/share/vm/utilities/elfFile.cpp @ 8710:9058789475af
7107135: Stack guard pages are no more protected after loading a shared library with executable stack
Summary: Detect the execstack attribute of the loaded library and attempt to fix the stack guard using Safepoint op.
Reviewed-by: dholmes, zgu
Contributed-by: ioi.lam@oracle.com
author | iklam |
---|---|
date | Tue, 05 Mar 2013 13:55:56 -0800 |
parents | b9a9ed0f8eeb |
children | de6a9e811145 e7cbc95179c4 |
line wrap: on
line diff
--- a/src/share/vm/utilities/elfFile.cpp Tue Mar 05 08:50:59 2013 +0100 +++ b/src/share/vm/utilities/elfFile.cpp Tue Mar 05 13:55:56 2013 -0800 @@ -197,4 +197,28 @@ return NULL; } +#ifdef LINUX +bool ElfFile::specifies_noexecstack() { + Elf_Phdr phdr; + if (!m_file) return true; + + if (!fseek(m_file, m_elfHdr.e_phoff, SEEK_SET)) { + for (int index = 0; index < m_elfHdr.e_phnum; index ++) { + if (fread((void*)&phdr, sizeof(Elf_Phdr), 1, m_file) != 1) { + m_status = NullDecoder::file_invalid; + return false; + } + if (phdr.p_type == PT_GNU_STACK) { + if (phdr.p_flags == (PF_R | PF_W)) { + return true; + } else { + return false; + } + } + } + } + return false; +} +#endif + #endif // _WINDOWS