[lld] 595cd45 - [lld-macho][nfc]Add bounds on sections and subsections check before attempting to dereferencing iterators.

Vy Nguyen via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 11 11:19:38 PDT 2023


Author: Vy Nguyen
Date: 2023-09-11T14:19:25-04:00
New Revision: 595cd45a6696361c37e9b348adb6dabdc4dfbbe9

URL: https://github.com/llvm/llvm-project/commit/595cd45a6696361c37e9b348adb6dabdc4dfbbe9
DIFF: https://github.com/llvm/llvm-project/commit/595cd45a6696361c37e9b348adb6dabdc4dfbbe9.diff

LOG: [lld-macho][nfc]Add bounds on sections and subsections check before attempting to dereferencing iterators.

Runnign some tests with asan built of LLD would throw errors similar to the following:

AddressSanitizer:DEADLYSIGNAL
    #0 0x55d8e6da5df7 in operator() /mnt/ssd/repo/lld/llvm-project/lld/MachO/Arch/ARM64.cpp:612
    #1 0x55d8e6daa514 in operator() /mnt/ssd/repo/lld/llvm-project/lld/MachO/Arch/ARM64.cpp:650

Differential Revision: https://reviews.llvm.org/D157027

Added: 
    

Modified: 
    lld/MachO/Arch/ARM64.cpp

Removed: 
    


################################################################################
diff  --git a/lld/MachO/Arch/ARM64.cpp b/lld/MachO/Arch/ARM64.cpp
index e28e82a78cbd1f6..e3781763c6102b5 100644
--- a/lld/MachO/Arch/ARM64.cpp
+++ b/lld/MachO/Arch/ARM64.cpp
@@ -602,11 +602,15 @@ void ARM64::applyOptimizationHints(uint8_t *outBuf, const ObjFile &obj) const {
         addr < sectionAddr + section->getSize())
       return true;
 
+    if (obj.sections.empty())
+      return false;
     auto secIt = std::prev(llvm::upper_bound(
         obj.sections, addr,
         [](uint64_t off, const Section *sec) { return off < sec->addr; }));
     const Section *sec = *secIt;
 
+    if (sec->subsections.empty())
+      return false;
     auto subsecIt = std::prev(llvm::upper_bound(
         sec->subsections, addr - sec->addr,
         [](uint64_t off, Subsection subsec) { return off < subsec.offset; }));


        


More information about the llvm-commits mailing list