diff options
| author | Peter LaFosse <peter@vector35.com> | 2023-03-08 10:45:29 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2023-03-08 10:45:29 -0500 |
| commit | df7db2a41078e8d5cc7c3abe45c86427e36b2e1d (patch) | |
| tree | 893d26c661c153a0335e0e22b7640070e4e494ce /python | |
| parent | 3391e09f5803fd9ab9fdfef1a08a9b1102895257 (diff) | |
Fix improper creation of NTR via Type.registered_name
Diffstat (limited to 'python')
| -rw-r--r-- | python/types.py | 17 |
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 |
