diff options
| -rw-r--r-- | binaryninjacore.h | 1 | ||||
| -rw-r--r-- | binaryview.cpp | 10 | ||||
| -rw-r--r-- | demangle.cpp | 4 | ||||
| -rw-r--r-- | function.cpp | 8 | ||||
| -rw-r--r-- | highlevelil.cpp | 2 | ||||
| -rw-r--r-- | mediumlevelil.cpp | 2 | ||||
| -rw-r--r-- | platform.cpp | 8 | ||||
| -rw-r--r-- | python/binaryview.py | 22 | ||||
| -rw-r--r-- | python/debuginfo.py | 2 | ||||
| -rw-r--r-- | python/demangle.py | 6 | ||||
| -rw-r--r-- | python/function.py | 4 | ||||
| -rw-r--r-- | python/highlevelil.py | 4 | ||||
| -rw-r--r-- | python/mediumlevelil.py | 4 | ||||
| -rw-r--r-- | python/platform.py | 8 | ||||
| -rw-r--r-- | python/typelibrary.py | 4 | ||||
| -rw-r--r-- | python/types.py | 43 | ||||
| -rw-r--r-- | python/variable.py | 4 | ||||
| -rw-r--r-- | type.cpp | 14 |
18 files changed, 77 insertions, 73 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h index f76ae881..3219e63b 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -4311,6 +4311,7 @@ extern "C" BINARYNINJACOREAPI void BNUndefineDataVariable(BNBinaryView* view, uint64_t addr); BINARYNINJACOREAPI void BNUndefineUserDataVariable(BNBinaryView* view, uint64_t addr); BINARYNINJACOREAPI BNDataVariable* BNGetDataVariables(BNBinaryView* view, size_t* count); + BINARYNINJACOREAPI void BNFreeDataVariable(BNDataVariable* var); BINARYNINJACOREAPI void BNFreeDataVariables(BNDataVariable* vars, size_t count); BINARYNINJACOREAPI void BNFreeDataVariableAndName(BNDataVariableAndName* var); BINARYNINJACOREAPI void BNFreeDataVariablesAndName(BNDataVariableAndName* vars, size_t count); diff --git a/binaryview.cpp b/binaryview.cpp index 40e4144a..7232e647 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -1805,7 +1805,7 @@ bool BinaryView::GetDataVariableAtAddress(uint64_t addr, DataVariable& var) return false; var.address = result.address; - var.type = Confidence<Ref<Type>>(new Type(BNNewTypeReference(result.type)), result.typeConfidence); + var.type = Confidence<Ref<Type>>(new Type(result.type), result.typeConfidence); var.autoDiscovered = result.autoDiscovered; return true; } @@ -3489,7 +3489,7 @@ Ref<Type> BinaryView::GetTypeByName(const QualifiedName& name) if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -3498,7 +3498,7 @@ Ref<Type> BinaryView::GetTypeByRef(Ref<NamedTypeReference> ref) BNType* type = BNGetAnalysisTypeByRef(m_object, ref->m_object); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -3507,7 +3507,7 @@ Ref<Type> BinaryView::GetTypeById(const string& id) BNType* type = BNGetAnalysisTypeById(m_object, id.c_str()); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -4297,7 +4297,7 @@ Confidence<Ref<Type>> BinaryView::CreateStructureMemberFromAccess(const Qualifie BNTypeWithConfidence type = BNCreateStructureMemberFromAccess(m_object, &typeObj, offset); if (type.type) - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(type.type)), type.confidence); + return Confidence<Ref<Type>>(new Type(type.type), type.confidence); return nullptr; } diff --git a/demangle.cpp b/demangle.cpp index 9239da6d..f201e373 100644 --- a/demangle.cpp +++ b/demangle.cpp @@ -18,7 +18,7 @@ namespace BinaryNinja { size_t localSize = 0; if (!BNDemangleMS(arch->GetObject(), mangledName.c_str(), &localType, &localVarName, &localSize, simplify)) return false; - outType = localType ? new Type(BNNewTypeReference(localType)) : nullptr; + outType = localType ? new Type(localType) : nullptr; for (size_t i = 0; i < localSize; i++) { outVarName.push_back(localVarName[i]); @@ -43,7 +43,7 @@ namespace BinaryNinja { size_t localSize = 0; if (!BNDemangleGNU3(arch->GetObject(), mangledName.c_str(), &localType, &localVarName, &localSize, simplify)) return false; - outType = localType ? new Type(BNNewTypeReference(localType)) : nullptr; + outType = localType ? new Type(localType) : nullptr; for (size_t i = 0; i < localSize; i++) { outVarName.push_back(localVarName[i]); diff --git a/function.cpp b/function.cpp index 41109dea..4be60124 100644 --- a/function.cpp +++ b/function.cpp @@ -794,7 +794,7 @@ Ref<Type> Function::GetType() const Confidence<Ref<Type>> Function::GetReturnType() const { BNTypeWithConfidence tc = BNGetFunctionReturnType(m_object); - Ref<Type> type = tc.type ? new Type(BNNewTypeReference(tc.type)) : nullptr; + Ref<Type> type = tc.type ? new Type(tc.type) : nullptr; return Confidence<Ref<Type>>(type, tc.confidence); } @@ -1501,7 +1501,7 @@ Confidence<Ref<Type>> Function::GetVariableType(const Variable& var) BNTypeWithConfidence type = BNGetVariableType(m_object, &var); if (!type.type) return nullptr; - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(type.type)), type.confidence); + return Confidence<Ref<Type>>(new Type(type.type), type.confidence); } @@ -1706,7 +1706,7 @@ void Function::SetUserCallRegisterStackAdjustment( Confidence<Ref<Type>> Function::GetCallTypeAdjustment(Architecture* arch, uint64_t addr) { BNTypeWithConfidence result = BNGetCallTypeAdjustment(m_object, arch->GetObject(), addr); - return Confidence<Ref<Type>>(result.type ? new Type(BNNewTypeReference(result.type)) : nullptr, result.confidence); + return Confidence<Ref<Type>>(result.type ? new Type(result.type) : nullptr, result.confidence); } @@ -1778,7 +1778,7 @@ Ref<Type> Function::GetIntegerConstantDisplayTypeEnumType( { BNType* apiType = BNGetIntegerConstantDisplayTypeEnumerationType(m_object, arch->GetObject(), instrAddr, value, operand); if (apiType) - return new Type(BNNewTypeReference(apiType)); + return new Type(apiType); return nullptr; } diff --git a/highlevelil.cpp b/highlevelil.cpp index 6004ce08..449dcfb9 100644 --- a/highlevelil.cpp +++ b/highlevelil.cpp @@ -497,7 +497,7 @@ Confidence<Ref<Type>> HighLevelILFunction::GetExprType(size_t expr) BNTypeWithConfidence result = BNGetHighLevelILExprType(m_object, expr); if (!result.type) return nullptr; - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(result.type)), result.confidence); + return Confidence<Ref<Type>>(new Type(result.type), result.confidence); } diff --git a/mediumlevelil.cpp b/mediumlevelil.cpp index 2d920cd0..318d30f9 100644 --- a/mediumlevelil.cpp +++ b/mediumlevelil.cpp @@ -838,7 +838,7 @@ Confidence<Ref<Type>> MediumLevelILFunction::GetExprType(size_t expr) BNTypeWithConfidence result = BNGetMediumLevelILExprType(m_object, expr); if (!result.type) return nullptr; - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(result.type)), result.confidence); + return Confidence<Ref<Type>>(new Type(result.type), result.confidence); } diff --git a/platform.cpp b/platform.cpp index c4d65274..e7f3aef5 100644 --- a/platform.cpp +++ b/platform.cpp @@ -381,7 +381,7 @@ Ref<Type> Platform::GetTypeByName(const QualifiedName& name) QualifiedName::FreeAPIObject(&nameObj); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -392,7 +392,7 @@ Ref<Type> Platform::GetVariableByName(const QualifiedName& name) QualifiedName::FreeAPIObject(&nameObj); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -403,7 +403,7 @@ Ref<Type> Platform::GetFunctionByName(const QualifiedName& name, bool exactMatch QualifiedName::FreeAPIObject(&nameObj); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } @@ -421,7 +421,7 @@ Ref<Type> Platform::GetSystemCallType(uint32_t n) BNType* type = BNGetPlatformSystemCallType(m_object, n); if (!type) return nullptr; - return new Type(BNNewTypeReference(type)); + return new Type(type); } diff --git a/python/binaryview.py b/python/binaryview.py index 031c2886..10431078 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -4011,7 +4011,9 @@ class BinaryView: var = core.BNDataVariable() if not core.BNGetDataVariableAtAddress(self.handle, addr, var): return None - return DataVariable.from_core_struct(var, self) + result = DataVariable.from_core_struct(var, self) + core.BNFreeDataVariable(var) + return result def get_functions_containing(self, addr: int, plat: Optional['_platform.Platform'] = None) -> List['_function.Function']: @@ -4769,7 +4771,7 @@ class BinaryView: if not result.type: raise Exception("BNCreateStructureMemberFromAccess failed to create struct member offsets") - return _types.Type.create(core.BNNewTypeReference(result.type), confidence=result.confidence) + return _types.Type.create(result.type, confidence=result.confidence) def add_expression_parser_magic_value(self, name: str, value: int) -> None: """ @@ -6388,7 +6390,9 @@ class BinaryView: addr = var.address + core.BNGetTypeWidth(var.type) continue break - return DataVariable.from_core_struct(var, self) + result = DataVariable.from_core_struct(var, self) + core.BNFreeDataVariable(var) + return result def get_next_data_var_start_after(self, addr: int) -> int: """ @@ -6498,7 +6502,9 @@ class BinaryView: var = core.BNDataVariable() if not core.BNGetDataVariableAtAddress(self.handle, prev_data_var_start, var): return None - return DataVariable.from_core_struct(var, self) + result = DataVariable.from_core_struct(var, self) + core.BNFreeDataVariable(var) + return result def get_previous_data_var_start_before(self, addr: int) -> int: """ @@ -6807,7 +6813,7 @@ class BinaryView: obj = core.BNGetAnalysisTypeByName(self.handle, _name) if not obj: return None - return _types.Type.create(core.BNNewTypeReference(obj), platform=self.platform) + return _types.Type.create(obj, platform=self.platform) def get_type_by_id(self, id: str) -> Optional['_types.Type']: """ @@ -6828,7 +6834,7 @@ class BinaryView: obj = core.BNGetAnalysisTypeById(self.handle, id) if not obj: return None - return _types.Type.create(core.BNNewTypeReference(obj), platform=self.platform) + return _types.Type.create(obj, platform=self.platform) def get_type_name_by_id(self, id: str) -> Optional['_types.QualifiedName']: """ @@ -7070,7 +7076,7 @@ class BinaryView: ) if handle is None: return None - return _types.Type.create(core.BNNewTypeReference(handle), platform=self.platform) + return _types.Type.create(handle, platform=self.platform) def import_library_object(self, name: str, lib: Optional[typelibrary.TypeLibrary] = None) -> Optional['_types.Type']: """ @@ -7101,7 +7107,7 @@ class BinaryView: ) if handle is None: return None - return _types.Type.create(core.BNNewTypeReference(handle), platform=self.platform) + return _types.Type.create(handle, platform=self.platform) def export_type_to_library(self, lib: typelibrary.TypeLibrary, name: Optional[str], type_obj: StringOrType) -> None: """ diff --git a/python/debuginfo.py b/python/debuginfo.py index f2c1c51f..a8307cae 100644 --- a/python/debuginfo.py +++ b/python/debuginfo.py @@ -370,7 +370,7 @@ class DebugInfo(object): def get_type_by_name(self, parser_name: str, name: str) -> Optional[_types.Type]: result = core.BNGetDebugTypeByName(self.handle, parser_name, name) if result is not None: - return _types.Type(core.BNNewTypeReference(result)) + return _types.Type(result) return None def get_data_variable_by_name(self, parser_name: str, name: str) -> Optional[Tuple[int, _types.Type]]: diff --git a/python/demangle.py b/python/demangle.py index d570fb78..ce57b601 100644 --- a/python/demangle.py +++ b/python/demangle.py @@ -89,7 +89,9 @@ def demangle_ms(archOrPlatform:Union[Architecture, Platform], mangled_name:str, for i in range(outSize.value): names.append(outName[i].decode('utf8')) # type: ignore core.BNFreeDemangledName(ctypes.byref(outName), outSize.value) - return (types.Type.create(core.BNNewTypeReference(handle)), names) + if not handle: + return (None, names) + return (types.Type.create(handle), names) return (None, mangled_name) @@ -126,7 +128,7 @@ def demangle_gnu3(arch, mangled_name, options=None): core.BNFreeDemangledName(ctypes.byref(outName), outSize.value) if not handle: return (None, names) - return (types.Type.create(core.BNNewTypeReference(handle)), names) + return (types.Type.create(handle), names) return (None, mangled_name) diff --git a/python/function.py b/python/function.py index c35d5650..7511b809 100644 --- a/python/function.py +++ b/python/function.py @@ -1094,7 +1094,7 @@ class Function: if not result.type: return None return types.Type.create( - core.BNNewTypeReference(result.type), platform=self.platform, confidence=result.confidence + result.type, platform=self.platform, confidence=result.confidence ) @return_type.setter @@ -2982,7 +2982,7 @@ class Function: if not result.type: return None platform = self.platform - return types.Type.create(core.BNNewTypeReference(result.type), platform=platform, confidence=result.confidence) + return types.Type.create(result.type, platform=platform, confidence=result.confidence) def get_call_stack_adjustment( self, addr: int, arch: Optional['architecture.Architecture'] = None diff --git a/python/highlevelil.py b/python/highlevelil.py index 43a5c68e..8c84a646 100644 --- a/python/highlevelil.py +++ b/python/highlevelil.py @@ -643,7 +643,7 @@ class HighLevelILInstruction(BaseILInstruction): if self.function.source_function: platform = self.function.source_function.platform return types.Type.create( - core.BNNewTypeReference(result.type), platform=platform, confidence=result.confidence + result.type, platform=platform, confidence=result.confidence ) return None @@ -2639,7 +2639,7 @@ class HighLevelILFunction: if self.source_function: platform = self.source_function.platform return types.Type.create( - core.BNNewTypeReference(result.type), platform=platform, confidence=result.confidence + result.type, platform=platform, confidence=result.confidence ) return None diff --git a/python/mediumlevelil.py b/python/mediumlevelil.py index c448ee9b..68cddcb8 100644 --- a/python/mediumlevelil.py +++ b/python/mediumlevelil.py @@ -576,7 +576,7 @@ class MediumLevelILInstruction(BaseILInstruction): if self.function.source_function: platform = self.function.source_function.platform return types.Type.create( - core.BNNewTypeReference(result.type), platform=platform, confidence=result.confidence + result.type, platform=platform, confidence=result.confidence ) return None @@ -3343,7 +3343,7 @@ class MediumLevelILFunction: if self.source_function: platform = self.source_function.platform return types.Type.create( - core.BNNewTypeReference(result.type), platform=platform, confidence=result.confidence + result.type, platform=platform, confidence=result.confidence ) return None diff --git a/python/platform.py b/python/platform.py index b97b5ab3..ae124080 100644 --- a/python/platform.py +++ b/python/platform.py @@ -364,21 +364,21 @@ class Platform(metaclass=_PlatformMetaClass): obj = core.BNGetPlatformTypeByName(self.handle, name) if not obj: return None - return types.Type.create(core.BNNewTypeReference(obj), platform=self) + return types.Type.create(obj, platform=self) def get_variable_by_name(self, name): name = types.QualifiedName(name)._to_core_struct() obj = core.BNGetPlatformVariableByName(self.handle, name) if not obj: return None - return types.Type.create(core.BNNewTypeReference(obj), platform=self) + return types.Type.create(obj, platform=self) def get_function_by_name(self, name, exactMatch=False): name = types.QualifiedName(name)._to_core_struct() obj = core.BNGetPlatformFunctionByName(self.handle, name, exactMatch) if not obj: return None - return types.Type.create(core.BNNewTypeReference(obj), platform=self) + return types.Type.create(obj, platform=self) def get_system_call_name(self, number): return core.BNGetPlatformSystemCallName(self.handle, number) @@ -387,7 +387,7 @@ class Platform(metaclass=_PlatformMetaClass): obj = core.BNGetPlatformSystemCallType(self.handle, number) if not obj: return None - return types.Type.create(core.BNNewTypeReference(obj), platform=self) + return types.Type.create(obj, platform=self) def generate_auto_platform_type_id(self, name): name = types.QualifiedName(name)._to_core_struct() diff --git a/python/typelibrary.py b/python/typelibrary.py index e844d419..f13fbb1a 100644 --- a/python/typelibrary.py +++ b/python/typelibrary.py @@ -333,7 +333,7 @@ class TypeLibrary: t = core.BNGetTypeLibraryNamedObject(self.handle, name._to_core_struct()) if t is None: return None - return types.Type.create(core.BNNewTypeReference(t)) + return types.Type.create(t) def get_named_type(self, name: Union[str, types.QualifiedName]) -> Optional[types.Type]: """ @@ -349,7 +349,7 @@ class TypeLibrary: t = core.BNGetTypeLibraryNamedType(self.handle, name._to_core_struct()) if t is None: return None - return types.Type.create(core.BNNewTypeReference(t)) + return types.Type.create(t) @property def named_objects(self) -> Dict[types.QualifiedName, types.Type]: diff --git a/python/types.py b/python/types.py index e77a4499..c29f8d03 100644 --- a/python/types.py +++ b/python/types.py @@ -753,9 +753,7 @@ class TypeBuilder: def child(self) -> 'Type': type_conf = core.BNGetTypeBuilderChildType(self._handle) assert type_conf is not None, "core.BNGetTypeBuilderChildType returned None" - handle = core.BNNewTypeReference(type_conf.type) - assert handle is not None, "core.BNNewTypeReference returned None" - return Type.create(handle, self.platform, type_conf.confidence) + return Type.create(type_conf.type, self.platform, type_conf.confidence) @child.setter def child(self, value: SomeType) -> None: @@ -1948,13 +1946,11 @@ class Type: def with_replaced_structure(self, from_struct, to_struct): handle = core.BNTypeWithReplacedStructure(self._handle, from_struct.handle, to_struct.handle) - ref_handle = core.BNNewTypeReference(handle) - return Type.create(handle=ref_handle) + return Type.create(handle) def with_replaced_enumeration(self, from_enum, to_enum): handle = core.BNTypeWithReplacedEnumeration(self._handle, from_enum.handle, to_enum.handle) - ref_handle = core.BNNewTypeReference(handle) - return Type.create(handle=ref_handle) + return Type.create(handle) def with_replaced_named_type_reference(self, from_ref, to_ref): return Type.create( @@ -2180,7 +2176,7 @@ class VoidType(Type): def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'VoidType': core_void = core.BNCreateVoidType() assert core_void is not None, "core.BNCreateVoidType returned None" - return cls(core.BNNewTypeReference(core_void), platform, confidence) + return cls(core_void, platform, confidence) class BoolType(Type): @@ -2188,7 +2184,7 @@ class BoolType(Type): def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'BoolType': handle = core.BNCreateBoolType() assert handle is not None, "core.BNCreateBoolType returned None" - return cls(core.BNNewTypeReference(handle), platform, confidence) + return cls(handle, platform, confidence) class IntegerType(Type): @@ -2203,7 +2199,7 @@ class IntegerType(Type): _sign = BoolWithConfidence.get_core_struct(sign) handle = core.BNCreateIntegerType(width, _sign, alternate_name) assert handle is not None, "core.BNCreateIntegerType returned None" - return cls(core.BNNewTypeReference(handle), platform, confidence) + return cls(handle, platform, confidence) @property def signed(self) -> BoolWithConfidence: @@ -2216,7 +2212,8 @@ class CharType(IntegerType): def create( cls, altname: str = "char", platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence ) -> 'CharType': - return cls(IntegerType.create(1, True, altname).handle, platform, confidence) + result = IntegerType.create(1, True, altname) + return cls(core.BNNewTypeReference(result.handle), platform, confidence) class FloatType(Type): @@ -2232,7 +2229,7 @@ class FloatType(Type): """ core_float = core.BNCreateFloatType(width, altname) assert core_float is not None, "core.BNCreateFloatType returned None" - return cls(core.BNNewTypeReference(core_float), platform, confidence) + return cls(core_float, platform, confidence) class StructureType(Type): @@ -2256,7 +2253,7 @@ class StructureType(Type): assert core_struct is not None, "core.BNFinalizeStructureBuilder returned None" core_type = core.BNCreateStructureType(core_struct) assert core_type is not None, "core.BNCreateStructureType returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) def mutable_copy(self) -> 'StructureBuilder': type_builder_handle = core.BNCreateTypeBuilderFromType(self._handle) @@ -2430,7 +2427,7 @@ class EnumerationType(IntegerType): core_type = core.BNCreateEnumerationTypeOfWidth(core_enum, _width, BoolWithConfidence.get_core_struct(sign)) assert core_type is not None, "core.BNCreateEnumerationTypeOfWidth returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) def mutable_copy(self) -> 'EnumerationBuilder': type_builder_handle = core.BNCreateTypeBuilderFromType(self._handle) @@ -2496,7 +2493,7 @@ class PointerType(Type): width, type_conf, _const._to_core_struct(), _volatile._to_core_struct(), ref_type ) assert core_type is not None, "core.BNCreatePointerTypeOfWidth returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) def origin(self, bv: Optional['binaryview.BinaryView']) -> Optional[Tuple['QualifiedName', int]]: ntr_handle = core.BNGetTypeNamedTypeReference(self._handle) @@ -2515,7 +2512,7 @@ class PointerType(Type): """Target (read-only)""" result = core.BNGetChildType(self._handle) assert result is not None, "core.BNGetChildType returned None" - return Type.create(core.BNNewTypeReference(result.type), self._platform, result.confidence) + return Type.create(result.type, self._platform, result.confidence) @property def children(self) -> List[Type]: @@ -2530,7 +2527,7 @@ class ArrayType(Type): type_conf = element_type._to_core_struct() core_array = core.BNCreateArrayType(type_conf, count) assert core_array is not None, "core.BNCreateArrayType returned None" - return cls(core.BNNewTypeReference(core_array)) + return cls(core_array) @property def count(self): @@ -2541,7 +2538,7 @@ class ArrayType(Type): def element_type(self) -> Type: result = core.BNGetChildType(self._handle) assert result is not None, "core.BNGetChildType returned None" - return Type.create(core.BNNewTypeReference(result.type), self._platform, result.confidence) + return Type.create(result.type, self._platform, result.confidence) @property def children(self) -> List[Type]: @@ -2616,7 +2613,7 @@ class FunctionType(Type): ) assert func_type is not None, f"core.BNCreateFunctionType returned None {ret_conf} {conv_conf} {param_buf} {_variable_arguments} {_stack_adjust}" - return cls(core.BNNewTypeReference(func_type), platform, confidence) + return cls(func_type, platform, confidence) @property def stack_adjustment(self) -> OffsetWithConfidence: @@ -2630,7 +2627,7 @@ class FunctionType(Type): result = core.BNGetChildType(self._handle) if result is None: return Type.void() - return Type.create(core.BNNewTypeReference(result.type), platform=self._platform, confidence=result.confidence) + return Type.create(result.type, platform=self._platform, confidence=result.confidence) @property def calling_convention(self) -> Optional[callingconvention.CallingConvention]: @@ -2722,7 +2719,7 @@ class NamedTypeReferenceType(Type): _volatile = BoolWithConfidence.get_core_struct(volatile) core_type = core.BNCreateNamedTypeReference(core_ntr, width, alignment, _const, _volatile) assert core_type is not None, "core.BNCreateNamedTypeReference returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) @classmethod def create_from_type( @@ -2746,7 +2743,7 @@ class NamedTypeReferenceType(Type): _name = QualifiedName(name)._to_core_struct() core_type = core.BNCreateNamedTypeReferenceFromType(view.handle, _name) assert core_type is not None, "core.BNCreateNamedTypeReferenceFromType returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) def __del__(self): if core is not None: @@ -2841,7 +2838,7 @@ class WideCharType(Type): """ core_type = core.BNCreateWideCharType(width, alternate_name) assert core_type is not None, "core.BNCreateWideCharType returned None" - return cls(core.BNNewTypeReference(core_type), platform, confidence) + return cls(core_type, platform, confidence) Types = { diff --git a/python/variable.py b/python/variable.py index 14929557..ee0d93a4 100644 --- a/python/variable.py +++ b/python/variable.py @@ -728,9 +728,7 @@ class Variable(CoreVariable): def type(self) -> Optional['binaryninja.types.Type']: var_type_conf = core.BNGetVariableType(self._function.handle, self.to_BNVariable()) if var_type_conf.type: - ref_handle = core.BNNewTypeReference(var_type_conf.type) - assert ref_handle is not None, f"core.BNNewTypeReference returned None {var_type_conf} {var_type_conf.type}" - return binaryninja.types.Type.create(ref_handle, self._function.platform, var_type_conf.confidence) + return binaryninja.types.Type.create(var_type_conf.type, self._function.platform, var_type_conf.confidence) return None @type.setter @@ -543,7 +543,7 @@ Confidence<Ref<Type>> Type::GetChildType() const { BNTypeWithConfidence type = BNGetChildType(m_object); if (type.type) - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(type.type)), type.confidence); + return Confidence<Ref<Type>>(new Type(type.type), type.confidence); return nullptr; } @@ -776,7 +776,7 @@ Ref<Type> Type::NamedType(const string& id, const QualifiedName& name, Type* typ BNQualifiedName nameObj = name.GetAPIObject(); BNType* coreObj = BNCreateNamedTypeReferenceFromTypeAndId(id.c_str(), &nameObj, type ? type->GetObject() : nullptr); QualifiedName::FreeAPIObject(&nameObj); - return coreObj ? new Type(BNNewTypeReference(coreObj)) : nullptr; + return coreObj ? new Type(coreObj) : nullptr; } @@ -785,7 +785,7 @@ Ref<Type> Type::NamedType(BinaryView* view, const QualifiedName& name) BNQualifiedName nameObj = name.GetAPIObject(); BNType* coreObj = BNCreateNamedTypeReferenceFromType(view->GetObject(), &nameObj); QualifiedName::FreeAPIObject(&nameObj); - return coreObj ? new Type(BNNewTypeReference(coreObj)) : nullptr; + return coreObj ? new Type(coreObj) : nullptr; } @@ -1085,7 +1085,7 @@ Ref<Type> Type::WithReplacedStructure(Structure* from, Structure* to) BNFreeType(result); return this; } - return new Type(BNNewTypeReference(result)); + return new Type(result); } @@ -1097,7 +1097,7 @@ Ref<Type> Type::WithReplacedEnumeration(Enumeration* from, Enumeration* to) BNFreeType(result); return this; } - return new Type(BNNewTypeReference(result)); + return new Type(result); } @@ -1109,7 +1109,7 @@ Ref<Type> Type::WithReplacedNamedTypeReference(NamedTypeReference* from, NamedTy BNFreeType(result); return this; } - return new Type(BNNewTypeReference(result)); + return new Type(result); } @@ -1328,7 +1328,7 @@ Confidence<Ref<Type>> TypeBuilder::GetChildType() const { BNTypeWithConfidence type = BNGetTypeBuilderChildType(m_object); if (type.type) - return Confidence<Ref<Type>>(new Type(BNNewTypeReference(type.type)), type.confidence); + return Confidence<Ref<Type>>(new Type(type.type), type.confidence); return nullptr; } |
