summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2023-03-08 10:45:29 -0500
committerPeter LaFosse <peter@vector35.com>2023-03-08 10:45:29 -0500
commitdf7db2a41078e8d5cc7c3abe45c86427e36b2e1d (patch)
tree893d26c661c153a0335e0e22b7640070e4e494ce /python
parent3391e09f5803fd9ab9fdfef1a08a9b1102895257 (diff)
Fix improper creation of NTR via Type.registered_name
Diffstat (limited to 'python')
-rw-r--r--python/types.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/python/types.py b/python/types.py
index e9e50711..0f6aabc3 100644
--- a/python/types.py
+++ b/python/types.py
@@ -2143,7 +2143,8 @@ class Type:
ntr_handle = core.BNGetRegisteredTypeName(self._handle)
if ntr_handle is None:
return None
- return NamedTypeReferenceType(self._handle, self.platform, self.confidence, ntr_handle)
+ return NamedTypeReferenceType.create_from_handle(ntr_handle, self.alignment, self.width,
+ self.platform, self.confidence, self.const, self.volatile)
@property
def const(self):
@@ -2491,7 +2492,6 @@ class PointerType(Type):
type = type.immutable_copy()
if ref_type is None:
ref_type = ReferenceType.PointerReferenceType
-
type_conf = type._to_core_struct()
core_type = core.BNCreatePointerTypeOfWidth(
width, type_conf, _const._to_core_struct(), _volatile._to_core_struct(), ref_type
@@ -2728,6 +2728,19 @@ class NamedTypeReferenceType(Type):
return cls(core_type, platform, confidence)
@classmethod
+ def create_from_handle(cls, ntr_handle, alignment: int = 0,
+ width: int = 0, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence,
+ const: BoolWithConfidenceType = False, volatile: BoolWithConfidenceType = False
+ ):
+ """Create a NamedTypeReferenceType from a BNNamedTypeReference handle"""
+ assert ntr_handle is not None, "Attempting to create NamedTypeReferenceType from None handle"
+ _const = BoolWithConfidence.get_core_struct(const)
+ _volatile = BoolWithConfidence.get_core_struct(volatile)
+ core_type = core.BNCreateNamedTypeReference(ntr_handle, width, alignment, _const, _volatile)
+ assert core_type is not None, "core.BNCreateNamedTypeReference returned None"
+ return cls(core_type, platform, confidence)
+
+ @classmethod
def create_from_type(
cls, name: QualifiedNameType, type: Optional[Type], guid: Optional[str] = None,
platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence