summaryrefslogtreecommitdiff
path: root/python/platform.py
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2020-05-07 00:11:15 -0400
committerJordan Wiens <jordan@psifertex.com>2020-05-07 00:11:15 -0400
commitfab65c3339608f5e0b7686965d740f0952aac05c (patch)
treecd3196a34f186b56a5748f267baba241a75bb872 /python/platform.py
parentc0ec47186980e24bf9273c889599799e59b42ac7 (diff)
better guard rails for some python apis
Diffstat (limited to 'python/platform.py')
-rw-r--r--python/platform.py5
1 files changed, 5 insertions, 0 deletions
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': <type: int32_t(int32_t x)>}}, '')
>>>
"""
+ 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')