From 0d27f74bd457689b9930614cfdca1c50d392203f Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Tue, 12 Nov 2024 15:29:46 -0800 Subject: Don't leak DataBuffers `MMappedFileAccessor::ReadBuffer` was returning a heap-allocated `DataBuffer`, but no callers were ever deleting it. There does not appear to be any reason to heap allocate the `DataBuffer` as the type is effectively a smart pointer wrapper around `BNDataBuffer`. Switch to returning it by value instead. Additionally, `MMappedFileAccessor::ReadBuffer` was allocating a buffer, copying data into it, and then handing that allocation to the `DataBuffer` constructor. The constructor copies data into a new allocation it owns so this allocation is unnecessary and was being leaked. --- view/sharedcache/core/VM.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'view/sharedcache/core/VM.h') diff --git a/view/sharedcache/core/VM.h b/view/sharedcache/core/VM.h index b000266b..b8e5c59b 100644 --- a/view/sharedcache/core/VM.h +++ b/view/sharedcache/core/VM.h @@ -172,7 +172,7 @@ public: int64_t ReadLong(size_t address); - BinaryNinja::DataBuffer *ReadBuffer(size_t addr, size_t length); + BinaryNinja::DataBuffer ReadBuffer(size_t addr, size_t length); void Read(void *dest, size_t addr, size_t length); }; @@ -252,7 +252,7 @@ public: int64_t ReadLong(size_t address); - BinaryNinja::DataBuffer *ReadBuffer(size_t addr, size_t length); + BinaryNinja::DataBuffer ReadBuffer(size_t addr, size_t length); void Read(void *dest, size_t addr, size_t length); }; @@ -320,9 +320,9 @@ public: size_t ReadPointer(size_t address); - BinaryNinja::DataBuffer *ReadBuffer(size_t length); + BinaryNinja::DataBuffer ReadBuffer(size_t length); - BinaryNinja::DataBuffer *ReadBuffer(size_t addr, size_t length); + BinaryNinja::DataBuffer ReadBuffer(size_t addr, size_t length); void Read(void *dest, size_t length); -- cgit v1.3.1