Skip to content

Commit 2268688

Browse files
authored
Merge pull request #126 from fosslight/spdx
Support spdx
2 parents 84200ac + 8df2994 commit 2268688

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ py-tlsh
88
pytz
99
XlsxWriter
1010
PyYAML
11-
fosslight_util>=2.0.0
11+
fosslight_util>=2.1.0
1212
dependency-check

src/fosslight_binary/_binary.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ def __init__(self, value):
2424
super().__init__("")
2525
self.exclude = False
2626
self.source_name_or_path = ""
27-
self.checksum = TLSH_CHECKSUM_NULL
2827
self.tlsh = TLSH_CHECKSUM_NULL
2928
self.vulnerability_items = []
3029
self.binary_name_without_path = ""

src/fosslight_binary/binary_analysis.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# SPDX-License-Identifier: Apache-2.0
66
import os
77
import sys
8+
import platform
89
from datetime import datetime
910
from binaryornot.check import is_binary
1011
import magic
@@ -13,7 +14,7 @@
1314
import stat
1415
from fosslight_util.set_log import init_log
1516
import fosslight_util.constant as constant
16-
from fosslight_util.output_format import check_output_formats, write_output_file
17+
from fosslight_util.output_format import check_output_formats_v2, write_output_file
1718
from ._binary_dao import get_oss_info_from_db
1819
from ._binary import BinaryItem, TLSH_CHECKSUM_NULL
1920
from ._jar_analysis import analyze_jar_file, merge_binary_list
@@ -83,7 +84,7 @@ def init(path_to_find_bin, output_file_name, formats, path_to_exclude=[]):
8384
if not path_to_find_bin.endswith(os.path.sep):
8485
_root_path += os.path.sep
8586

86-
success, msg, output_path, output_files, output_extensions = check_output_formats(output_file_name, formats)
87+
success, msg, output_path, output_files, output_extensions, formats = check_output_formats_v2(output_file_name, formats)
8788

8889
if success:
8990
if output_path == "":
@@ -93,12 +94,33 @@ def init(path_to_find_bin, output_file_name, formats, path_to_exclude=[]):
9394

9495
while len(output_files) < len(output_extensions):
9596
output_files.append(None)
97+
to_remove = [] # elements of spdx format on windows that should be removed
9698
for i, output_extension in enumerate(output_extensions):
9799
if output_files[i] is None or output_files[i] == "":
98-
if output_extension == _json_ext:
99-
output_files[i] = f"fosslight_opossum_bin_{_start_time}"
100+
if formats:
101+
if formats[i].startswith('spdx'):
102+
if platform.system() != 'Windows':
103+
output_files[i] = f"fosslight_spdx_bin_{_start_time}"
104+
else:
105+
logger.warning('spdx format is not supported on Windows. Please remove spdx from format.')
106+
to_remove.append(i)
107+
else:
108+
if output_extension == _json_ext:
109+
output_files[i] = f"fosslight_opossum_bin_{_start_time}"
110+
else:
111+
output_files[i] = f"fosslight_report_bin_{_start_time}"
100112
else:
101-
output_files[i] = f"fosslight_report_bin_{_start_time}"
113+
if output_extension == _json_ext:
114+
output_files[i] = f"fosslight_opossum_bin_{_start_time}"
115+
else:
116+
output_files[i] = f"fosslight_report_bin_{_start_time}"
117+
for index in sorted(to_remove, reverse=True):
118+
# remove elements of spdx format on windows
119+
del output_files[index]
120+
del output_extensions[index]
121+
del formats[index]
122+
if len(output_extensions) < 1:
123+
sys.exit(0)
102124

103125
combined_paths_and_files = [os.path.join(output_path, file) for file in output_files]
104126
else:
@@ -221,8 +243,9 @@ def find_binaries(path_to_find_bin, output_dir, formats, dburl="", simple_mode=F
221243
scan_item.set_cover_comment("(No binary detected.) ")
222244
scan_item.set_cover_comment(f"Total number of files: {total_file_cnt}")
223245

224-
for combined_path_and_file, output_extension in zip(result_reports, output_extensions):
225-
results.append(write_output_file(combined_path_and_file, output_extension, scan_item, BIN_EXT_HEADER, HIDE_HEADER))
246+
for combined_path_and_file, output_extension, output_format in zip(result_reports, output_extensions, formats):
247+
results.append(write_output_file(combined_path_and_file, output_extension, scan_item,
248+
BIN_EXT_HEADER, HIDE_HEADER, output_format))
226249

227250
except Exception as ex:
228251
error_occured(error_msg=str(ex), exit=False)

src/fosslight_binary/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def main():
1818
path_to_find_bin = ""
1919
path_to_exclude = []
2020
output_dir = ""
21-
format = ""
21+
format = []
2222
db_url = ""
2323
simple_mode = False
2424
correct_mode = True

0 commit comments

Comments
 (0)