From fab65c3339608f5e0b7686965d740f0952aac05c Mon Sep 17 00:00:00 2001 From: Jordan Wiens Date: Thu, 7 May 2020 00:11:15 -0400 Subject: better guard rails for some python apis --- python/binaryview.py | 2 ++ python/platform.py | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'python') diff --git a/python/binaryview.py b/python/binaryview.py index ff9b400f..0f747232 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -4577,6 +4577,8 @@ class BinaryView(object): (, 'foo') >>> """ + if not isinstance(text, str): + raise AttributeError("Text must be a string") result = core.BNQualifiedNameAndType() errors = ctypes.c_char_p() if not core.BNParseTypeString(self.handle, text, result, errors): diff --git a/python/platform.py b/python/platform.py index 9059e1c4..0fef566f 100644 --- a/python/platform.py +++ b/python/platform.py @@ -28,6 +28,7 @@ from binaryninja import types # 2-3 compatibility from binaryninja import range from binaryninja import with_metaclass +import os class _PlatformMetaClass(type): @@ -401,6 +402,8 @@ class Platform(with_metaclass(_PlatformMetaClass, object)): if filename is None: filename = "input" + if not isinstance(source, str): + raise AttributeError("Source must be a string") dir_buf = (ctypes.c_char_p * len(include_dirs))() for i in range(0, len(include_dirs)): dir_buf[i] = include_dirs[i].encode('charmap') @@ -448,6 +451,8 @@ class Platform(with_metaclass(_PlatformMetaClass, object)): {'bar': }}, '') >>> """ + if not (isinstance(filename, str) and os.path.isfile(filename) and os.access(filename, os.R_OK)): + raise AttributeError("File {} doesn't exist or isn't readable".format(filename)) dir_buf = (ctypes.c_char_p * len(include_dirs))() for i in range(0, len(include_dirs)): dir_buf[i] = include_dirs[i].encode('charmap') -- cgit v1.3.1