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/platform.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'python/platform.py') 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