Skip to content

Commit db6d95e

Browse files
committed
Fix lost type attributes in TypeBulider Python API
1 parent b638ca2 commit db6d95e

File tree

2 files changed

+10
-31
lines changed

2 files changed

+10
-31
lines changed

binaryninjacore.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
// Current ABI version for linking to the core. This is incremented any time
3838
// there are changes to the API that affect linking, including new functions,
3939
// new types, or modifications to existing functions or types.
40-
#define BN_CURRENT_CORE_ABI_VERSION 141
40+
#define BN_CURRENT_CORE_ABI_VERSION 142
4141

4242
// Minimum ABI version that is supported for loading of plugins. Plugins that
4343
// are linked to an ABI version less than this will not be able to load and
@@ -7003,6 +7003,7 @@ extern "C"
70037003
BINARYNINJACOREAPI BNNamedTypeReferenceClass BNGetTypeReferenceBuilderClass(BNNamedTypeReferenceBuilder* nt);
70047004
BINARYNINJACOREAPI char* BNGetTypeReferenceBuilderId(BNNamedTypeReferenceBuilder* nt);
70057005
BINARYNINJACOREAPI BNQualifiedName BNGetTypeReferenceBuilderName(BNNamedTypeReferenceBuilder* nt);
7006+
BINARYNINJACOREAPI void BNSetNamedTypeReferenceBuilder(BNTypeBuilder* type, BNNamedTypeReferenceBuilder* nt);
70067007

70077008
BINARYNINJACOREAPI BNStructureBuilder* BNCreateStructureBuilder(void);
70087009
BINARYNINJACOREAPI BNStructureBuilder* BNCreateStructureBuilderWithOptions(BNStructureVariant type, bool packed);
@@ -7012,6 +7013,7 @@ extern "C"
70127013
BINARYNINJACOREAPI BNStructure* BNNewStructureReference(BNStructure* s);
70137014
BINARYNINJACOREAPI void BNFreeStructure(BNStructure* s);
70147015
BINARYNINJACOREAPI void BNFreeStructureBuilder(BNStructureBuilder* s);
7016+
BINARYNINJACOREAPI void BNSetStructureBuilder(BNTypeBuilder* type, BNStructureBuilder* s);
70157017

70167018
BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberByName(BNStructure* s, const char* name);
70177019
BINARYNINJACOREAPI BNStructureMember* BNGetStructureMemberAtOffset(BNStructure* s, int64_t offset, size_t* idx);
@@ -7083,6 +7085,7 @@ extern "C"
70837085
BINARYNINJACOREAPI BNEnumeration* BNNewEnumerationReference(BNEnumeration* e);
70847086
BINARYNINJACOREAPI void BNFreeEnumeration(BNEnumeration* e);
70857087
BINARYNINJACOREAPI void BNFreeEnumerationBuilder(BNEnumerationBuilder* e);
7088+
BINARYNINJACOREAPI void BNSetEnumerationBuilder(BNTypeBuilder* type, BNEnumerationBuilder* e);
70867089

70877090
BINARYNINJACOREAPI BNEnumerationMember* BNGetEnumerationMembers(BNEnumeration* e, size_t* count);
70887091
BINARYNINJACOREAPI BNInstructionTextToken* BNGetEnumerationTokensForValue(BNEnumeration* e, uint64_t value,

python/types.py

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -621,9 +621,9 @@ def immutable_copy(self):
621621
TypeClass.IntegerTypeClass: IntegerType, TypeClass.FloatTypeClass: FloatType,
622622
TypeClass.PointerTypeClass: PointerType, TypeClass.ArrayTypeClass: ArrayType,
623623
TypeClass.FunctionTypeClass: FunctionType, TypeClass.WideCharTypeClass: WideCharType,
624-
# TypeClass.StructureTypeClass:StructureType,
625-
# TypeClass.EnumerationTypeClass:EnumerationType,
626-
# TypeClass.NamedTypeReferenceClass:NamedTypeReferenceType,
624+
TypeClass.StructureTypeClass: StructureType,
625+
TypeClass.EnumerationTypeClass: EnumerationType,
626+
TypeClass.NamedTypeReferenceClass: NamedTypeReferenceType,
627627
}
628628
return Types[self.type_class](self.finalized, self.platform, self.confidence)
629629

