Author: Jonas Devlieghere
Date: 2024-07-10T14:16:56-07:00
New Revision: 919caa89ee3323228ccb1dd065d86805b34b9b6a

URL: 
https://github.com/llvm/llvm-project/commit/919caa89ee3323228ccb1dd065d86805b34b9b6a
DIFF: 
https://github.com/llvm/llvm-project/commit/919caa89ee3323228ccb1dd065d86805b34b9b6a.diff

LOG: [lldb] Don't crash on malformed filesets (#98388)

The memory read can fail for a malformed fileset. Handle it gracefully
instead of passing a nullptr to the std::string constructor.

rdar://131477833

Added: 
    

Modified: 
    
lldb/source/Plugins/ObjectContainer/Mach-O-Fileset/ObjectContainerMachOFileset.cpp

Removed: 
    


################################################################################
diff  --git 
a/lldb/source/Plugins/ObjectContainer/Mach-O-Fileset/ObjectContainerMachOFileset.cpp
 
b/lldb/source/Plugins/ObjectContainer/Mach-O-Fileset/ObjectContainerMachOFileset.cpp
index 2dc71d85777ca..76141f7976413 100644
--- 
a/lldb/source/Plugins/ObjectContainer/Mach-O-Fileset/ObjectContainerMachOFileset.cpp
+++ 
b/lldb/source/Plugins/ObjectContainer/Mach-O-Fileset/ObjectContainerMachOFileset.cpp
@@ -159,9 +159,9 @@ ParseFileset(DataExtractor &data, mach_header header,
       fileset_entry_command entry;
       data.CopyData(load_cmd_offset, sizeof(fileset_entry_command), &entry);
       lldb::offset_t entry_id_offset = load_cmd_offset + entry.entry_id.offset;
-      const char *id = data.GetCStr(&entry_id_offset);
-      entries.emplace_back(entry.vmaddr + slide, entry.fileoff,
-                           std::string(id));
+      if (const char *id = data.GetCStr(&entry_id_offset))
+        entries.emplace_back(entry.vmaddr + slide, entry.fileoff,
+                             std::string(id));
     }
 
     offset = load_cmd_offset + lc.cmdsize;


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to