Skip to content

Commit ffa4f24

Browse files
committed
Skip jar analysis when Java <11
1 parent 3eb2ae8 commit ffa4f24

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

src/fosslight_binary/binary_analysis.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import hashlib
2626
import tlsh
2727
from io import open
28+
import subprocess
29+
import re
2830

2931
PKG_NAME = "fosslight_binary"
3032
logger = logging.getLogger(constant.LOGGER_NAME)
@@ -249,12 +251,19 @@ def find_binaries(path_to_find_bin, output_dir, formats, dburl="", simple_mode=F
249251
try:
250252
# Run OWASP Dependency-check
251253
if found_jar:
252-
logger.info("Run OWASP Dependency-check to analyze .jar file")
253-
owasp_items, vulnerability_items, success = analyze_jar_file(path_to_find_bin, abs_path_to_exclude)
254-
if success:
255-
return_list = merge_binary_list(owasp_items, vulnerability_items, return_list)
254+
# Check Java version (Dependency-check requires Java 11+)
255+
java_ver = get_java_version()
256+
if java_ver is None:
257+
logger.warning("Java runtime not found. Skip OWASP Dependency-check for jar analysis.")
258+
elif java_ver < 11:
259+
logger.warning(f"Java version {java_ver} detected (<11). Skip OWASP Dependency-check for jar analysis.")
256260
else:
257-
logger.warning("Could not find OSS information for some jar files.")
261+
logger.info("Run OWASP Dependency-check to analyze .jar file")
262+
owasp_items, vulnerability_items, success = analyze_jar_file(path_to_find_bin, abs_path_to_exclude)
263+
if success:
264+
return_list = merge_binary_list(owasp_items, vulnerability_items, return_list)
265+
else:
266+
logger.warning("Could not find OSS information for some jar files.")
258267

259268
return_list, db_loaded_cnt = get_oss_info_from_db(return_list, dburl)
260269
return_list = sorted(return_list, key=lambda row: (row.bin_name_with_path))
@@ -346,6 +355,19 @@ def check_binary(file_with_path):
346355
return is_bin_confirmed
347356

348357

358+
def get_java_version():
359+
try:
360+
completed = subprocess.run(["java", "-version"], capture_output=True, text=True)
361+
first_line = (completed.stderr or completed.stdout).splitlines()[0]
362+
363+
m = re.search(r'"(\d+)', first_line)
364+
if not m:
365+
return None
366+
return int(m.group(1))
367+
except Exception:
368+
return None
369+
370+
349371
def error_occured(error_msg, exit=False, result_log={}, mode="Normal mode"):
350372
_error_logs.append(error_msg)
351373
if exit:

0 commit comments

Comments
 (0)