From c5c5c16ff10c7c7ed4ba3e24f452b47fb4cf4b4b Mon Sep 17 00:00:00 2001 From: chrisr3d Date: Thu, 3 Oct 2019 16:03:30 +0200 Subject: [PATCH] fix: Avoiding errors with uncommon lines - Excluding first from data parsed all lines that are comments or empty - Skipping lines with failing indexes --- misp_modules/modules/import_mod/csvimport.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/misp_modules/modules/import_mod/csvimport.py b/misp_modules/modules/import_mod/csvimport.py index 4766b91..2de1386 100644 --- a/misp_modules/modules/import_mod/csvimport.py +++ b/misp_modules/modules/import_mod/csvimport.py @@ -125,7 +125,10 @@ class CsvParser(): score = self.__get_score() if attribute_indexes: for line in self.data: - base_attribute = self.__score_mapping[score](line, attribute_indexes) + try: + base_attribute = self.__score_mapping[score](line, attribute_indexes) + except IndexError: + continue for index in types_indexes: attribute = {'type': self.header[index], 'value': line[index]} attribute.update(base_attribute) @@ -203,11 +206,11 @@ def __any_mandatory_misp_field(header): def __special_parsing(data, delimiter): - return list(line.split(delimiter) for line in csv.reader(io.TextIOWrapper(io.BytesIO(data.encode()), encoding='utf-8'))) + return list(line.split(delimiter) for line in csv.reader(io.TextIOWrapper(io.BytesIO(data.encode()), encoding='utf-8')) if line and not line.startswith('#')) def __standard_parsing(data): - return list(line for line in csv.reader(io.TextIOWrapper(io.BytesIO(data.encode()), encoding='utf-8'))) + return list(line for line in csv.reader(io.TextIOWrapper(io.BytesIO(data.encode()), encoding='utf-8')) if line and not line[0].startswith('#')) def handler(q=False):