aboutsummaryrefslogtreecommitdiff
path: root/llvm/include
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2022-09-14 12:30:34 -0700
committerTobias Hieta <tobias@hieta.se>2022-09-15 16:04:55 +0200
commit29d395a1b7a8176abb1d6278f7df98301fbe7744 (patch)
treefe623a983e36f975dfb02ebdcfa12703708c14a0 /llvm/include
parent4936d7ce485292b10a7d18a22fa06fcab8f899f6 (diff)
downloadllvm-29d395a1b7a8176abb1d6278f7df98301fbe7744.zip
llvm-29d395a1b7a8176abb1d6278f7df98301fbe7744.tar.gz
llvm-29d395a1b7a8176abb1d6278f7df98301fbe7744.tar.bz2
[llvm-objdump] Change printSymbolVersionDependency to use ELFFile API
When .gnu.version_r is empty (allowed by readelf but warned by objdump), llvm-objdump -p may decode the next section as .gnu.version_r and may crash due to out-of-bounds C string reference. ELFFile<ELFT>::getVersionDependencies handles 0-entry .gnu.version_r gracefully. Just use it. Fix https://github.com/llvm/llvm-project/issues/57707 Differential Revision: https://reviews.llvm.org/D133751 (cherry picked from commit 25394c9d10e73b666f4fa1dff2426824894cce58)
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/Object/ELF.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h
index 794d29f..5eb4377 100644
--- a/llvm/include/llvm/Object/ELF.h
+++ b/llvm/include/llvm/Object/ELF.h
@@ -1028,7 +1028,7 @@ ELFFile<ELFT>::getVersionDependencies(const Elf_Shdr &Sec,
VN.Offset = VerneedBuf - Start;
if (Verneed->vn_file < StrTab.size())
- VN.File = std::string(StrTab.drop_front(Verneed->vn_file));
+ VN.File = std::string(StrTab.data() + Verneed->vn_file);
else
VN.File = ("<corrupt vn_file: " + Twine(Verneed->vn_file) + ">").str();