diff options
| author | kat <kat@vector35.com> | 2024-10-28 11:58:15 -0400 |
|---|---|---|
| committer | kat <kat@vector35.com> | 2024-10-28 12:58:51 -0400 |
| commit | 07bce5f257d30061475452ec9c2e06a132747b54 (patch) | |
| tree | 434dbd4660b981edd81c3f1651e868aacb240b26 /view/sharedcache/core | |
| parent | 891b8c0d4366266c0b9af08037dbd71c54cf86b3 (diff) | |
[SharedCache] Fix UI causing BV leaks
Diffstat (limited to 'view/sharedcache/core')
| -rw-r--r-- | view/sharedcache/core/CMakeLists.txt | 12 | ||||
| -rw-r--r-- | view/sharedcache/core/DSCView.cpp | 9 |
2 files changed, 15 insertions, 6 deletions
diff --git a/view/sharedcache/core/CMakeLists.txt b/view/sharedcache/core/CMakeLists.txt index 89e89811..9cf3fa9d 100644 --- a/view/sharedcache/core/CMakeLists.txt +++ b/view/sharedcache/core/CMakeLists.txt @@ -48,9 +48,17 @@ get_recursive_include_dirs(binaryninjaapi INCLUDES) if (VIEW_NAME) if (SLIDEINFO_DEBUG_TAGS) - target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY SLIDEINFO_DEBUG_TAGS) + if (BN_REF_COUNT_DEBUG) + target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY SLIDEINFO_DEBUG_TAGS BN_REF_COUNT_DEBUG) + else() + target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY SLIDEINFO_DEBUG_TAGS) + endif() else() - target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY) + if (BN_REF_COUNT_DEBUG) + target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY BN_REF_COUNT_DEBUG) + else() + target_compile_definitions(sharedcachecore PRIVATE VIEW_NAME="${VIEW_NAME}" SHAREDCACHE_LIBRARY) + endif() endif() message(STATUS "VIEW_NAME: ${VIEW_NAME}") else() diff --git a/view/sharedcache/core/DSCView.cpp b/view/sharedcache/core/DSCView.cpp index b065f1e6..e690f765 100644 --- a/view/sharedcache/core/DSCView.cpp +++ b/view/sharedcache/core/DSCView.cpp @@ -32,9 +32,9 @@ DSCRawView::DSCRawView(const std::string& typeName, BinaryView* data, bool parse // This is going to load _only_ the dyld header of the loaded file. // This written region will be immediately overwritten on image loading by SharedCache.cpp GetFile()->SetFilename(data->GetFile()->GetOriginalFilename()); - auto reader = new BinaryReader(GetParentView()); - reader->Seek(16); - auto size = reader->Read32() + 0x8; + uint32_t size; + GetParentView()->Read(&size, 16, 4); + size += 8; AddAutoSegment(0, size, 0, size, SegmentReadable); GetParentView()->WriteBuffer(0, GetParentView()->ReadBuffer(0, size)); } @@ -762,7 +762,8 @@ DSCViewType::DSCViewType() : BinaryViewType(VIEW_NAME, VIEW_NAME) {} BinaryNinja::Ref<BinaryNinja::BinaryView> DSCViewType::Create(BinaryNinja::BinaryView* data) { - return new DSCView(VIEW_NAME, new DSCRawView("DSCRawView", data, false), false); + Ref<BinaryView> rawViewRef = new DSCRawView("DSCRawView", data, false); + return new DSCView(VIEW_NAME, rawViewRef, false); } |
