summaryrefslogtreecommitdiff
path: root/python/databuffer.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-01-18 09:48:47 -0500
committerPeter LaFosse <peter@vector35.com>2022-01-19 10:53:46 -0500
commit6f5fd10c589cd7bf525d91a60a0dc66bc4f93e25 (patch)
treecb5d1f10dbc65bd5bd96e5b7eb6551190f8783d7 /python/databuffer.py
parent12b55e3265ea0538b911be910b8300af807c4695 (diff)
Many type check fixes
Diffstat (limited to 'python/databuffer.py')
-rw-r--r--python/databuffer.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/python/databuffer.py b/python/databuffer.py
index 9346f660..fea7bb82 100644
--- a/python/databuffer.py
+++ b/python/databuffer.py
@@ -26,7 +26,7 @@ from . import _binaryninjacore as core
DataBufferInputType = Union[str, bytes, 'DataBuffer', int]
class DataBuffer:
- def __init__(self, contents:bytes=b"", handle=None):
+ def __init__(self, contents:Union[str, bytes, 'DataBuffer', int]=b"", handle=None):
if handle is not None:
self.handle = core.handle_of_type(handle, core.BNDataBuffer)
elif isinstance(contents, int):
@@ -36,6 +36,7 @@ class DataBuffer:
elif isinstance(contents, str):
self.handle = core.BNCreateDataBuffer(contents.encode("utf-8"), len(contents.encode("utf-8")))
else:
+ assert isinstance(contents, bytes)
self.handle = core.BNCreateDataBuffer(contents, len(contents))
def __del__(self):
@@ -67,10 +68,10 @@ class DataBuffer:
return bytes(self)[i]
elif i < 0:
if i >= -len(self):
- return core.BNGetDataBufferByte(self.handle, int(len(self) + i))
+ return core.BNGetDataBufferByte(self.handle, int(len(self) + i)).to_bytes(1, "little")
raise IndexError("index out of range")
elif i < len(self):
- return core.BNGetDataBufferByte(self.handle, int(i))
+ return core.BNGetDataBufferByte(self.handle, int(i)).to_bytes(1, "little")
else:
raise IndexError("index out of range")
@@ -139,13 +140,13 @@ class DataBuffer:
return core.BNDataBufferToEscapedString(self.handle)
def unescape(self) -> 'DataBuffer':
- return DataBuffer(handle=core.BNDecodeEscapedString(bytes(self)))
+ return DataBuffer(handle=core.BNDecodeEscapedString(str(self)))
def base64_encode(self) -> str:
return core.BNDataBufferToBase64(self.handle)
def base64_decode(self) -> 'DataBuffer':
- return DataBuffer(handle = core.BNDecodeBase64(bytes(self)))
+ return DataBuffer(handle = core.BNDecodeBase64(str(self)))
def zlib_compress(self) -> Optional['DataBuffer']:
buf = core.BNZlibCompress(self.handle)