From b5779972913a77276afa808a415b23ecdfabcf72 Mon Sep 17 00:00:00 2001 From: Ryan Snyder Date: Sun, 29 Apr 2018 23:24:57 -0400 Subject: Prevent creation of LowLevelILFunction wrappers on the stack --- architecture.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'architecture.cpp') diff --git a/architecture.cpp b/architecture.cpp index a1aaca2d..682cffbc 100644 --- a/architecture.cpp +++ b/architecture.cpp @@ -195,8 +195,8 @@ bool Architecture::GetInstructionLowLevelILCallback(void* ctxt, const uint8_t* d size_t* len, BNLowLevelILFunction* il) { Architecture* arch = (Architecture*)ctxt; - LowLevelILFunction func(il); - return arch->GetInstructionLowLevelIL(data, addr, *len, func); + Ref func(new LowLevelILFunction(BNNewLowLevelILFunctionReference(il))); + return arch->GetInstructionLowLevelIL(data, addr, *len, *func); } @@ -401,8 +401,8 @@ size_t Architecture::GetFlagWriteLowLevelILCallback(void* ctxt, BNLowLevelILOper uint32_t flag, BNRegisterOrConstant* operands, size_t operandCount, BNLowLevelILFunction* il) { Architecture* arch = (Architecture*)ctxt; - LowLevelILFunction func(il); - return arch->GetFlagWriteLowLevelIL(op, size, flagWriteType, flag, operands, operandCount, func); + Ref func(new LowLevelILFunction(BNNewLowLevelILFunctionReference(il))); + return arch->GetFlagWriteLowLevelIL(op, size, flagWriteType, flag, operands, operandCount, *func); } @@ -410,16 +410,16 @@ size_t Architecture::GetFlagConditionLowLevelILCallback(void* ctxt, BNLowLevelIL BNLowLevelILFunction* il) { Architecture* arch = (Architecture*)ctxt; - LowLevelILFunction func(il); - return arch->GetFlagConditionLowLevelIL(cond, semClass, func); + Ref func(new LowLevelILFunction(BNNewLowLevelILFunctionReference(il))); + return arch->GetFlagConditionLowLevelIL(cond, semClass, *func); } size_t Architecture::GetSemanticFlagGroupLowLevelILCallback(void* ctxt, uint32_t semGroup, BNLowLevelILFunction* il) { Architecture* arch = (Architecture*)ctxt; - LowLevelILFunction func(il); - return arch->GetSemanticFlagGroupLowLevelIL(semGroup, func); + Ref func(new LowLevelILFunction(BNNewLowLevelILFunctionReference(il))); + return arch->GetSemanticFlagGroupLowLevelIL(semGroup, *func); } -- cgit v1.3.1