summaryrefslogtreecommitdiff
path: root/view/macho/machoview.h
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2025-07-08 10:30:26 -0700
committerMark Rowe <mark@vector35.com>2025-07-08 23:32:41 -0700
commit6cb671483fe02f0e9ab20bab189101d1cc8210a1 (patch)
tree9c588a50ec552bb3e3cf5b502e5f7e190834d1dd /view/macho/machoview.h
parentf628cc695c680469c441394511a72b3b3912dd7f (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.h8
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;