diff options
Diffstat (limited to 'view/kernelcache/core/KernelCacheController.cpp')
| -rw-r--r-- | view/kernelcache/core/KernelCacheController.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/view/kernelcache/core/KernelCacheController.cpp b/view/kernelcache/core/KernelCacheController.cpp index 40d4a1df..753c28ad 100644 --- a/view/kernelcache/core/KernelCacheController.cpp +++ b/view/kernelcache/core/KernelCacheController.cpp @@ -124,10 +124,13 @@ bool KernelCacheController::ApplyImage(BinaryView& view, const CacheImage& image loadedRegion = true; for (const auto& segment : image.header->segments) { - auto flags = SegmentFlagsFromMachOProtections(segment.initprot, segment.maxprot); + if (segment.vmsize == 0) + continue; + + auto flags = SegmentFlagsForSegment(segment); view.AddAutoSegment(segment.vmaddr, segment.vmsize, segment.fileoff, segment.filesize, flags); - auto relocations = m_cache.GetRelocations(); + const auto& relocations = m_cache.GetRelocations(); auto begin = std::lower_bound(relocations.begin(), relocations.end(), segment.vmaddr, [](const std::pair<uint64_t, uint64_t>& reloc, uint64_t addr) { |
