summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp')
-rw-r--r--lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp b/lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
index f28aa3bed05..976d7bf47ed 100644
--- a/lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
+++ b/lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
@@ -278,13 +278,13 @@ ObjectContainerUniversalMachO::GetModuleSpecifications (const lldb_private::File
lldb::DataBufferSP& data_sp,
lldb::offset_t data_offset,
lldb::offset_t file_offset,
- lldb::offset_t length,
+ lldb::offset_t file_size,
lldb_private::ModuleSpecList &specs)
{
const size_t initial_count = specs.GetSize();
DataExtractor data;
- data.SetData (data_sp, data_offset, length);
+ data.SetData (data_sp, data_offset, data_sp->GetByteSize());
if (ObjectContainerUniversalMachO::MagicBytesMatch(data))
{
@@ -294,9 +294,14 @@ ObjectContainerUniversalMachO::GetModuleSpecifications (const lldb_private::File
{
for (const llvm::MachO::fat_arch &fat_arch : fat_archs)
{
- ObjectFile::GetModuleSpecifications (file,
- fat_arch.offset + file_offset,
- specs);
+ const lldb::offset_t slice_file_offset = fat_arch.offset + file_offset;
+ if (fat_arch.offset < file_size && file_size > slice_file_offset)
+ {
+ ObjectFile::GetModuleSpecifications (file,
+ slice_file_offset,
+ file_size - slice_file_offset,
+ specs);
+ }
}
}
}
OpenPOWER on IntegriCloud