From af09f897fb149e139d9d13150a6278f27efa1359 Mon Sep 17 00:00:00 2001 From: "John M. Horan" Date: Fri, 20 Jun 2025 12:53:08 -0700 Subject: [PATCH] Update severity scoring systems, fix failing tests Signed-off-by: John M. Horan --- src/vcio/vcio_report.py | 15 +++++++++------ ...-expected-output-multiple-input-purls.xlsx | Bin 10999 -> 14281 bytes ...ort-expected-output-single-input-purl.xlsx | Bin 8102 -> 11949 bytes 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/vcio/vcio_report.py b/src/vcio/vcio_report.py index 0638594..a42fa5b 100644 --- a/src/vcio/vcio_report.py +++ b/src/vcio/vcio_report.py @@ -317,14 +317,17 @@ def create_xlsx(purl_vulns, destination): if ref_scores: for ref_score in ref_scores: if ( - ref_score.get( - "scoring_system") == "cvssv3" - or ref_score.get("scoring_system") - == "generic_textual" + ref_score.get("scoring_system") == "archlinux" + or ref_score.get("scoring_system") == "cvssv2" + or ref_score.get("scoring_system") == "cvssv3" + or ref_score.get("scoring_system") == "cvssv3.1" + or ref_score.get("scoring_system") == "cvssv3.1_qr" + or ref_score.get("scoring_system") == "cvssv4" + or ref_score.get("scoring_system") == "epss" + or ref_score.get("scoring_system") == "generic_textual" or ref_score.get("scoring_system") == "rhas" or ref_score.get("scoring_system") == "rhbs" - or ref_score.get("scoring_system") - == "cvssv3.1_qr" + or ref_score.get("scoring_system") == "ssvc" ): vuln_severity = ref_score.get( "value") diff --git a/tests/data/vcio_report/vcio_report-expected-output-multiple-input-purls.xlsx b/tests/data/vcio_report/vcio_report-expected-output-multiple-input-purls.xlsx index c52280477dc573a2d44d37ce33e39c832460e308..c936f7d3f5629a57fa332482ad08383dc33fd14f 100644 GIT binary patch literal 14281 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 literal 10999 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 diff --git a/tests/data/vcio_report/vcio_report-expected-output-single-input-purl.xlsx b/tests/data/vcio_report/vcio_report-expected-output-single-input-purl.xlsx index e883f101426e0fe5cf3cdfcc06817844658753d3..f1a702b3a834d660d37baaa0e85709412aef9ef0 100644 GIT binary patch literal 11949 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 WNkYA}Y=6rx0$}Jxe*5r#zx@w@@M=l`