diff options
| -rw-r--r-- | view/macho/machoview.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/view/macho/machoview.cpp b/view/macho/machoview.cpp index 34c11f69..df742c25 100644 --- a/view/macho/machoview.cpp +++ b/view/macho/machoview.cpp @@ -3743,6 +3743,15 @@ bool MachoViewType::IsTypeValidForData(BinaryView* data) if ((magic == FAT_MAGIC) || (magic == FAT_MAGIC_64)) return true; + // If it's an MH_FILESET, return false, these are now handled by the KernelCache plugin by default + DataBuffer header = data->ReadBuffer(data->GetStart(), sizeof(mach_header_64)); + if (header.GetLength() < sizeof(mach_header_64)) + return false; + const mach_header_64* mh = (const mach_header_64*)header.GetData(); + uint32_t filetype = mh->magic == MH_MAGIC_64 || mh->magic == MH_MAGIC ? mh->filetype : ToBE32(mh->filetype); + if (filetype == MH_FILESET) + return false; + return data->GetLoadSettings(GetName()) ? true : false; } |
