[PATCH] D86422: [ELF] .note.gnu.property: error for invalid pr_datasize

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 24 01:06:41 PDT 2020


psmith added a comment.

Overall looking good. I think there may be an endianness problem with reinterpret_cast although I could easily be wrong without testing (I don't think we have a target that uses .note.gnu.property with big-endian support in LLD).



================
Comment at: lld/ELF/InputFiles.cpp:795
     // Read one NOTE record.
-    if (data.size() < sizeof(Elf_Nhdr))
-      fatal(toString(obj) + ": .note.gnu.property: section too short");
-
     auto *nhdr = reinterpret_cast<const Elf_Nhdr *>(data.data());
+    if (data.size() < sizeof(Elf_Nhdr) || data.size() < nhdr->getSize())
----------------
Will this work if the Host is little endian and the data in big-endian format?


================
Comment at: lld/ELF/InputFiles.cpp:797
+    if (data.size() < sizeof(Elf_Nhdr) || data.size() < nhdr->getSize())
+      reportFatal(data, "data is too short");
 
----------------
We may be able to be more precise with the size as I think data.size() = sizeof(Elf_Nhdr) + nhdr->getSize()


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86422/new/

https://reviews.llvm.org/D86422



More information about the llvm-commits mailing list