From b546d0c8d8957064424f37f1cae7bc5fc3695f4a Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Tue, 11 Feb 2025 13:57:47 -0500 Subject: Fix partial initialization of `DisassemblyTextLine` The usage of `DisassemblyTextLine` in the FFI was unsound, we would forget to initialize some fields causing a myriad of issues where round-tripping through the FFI was losing information. --- function.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'function.cpp') diff --git a/function.cpp b/function.cpp index 811e64c3..1940734d 100644 --- a/function.cpp +++ b/function.cpp @@ -23,6 +23,8 @@ #include "highlevelilinstruction.h" #include +#include "ffi.h" + using namespace BinaryNinja; using namespace std; @@ -2554,19 +2556,7 @@ vector Function::GetTypeTokens(DisassemblySettings* setting BNDisassemblyTextLine* lines = BNGetFunctionTypeTokens(m_object, settings ? settings->GetObject() : nullptr, &count); - vector result; - result.reserve(count); - for (size_t i = 0; i < count; i++) - { - DisassemblyTextLine line; - line.addr = lines[i].addr; - line.instrIndex = lines[i].instrIndex; - line.highlight = lines[i].highlight; - line.tokens = InstructionTextToken::ConvertInstructionTextTokenList(lines[i].tokens, lines[i].count); - line.tags = Tag::ConvertTagList(lines[i].tags, lines[i].tagCount); - result.push_back(line); - } - + vector result = ParseAPIObjectList(lines, count); BNFreeDisassemblyTextLines(lines, count); return result; } -- cgit v1.3.1