From c73eec159f287ce8911cfcfd122e24c37d584eb9 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Fri, 22 Jul 2016 12:50:59 -0700 Subject: [PATCH] Add sanity checks for e_shentsize and e_shstrndx This helps us avoid situations when malformed elf-files are mistakenly loaded, - which might result in unexpected behavior. Bug: http://b/30166532 Test: bionic-unit-tests --gtest_filter=dl*:Dl* Change-Id: Idd6b4fa20e1d69a9f8d8391ba69c724d930fee51 --- linker/linker_phdr.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp index a7af82fb8bd..ebc31663ede 100644 --- a/linker/linker_phdr.cpp +++ b/linker/linker_phdr.cpp @@ -245,6 +245,17 @@ bool ElfReader::VerifyElfHeader() { return false; } + if (header_.e_shentsize != sizeof(ElfW(Shdr))) { + DL_ERR("\"%s\" has unsupported e_shentsize: 0x%x (expected 0x%zx)", + name_.c_str(), header_.e_shentsize, sizeof(ElfW(Shdr))); + return false; + } + + if (header_.e_shstrndx == 0) { + DL_ERR("\"%s\" has invalid e_shstrndx", name_.c_str()); + return false; + } + return true; }