3232 intermediate_output ,
3333)
3434from cve_bin_tool .sbom_manager .generate import SBOMGenerate
35+ from cve_bin_tool .util import strip_path
3536from cve_bin_tool .version import VERSION
3637from cve_bin_tool .vex_manager .generate import VEXGenerate
3738
@@ -44,6 +45,7 @@ def save_intermediate(
4445 products_with_cve : int ,
4546 products_without_cve : int ,
4647 total_files : int ,
48+ strip_scan_dir : bool = False ,
4749):
4850 """Save the intermediate report"""
4951
@@ -54,6 +56,7 @@ def save_intermediate(
5456 products_with_cve ,
5557 products_without_cve ,
5658 total_files ,
59+ strip_scan_dir ,
5760 )
5861 with open (filename , "w" ) as f :
5962 json .dump (inter_output , f , indent = " " )
@@ -62,14 +65,18 @@ def save_intermediate(
6265def output_csv (
6366 all_cve_data : dict [ProductInfo , CVEData ],
6467 all_cve_version_info : dict [str , VersionInfo ] | None ,
68+ scanned_dir : str ,
6569 outfile ,
6670 detailed : bool = False ,
6771 affected_versions : int = 0 ,
6872 metrics : bool = False ,
73+ strip_scan_dir : bool = False ,
6974):
7075 """Output a CSV of CVEs"""
7176 formatted_output = format_output (
7277 all_cve_data ,
78+ scanned_dir ,
79+ strip_scan_dir ,
7380 all_cve_version_info ,
7481 detailed ,
7582 affected_versions ,
@@ -123,11 +130,13 @@ def output_pdf(
123130 is_report ,
124131 products_with_cve ,
125132 all_cve_version_info ,
133+ scanned_dir : str ,
126134 outfile ,
127135 merge_report ,
128136 affected_versions : int = 0 ,
129137 exploits : bool = False ,
130138 metrics : bool = False ,
139+ strip_scan_dir : bool = False ,
131140 all_product_data = None ,
132141 ):
133142 """Output a PDF of CVEs"""
@@ -321,7 +330,15 @@ def output_pdf(
321330 "comments" : cve .comments ,
322331 }
323332 )
324- path_elements = ", " .join (cve_data ["paths" ])
333+ if strip_scan_dir :
334+ path_elements = ", " .join (
335+ [
336+ strip_path (path , scanned_dir )
337+ for path in cve_data ["paths" ]
338+ ]
339+ )
340+ else :
341+ path_elements = ", " .join (cve_data ["paths" ])
325342 for path_element in path_elements .split ("," ):
326343 path_entry = {
327344 "vendor" : product_info .vendor ,
@@ -589,11 +606,13 @@ def output_pdf(
589606 is_report ,
590607 products_with_cve ,
591608 all_cve_version_info ,
609+ scanned_dir : str ,
592610 outfile ,
593611 merge_report ,
594612 affected_versions : int = 0 ,
595613 exploits : bool = False ,
596614 all_product_data = None ,
615+ strip_scan_dir : bool = False ,
597616 ):
598617 """Output a PDF of CVEs
599618 Required module: Reportlab not found"""
@@ -629,6 +648,7 @@ class OutputEngine:
629648 sbom_type (str)
630649 sbom_format (str)
631650 sbom_root (str)
651+ strip_scan_dir (bool)
632652 offline (bool)
633653
634654 Methods:
@@ -667,7 +687,7 @@ def __init__(
667687 sbom_type : str = "spdx" ,
668688 sbom_format : str = "tag" ,
669689 sbom_root : str = "CVE_SBOM" ,
670- sbom_strip_root : bool = False ,
690+ strip_scan_dir : bool = False ,
671691 vex_filename : str = "" ,
672692 vex_type : str = "" ,
673693 vex_product_info : dict [str , str ] = {},
@@ -699,7 +719,7 @@ def __init__(
699719 self .sbom_type = sbom_type
700720 self .sbom_format = sbom_format
701721 self .sbom_root = sbom_root
702- self .sbom_strip_root = sbom_strip_root
722+ self .strip_scan_dir = strip_scan_dir
703723 self .offline = offline
704724 self .organized_arguements = organized_arguements
705725 self .sbom_packages = {}
@@ -716,43 +736,51 @@ def output_cves(self, outfile, output_type="console"):
716736 output_json (
717737 self .all_cve_data ,
718738 self .all_cve_version_info ,
739+ self .scanned_dir ,
719740 outfile ,
720741 self .detailed ,
721742 self .affected_versions ,
722743 self .metrics ,
744+ self .strip_scan_dir ,
723745 )
724746 elif output_type == "json2" :
725747 output_json2 (
726748 self .all_cve_data ,
727749 self .all_cve_version_info ,
750+ self .scanned_dir ,
728751 self .time_of_last_update ,
729752 outfile ,
730753 self .affected_versions ,
731754 self .organized_arguements ,
732755 self .detailed ,
733756 self .exploits ,
734757 self .metrics ,
758+ self .strip_scan_dir ,
735759 )
736760 elif output_type == "csv" :
737761 output_csv (
738762 self .all_cve_data ,
739763 self .all_cve_version_info ,
764+ self .scanned_dir ,
740765 outfile ,
741766 self .detailed ,
742767 self .affected_versions ,
743768 self .metrics ,
769+ self .strip_scan_dir ,
744770 )
745771 elif output_type == "pdf" :
746772 output_pdf (
747773 self .all_cve_data ,
748774 self .is_report ,
749775 self .products_with_cve ,
750776 self .all_cve_version_info ,
777+ self .scanned_dir ,
751778 outfile ,
752779 self .merge_report ,
753780 self .affected_versions ,
754781 self .exploits ,
755782 self .metrics ,
783+ self .strip_scan_dir ,
756784 )
757785 elif output_type == "html" :
758786 output_html (
@@ -768,15 +796,18 @@ def output_cves(self, outfile, output_type="console"):
768796 self .logger ,
769797 outfile ,
770798 self .affected_versions ,
799+ self .strip_scan_dir ,
771800 )
772801 else : # console, or anything else that is unrecognised
773802 output_console (
774803 self .all_cve_data ,
775804 self .all_cve_version_info ,
805+ self .scanned_dir ,
776806 self .time_of_last_update ,
777807 self .affected_versions ,
778808 self .exploits ,
779809 self .metrics ,
810+ self .strip_scan_dir ,
780811 self .all_product_data ,
781812 self .offline ,
782813 None ,
@@ -789,6 +820,7 @@ def output_cves(self, outfile, output_type="console"):
789820 self .append ,
790821 self .tag ,
791822 self .scanned_dir ,
823+ self .strip_scan_dir ,
792824 self .products_with_cve ,
793825 self .products_without_cve ,
794826 self .total_files ,
@@ -819,7 +851,7 @@ def output_cves(self, outfile, output_type="console"):
819851 self .sbom_type ,
820852 self .sbom_format ,
821853 self .sbom_root ,
822- self .sbom_strip_root ,
854+ self .strip_scan_dir ,
823855 self .logger ,
824856 )
825857 sbomgen .generate_sbom ()
0 commit comments