[llvm] [ELF]Add overflow check to ELF note iterator (PR #160451)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 30 10:32:49 PDT 2025
================
@@ -310,3 +314,72 @@ TEST(ELFTest, Hash) {
// presuming 32-bit long. Thus make sure that extra bit doesn't appear.
EXPECT_EQ(hashSysV("ZZZZZW9p"), 0U);
}
+
+template <class ELFT>
+static Expected<ELFObjectFile<ELFT>> toBinary(SmallVectorImpl<char> &Storage,
+ StringRef Yaml) {
+ raw_svector_ostream OS(Storage);
+ yaml::Input YIn(Yaml);
+ if (!yaml::convertYAML(YIn, OS, [](const Twine &Msg) {}))
+ return createStringError(std::errc::invalid_argument,
+ "unable to convert YAML");
+ return ELFObjectFile<ELFT>::create(MemoryBufferRef(OS.str(), "dummyELF"));
+}
+
+TEST(ELFObjectFileTest, ELFNoteIteratorOverflow) {
+ using Elf_Shdr_Range = ELFFile<ELF64LE>::Elf_Shdr_Range;
+ using Elf_Phdr_Range = ELFFile<ELF64LE>::Elf_Phdr_Range;
+
+ SmallString<0> Storage;
+ Expected<ELFObjectFile<ELF64LE>> ElfOrErr = toBinary<ELF64LE>(Storage, R"(
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+ProgramHeaders:
+ - Type: PT_NOTE
+ FileSize: 0xffffffffffffff88
+ FirstSec: .note.gnu.build-id
+ LastSec: .note.gnu.build-id
+
----------------
jh7370 wrote:
Nit: delete this blank line
https://github.com/llvm/llvm-project/pull/160451
More information about the llvm-commits
mailing list