From 8dd044fa1e7571cdbdf6a2dd7f1bea06e599665e Mon Sep 17 00:00:00 2001 From: Orange Date: Wed, 4 Feb 2026 18:35:04 +0300 Subject: [PATCH] removed nesting --- source/utility/macho_pattern_scan.cpp | 59 ++++++++++++++------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/source/utility/macho_pattern_scan.cpp b/source/utility/macho_pattern_scan.cpp index 968b80a..b4e399c 100644 --- a/source/utility/macho_pattern_scan.cpp +++ b/source/utility/macho_pattern_scan.cpp @@ -184,42 +184,43 @@ namespace if (!file.read(reinterpret_cast(&lc), sizeof(lc))) [[unlikely]] return std::nullopt; - if (lc.cmd == segment_cmd) + if (lc.cmd != segment_cmd) { - SegmentType segment{}; - file.seekg(cmd_offset, std::ios_base::beg); - if (!file.read(reinterpret_cast(&segment), sizeof(segment))) [[unlikely]] + cmd_offset += static_cast(lc.cmdsize); + continue; + } + SegmentType segment{}; + file.seekg(cmd_offset, std::ios_base::beg); + if (!file.read(reinterpret_cast(&segment), sizeof(segment))) [[unlikely]] + return std::nullopt; + + std::streamoff sect_offset = cmd_offset + static_cast(sizeof(segment)); + + for (std::uint32_t j = 0; j < segment.nsects; ++j) + { + SectionType section{}; + file.seekg(sect_offset, std::ios_base::beg); + if (!file.read(reinterpret_cast(§ion), sizeof(section))) [[unlikely]] return std::nullopt; - std::streamoff sect_offset = cmd_offset + static_cast(sizeof(segment)); - - for (std::uint32_t j = 0; j < segment.nsects; ++j) + if (get_section_name(section.sectname) != section_name) { - SectionType section{}; - file.seekg(sect_offset, std::ios_base::beg); - if (!file.read(reinterpret_cast(§ion), sizeof(section))) [[unlikely]] - return std::nullopt; - - if (get_section_name(section.sectname) == section_name) - { - ExtractedSection out; - out.virtual_base_addr = static_cast(section.addr); - out.raw_base_addr = static_cast(section.offset); - out.data.resize(static_cast(section.size)); - - file.seekg(static_cast(section.offset), std::ios_base::beg); - if (!file.read(reinterpret_cast(out.data.data()), - static_cast(out.data.size()))) [[unlikely]] - return std::nullopt; - - return out; - } - sect_offset += static_cast(sizeof(section)); + continue; } - } - cmd_offset += static_cast(lc.cmdsize); + ExtractedSection out; + out.virtual_base_addr = static_cast(section.addr); + out.raw_base_addr = static_cast(section.offset); + out.data.resize(static_cast(section.size)); + + file.seekg(static_cast(section.offset), std::ios_base::beg); + if (!file.read(reinterpret_cast(out.data.data()), static_cast(out.data.size()))) + [[unlikely]] + return std::nullopt; + + return out; + } } return std::nullopt;