summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/VM.h
diff options
context:
space:
mode:
authorMark Rowe <mrowe@bdash.net.nz>2024-11-12 15:29:46 -0800
committerkat <kat@vector35.com>2024-11-13 16:18:10 -0500
commit0d27f74bd457689b9930614cfdca1c50d392203f (patch)
treedd31badb516139193439b9bdb4074d18169b5a1e /view/sharedcache/core/VM.h
parentf6e5f01b4b1b1e4a5736f9eb78049ae1125b47f8 (diff)
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.
Diffstat (limited to 'view/sharedcache/core/VM.h')
-rw-r--r--view/sharedcache/core/VM.h8
1 files changed, 4 insertions, 4 deletions
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);