diff options
| author | Jordan Wiens <jordan@psifertex.com> | 2020-05-07 00:11:15 -0400 |
|---|---|---|
| committer | Jordan Wiens <jordan@psifertex.com> | 2020-05-07 00:11:15 -0400 |
| commit | fab65c3339608f5e0b7686965d740f0952aac05c (patch) | |
| tree | cd3196a34f186b56a5748f267baba241a75bb872 /python/platform.py | |
| parent | c0ec47186980e24bf9273c889599799e59b42ac7 (diff) | |
better guard rails for some python apis
Diffstat (limited to 'python/platform.py')
| -rw-r--r-- | python/platform.py | 5 |
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') |
