diff options
| author | Mark Rowe <mark@vector35.com> | 2025-07-08 10:30:26 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-07-08 23:32:41 -0700 |
| commit | 6cb671483fe02f0e9ab20bab189101d1cc8210a1 (patch) | |
| tree | 9c588a50ec552bb3e3cf5b502e5f7e190834d1dd /view/macho/machoview.h | |
| parent | f628cc695c680469c441394511a72b3b3912dd7f (diff) | |
[MachO] Avoid leaking MachoObjCProcessor
This would leak if parsing of CFStrings was enabled while parsing of
Objective-C metadata was disabled.
It would also leak if exceptions were thrown or early returns were taken
in the ~500 lines between where the object was allocated and it was
deleted.
Diffstat (limited to 'view/macho/machoview.h')
| -rw-r--r-- | view/macho/machoview.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/view/macho/machoview.h b/view/macho/machoview.h index dfbb24fe..253af9d1 100644 --- a/view/macho/machoview.h +++ b/view/macho/machoview.h @@ -1456,8 +1456,6 @@ namespace BinaryNinja QualifiedName filesetEntryCommandQualName; } m_typeNames; - MachoObjCProcessor* m_objcProcessor = nullptr; - uint64_t m_universalImageOffset; bool m_parseOnly, m_backedByDatabase; int64_t m_imageBaseAdjustment; @@ -1488,7 +1486,7 @@ namespace BinaryNinja void RebaseThreadStarts(BinaryReader& virtualReader, std::vector<uint32_t>& threadStarts, uint64_t stepMultiplier); Ref<Symbol> DefineMachoSymbol( BNSymbolType type, const std::string& name, uint64_t addr, BNSymbolBinding binding, bool deferred); - void ParseSymbolTable(BinaryReader& reader, MachOHeader& header, const symtab_command& symtab, const std::vector<uint32_t>& symbolStubsList); + void ParseSymbolTable(BinaryReader& reader, MachOHeader& header, const symtab_command& symtab, const std::vector<uint32_t>& symbolStubsList, MachoObjCProcessor*); bool IsValidFunctionStart(uint64_t addr); void ParseFunctionStarts(Platform* platform, uint64_t textBase, function_starts_command functionStarts); bool ParseRelocationEntry(const relocation_info& info, uint64_t start, BNRelocationInfo& result); @@ -1503,8 +1501,8 @@ namespace BinaryNinja BNSymbolBinding binding); bool GetSectionPermissions(MachOHeader& header, uint64_t address, uint32_t &flags); bool GetSegmentPermissions(MachOHeader& header, uint64_t address, uint32_t &flags); - void ParseChainedFixups(MachOHeader& header, linkedit_data_command chainedFixups); - void ParseChainedStarts(MachOHeader& header, section_64 chainedStarts); + void ParseChainedFixups(MachOHeader& header, linkedit_data_command chainedFixups, MachoObjCProcessor*); + void ParseChainedStarts(MachOHeader& header, section_64 chainedStarts, MachoObjCProcessor*); virtual uint64_t PerformGetEntryPoint() const override; |