@@ -1450,14 +1450,6 @@ def create(
14501450
assert type_builder_handle is not None, "core.BNCreateStructureTypeBuilderWithBuilder returned None"
14511451
return cls(type_builder_handle, structure_builder_handle, platform, confidence)
14521452

1453-
def immutable_copy(self) -> 'StructureType':
1454-
assert self.builder_handle is not None
1455-
structure_handle = core.BNFinalizeStructureBuilder(self.builder_handle)
1456-
assert structure_handle is not None, "core.BNFinalizeStructureBuilder returned None"
1457-
handle = core.BNCreateStructureType(structure_handle)
1458-
assert handle is not None, "core.BNCreateStructureType returned None"
1459-
return StructureType(handle, self.platform, self.confidence)
1460-
14611453
@property
14621454
def members(self) -> List[StructureMember]:
14631455
"""Structure member list (read-only)"""
@@ -1683,14 +1675,6 @@ def create(
16831675
assert type_builder_handle is not None, "core.BNCreateEnumerationTypeBuilderWithBuilder returned None"
16841676
return cls(type_builder_handle, enum_builder_handle, platform, confidence)
16851677

1686-
def immutable_copy(self) -> 'EnumerationType':
1687-
enum_handle = core.BNFinalizeEnumerationBuilder(self.enum_builder_handle)
1688-
assert enum_handle is not None, "core.BNFinalizeEnumerationBuilder returned None"
1689-
_signed = BoolWithConfidence.get_core_struct(self.signed)
1690-
handle = core.BNCreateEnumerationType(None, enum_handle, self.width, _signed)
1691-
assert handle is not None, "core.BNCreateEnumerationType returned None"
1692-
return EnumerationType(handle, self.platform, self.confidence)
1693-
16941678
@property
16951679
def members(self) -> List[EnumerationMember]:
16961680
"""Enumeration member list (read-only)"""
@@ -1808,17 +1792,6 @@ def create(
18081792
assert type_builder_handle is not None, "core.BNCreateNamedTypeReferenceBuilderWithBuilder returned None"
18091793
return cls(type_builder_handle, ntr_builder_handle, platform, confidence)
18101794

1811-
def immutable_copy(self) -> 'NamedTypeReferenceType':
1812-
ntr_handle = core.BNFinalizeNamedTypeReferenceBuilder(self.ntr_builder_handle)
1813-
assert ntr_handle is not None, "core.BNFinalizeEnumerationBuilder returned None"
1814-
1815-
_const = BoolWithConfidence.get_core_struct(self.const)
1816-
_volatile = BoolWithConfidence.get_core_struct(self.volatile)
1817-
1818-
handle = core.BNCreateNamedTypeReference(ntr_handle, self.width, self.alignment, _const, _volatile)
1819-
assert handle is not None, "core.BNCreateEnumerationType returned None"
1820-
return NamedTypeReferenceType(handle, self.platform, self.confidence)
1821-
18221795
@property
18231796
def name(self) -> QualifiedName:
18241797
return QualifiedName._from_core_struct(core.BNGetTypeReferenceBuilderName(self.ntr_builder_handle))
@@ -2603,6 +2576,7 @@ def mutable_copy(self) -> 'StructureBuilder':
26032576
assert structure_handle is not None, "core.BNGetTypeStructure returned None"
26042577
structure_builder_handle = core.BNCreateStructureBuilderFromStructure(structure_handle)
26052578
assert structure_builder_handle is not None, "core.BNCreateStructureBuilderFromStructure returned None"
2579+
core.BNSetStructureBuilder(type_builder_handle, structure_builder_handle)
26062580
return StructureBuilder(type_builder_handle, structure_builder_handle, self.platform, self.confidence)
26072581

26082582
@classmethod
@@ -2912,6 +2886,7 @@ def mutable_copy(self) -> 'EnumerationBuilder':
29122886
assert enumeration_handle is not None, "core.BNGetTypeEnumeration returned None"
29132887
enumeration_builder_handle = core.BNCreateEnumerationBuilderFromEnumeration(enumeration_handle)
29142888
assert enumeration_builder_handle is not None, "core.BNCreateEnumerationBuilderFromEnumeration returned None"
2889+
core.BNSetEnumerationBuilder(type_builder_handle, enumeration_builder_handle)
29152890
return EnumerationBuilder(type_builder_handle, enumeration_builder_handle, self.platform, self.confidence)
29162891

29172892
def generate_named_type_reference(self, guid: str, name: QualifiedNameType):
@@ -3253,6 +3228,7 @@ def mutable_copy(self):
32533228
self.named_type_class, self.type_id, self.name._to_core_struct()
32543229
)
32553230
assert ntr_builder_handle is not None, "core.BNCreateNamedTypeBuilder returned None"
3231+
core.BNSetNamedTypeReferenceBuilder(type_builder_handle, ntr_builder_handle)
32563232
return NamedTypeReferenceBuilder(type_builder_handle, ntr_builder_handle, self.platform, self.confidence)
32573233

32583234
@classmethod

0 commit comments

Comments
 (0)