From 64c71d8e6d5bb865f0aa3431ac576ea7cfef3203 Mon Sep 17 00:00:00 2001 From: doomedraven Date: Tue, 8 Dec 2020 09:50:00 +0100 Subject: [PATCH] fix is_ordinal IndexError ``` Traceback (most recent call last): File "/opt/CAPE/utils/../lib/cuckoo/common/cape_utils.py", line 223, in flare_capa_details capabilities, counts = capa.main.find_capabilities(rules, extractor, disable_progress=True) File "/usr/local/lib/python2.7/dist-packages/capa/main.py", line 116, in find_capabilities function_matches, bb_matches, feature_count = find_function_capabilities(ruleset, extractor, f) File "/usr/local/lib/python2.7/dist-packages/capa/main.py", line 68, in find_function_capabilities for feature, va in extractor.extract_insn_features(f, bb, insn): File "/usr/local/lib/python2.7/dist-packages/capa/features/extractors/viv/__init__.py", line 84, in extract_insn_features for feature, va in capa.features.extractors.viv.insn.extract_features(f, bb, insn): File "/usr/local/lib/python2.7/dist-packages/capa/features/extractors/viv/insn.py", line 599, in extract_features for feature, va in insn_handler(f, bb, insn): File "/usr/local/lib/python2.7/dist-packages/capa/features/extractors/viv/insn.py", line 93, in extract_insn_api_features for name in capa.features.extractors.helpers.generate_symbols(dll, symbol): File "/usr/local/lib/python2.7/dist-packages/capa/features/extractors/helpers.py", line 61, in generate_symbols if not is_ordinal(symbol): File "/usr/local/lib/python2.7/dist-packages/capa/features/extractors/helpers.py", line 45, in is_ordinal return symbol[0] == "#" IndexError: string index out of range ``` --- capa/features/extractors/helpers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/capa/features/extractors/helpers.py b/capa/features/extractors/helpers.py index 7dcacbba..e78be96e 100644 --- a/capa/features/extractors/helpers.py +++ b/capa/features/extractors/helpers.py @@ -42,7 +42,9 @@ def is_ordinal(symbol): """ is the given symbol an ordinal that is prefixed by "#"? """ - return symbol[0] == "#" + if symbol: + return symbol[0] == "#" + return False def generate_symbols(dll, symbol):