@@ -6202,6 +6202,297 @@ func Test_postConvert(t *testing.T) {
62026202 },
62036203 },
62046204 },
6205+ {
6206+ name : "suse (prefer unfixed to fixed)" ,
6207+ args : args {
6208+ scanned : scanTypes.ScanResult {
6209+ Kernel : scanTypes.Kernel {
6210+ Release : "5.3.18-59.37-default" ,
6211+ },
6212+ OSPackages : []scanTypes.OSPackage {
6213+ {
6214+ Name : "binutils" ,
6215+ Version : "2.37" ,
6216+ Release : "7.26.1" ,
6217+ Arch : "x86_64" ,
6218+ },
6219+ {
6220+ Name : "sles-release" ,
6221+ Version : "15.3" ,
6222+ Release : "55.4.1" ,
6223+ Arch : "x86_64" ,
6224+ },
6225+ },
6226+ },
6227+ detected : detectTypes.DetectResult {
6228+ Detected : []detectTypes.VulnerabilityData {
6229+ {
6230+ ID : "CVE-2022-4285" ,
6231+ Advisories : []dbTypes.VulnerabilityDataAdvisory {
6232+ {
6233+ ID : "SUSE-CU-2023:3179-1" ,
6234+ Contents : map [sourceTypes.SourceID ]map [dataTypes.RootID ][]advisoryTypes.Advisory {
6235+ sourceTypes .SUSEOVAL : {
6236+ dataTypes .RootID ("CVE-2022-4285" ): {
6237+ {
6238+ Content : advisoryContentTypes.Content {
6239+ ID : "SUSE-CU-2023:3179-1" ,
6240+ },
6241+ Segments : []segmentTypes.Segment {
6242+ {
6243+ Ecosystem : ecosystemTypes .Ecosystem ("suse.linux.enterprise.server:15" ),
6244+ },
6245+ },
6246+ },
6247+ },
6248+ },
6249+ },
6250+ },
6251+ },
6252+ Vulnerabilities : []dbTypes.VulnerabilityDataVulnerability {
6253+ {
6254+ ID : "CVE-2022-4285" ,
6255+ Contents : map [sourceTypes.SourceID ]map [dataTypes.RootID ][]vulnerabilityTypes.Vulnerability {
6256+ sourceTypes .SUSEOVAL : {
6257+ dataTypes .RootID ("CVE-2022-4285" ): {
6258+ {
6259+ Content : vulnerabilityContentTypes.Content {
6260+ ID : "CVE-2022-4285" ,
6261+ Severity : []severityTypes.Severity {
6262+ {
6263+ Type : severityTypes .SeverityTypeCVSSv31 ,
6264+ Source : "SUSE" ,
6265+ CVSSv31 : toPtr (cvssV31Types.CVSSv31 {
6266+ Vector : "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H" ,
6267+ BaseScore : 5.5 ,
6268+ BaseSeverity : "MEDIUM" ,
6269+ TemporalScore : 5.5 ,
6270+ TemporalSeverity : "MEDIUM" ,
6271+ EnvironmentalScore : 5.5 ,
6272+ EnvironmentalSeverity : "MEDIUM" ,
6273+ }),
6274+ },
6275+ },
6276+ },
6277+ Segments : []segmentTypes.Segment {
6278+ {
6279+ Ecosystem : ecosystemTypes .Ecosystem ("suse.linux.enterprise.server:15" ),
6280+ },
6281+ },
6282+ },
6283+ },
6284+ },
6285+ },
6286+ },
6287+ },
6288+ Detections : []detectTypes.VulnerabilityDataDetection {
6289+ {
6290+ Ecosystem : ecosystemTypes .Ecosystem ("suse.linux.enterprise.server:15" ),
6291+ Contents : map [sourceTypes.SourceID ][]conditionTypes.FilteredCondition {
6292+ sourceTypes .SUSEOVAL : {
6293+ {
6294+ Criteria : criteriaTypes.FilteredCriteria {
6295+ Operator : criteriaTypes .CriteriaOperatorTypeOR ,
6296+ Criterias : []criteriaTypes.FilteredCriteria {
6297+ {
6298+ Operator : criteriaTypes .CriteriaOperatorTypeAND ,
6299+ Criterias : []criteriaTypes.FilteredCriteria {
6300+ {
6301+ Operator : criteriaTypes .CriteriaOperatorTypeOR ,
6302+ Criterions : []criterionTypes.FilteredCriterion {
6303+ {
6304+ Criterion : criterionTypes.Criterion {
6305+ Type : criterionTypes .CriterionTypeVersion ,
6306+ Version : toPtr (versioncriterionTypes.Criterion {
6307+ Vulnerable : false ,
6308+ Package : vcPackageTypes.Package {
6309+ Type : vcPackageTypes .PackageTypeBinary ,
6310+ Binary : & vcBinaryPackageTypes.Package {
6311+ Name : "sles-release" ,
6312+ },
6313+ },
6314+ Affected : & vcAffectedTypes.Affected {
6315+ Type : vcAffectedRangeTypes .RangeTypeRPMVersionOnly ,
6316+ Range : []vcAffectedRangeTypes.Range {
6317+ {
6318+ Equal : "15.3" ,
6319+ },
6320+ },
6321+ },
6322+ }),
6323+ },
6324+ Accepts : criterionTypes.AcceptQueries {
6325+ Version : []int {1 },
6326+ },
6327+ },
6328+ },
6329+ },
6330+ {
6331+ Operator : criteriaTypes .CriteriaOperatorTypeOR ,
6332+ Criterions : []criterionTypes.FilteredCriterion {
6333+ {
6334+ Criterion : criterionTypes.Criterion {
6335+ Type : criterionTypes .CriterionTypeVersion ,
6336+ Version : toPtr (versioncriterionTypes.Criterion {
6337+ Vulnerable : true ,
6338+ FixStatus : toPtr (vcFixStatusTypes.FixStatus {
6339+ Class : vcFixStatusTypes .ClassFixed ,
6340+ }),
6341+ Package : vcPackageTypes.Package {
6342+ Type : vcPackageTypes .PackageTypeBinary ,
6343+ Binary : & vcBinaryPackageTypes.Package {
6344+ Name : "binutils" ,
6345+ Architectures : []string {
6346+ "aarch64" ,
6347+ "ppc64le" ,
6348+ "s390x" ,
6349+ "x86_64" ,
6350+ },
6351+ },
6352+ },
6353+ Affected : & vcAffectedTypes.Affected {
6354+ Type : vcAffectedRangeTypes .RangeTypeRPM ,
6355+ Range : []vcAffectedRangeTypes.Range {
6356+ {
6357+ LessThan : "0:2.41-150100.7.46.1" ,
6358+ },
6359+ },
6360+ Fixed : []string {"0:2.41-150100.7.46.1" },
6361+ },
6362+ }),
6363+ },
6364+ Accepts : criterionTypes.AcceptQueries {
6365+ Version : []int {0 },
6366+ },
6367+ },
6368+ },
6369+ },
6370+ },
6371+ },
6372+ {
6373+ Operator : criteriaTypes .CriteriaOperatorTypeAND ,
6374+ Criterias : []criteriaTypes.FilteredCriteria {
6375+ {
6376+ Operator : criteriaTypes .CriteriaOperatorTypeOR ,
6377+ Criterions : []criterionTypes.FilteredCriterion {
6378+ {
6379+ Criterion : criterionTypes.Criterion {
6380+ Type : criterionTypes .CriterionTypeVersion ,
6381+ Version : toPtr (versioncriterionTypes.Criterion {
6382+ Vulnerable : false ,
6383+ Package : vcPackageTypes.Package {
6384+ Type : vcPackageTypes .PackageTypeBinary ,
6385+ Binary : & vcBinaryPackageTypes.Package {
6386+ Name : "sles-release" ,
6387+ },
6388+ },
6389+ Affected : & vcAffectedTypes.Affected {
6390+ Type : vcAffectedRangeTypes .RangeTypeRPMVersionOnly ,
6391+ Range : []vcAffectedRangeTypes.Range {
6392+ {
6393+ Equal : "15.3" ,
6394+ },
6395+ },
6396+ },
6397+ }),
6398+ },
6399+ Accepts : criterionTypes.AcceptQueries {
6400+ Version : []int {1 },
6401+ },
6402+ },
6403+ },
6404+ },
6405+ {
6406+ Operator : criteriaTypes .CriteriaOperatorTypeOR ,
6407+ Criterions : []criterionTypes.FilteredCriterion {
6408+ {
6409+ Criterion : criterionTypes.Criterion {
6410+ Type : criterionTypes .CriterionTypeVersion ,
6411+ Version : toPtr (versioncriterionTypes.Criterion {
6412+ Vulnerable : true ,
6413+ FixStatus : toPtr (vcFixStatusTypes.FixStatus {
6414+ Class : vcFixStatusTypes .ClassUnfixed ,
6415+ }),
6416+ Package : vcPackageTypes.Package {
6417+ Type : vcPackageTypes .PackageTypeBinary ,
6418+ Binary : & vcBinaryPackageTypes.Package {
6419+ Name : "binutils" ,
6420+ Architectures : []string {
6421+ "aarch64" ,
6422+ "ppc64le" ,
6423+ "s390x" ,
6424+ "x86_64" ,
6425+ },
6426+ },
6427+ },
6428+ Affected : & vcAffectedTypes.Affected {
6429+ Type : vcAffectedRangeTypes .RangeTypeRPM ,
6430+ },
6431+ }),
6432+ },
6433+ Accepts : criterionTypes.AcceptQueries {
6434+ Version : []int {0 },
6435+ },
6436+ },
6437+ },
6438+ },
6439+ },
6440+ },
6441+ },
6442+ },
6443+ },
6444+ },
6445+ },
6446+ },
6447+ },
6448+ },
6449+ },
6450+ },
6451+ },
6452+ want : models.VulnInfos {
6453+ "CVE-2022-4285" : {
6454+ CveID : "CVE-2022-4285" ,
6455+ Confidences : models.Confidences {models .OvalMatch },
6456+ AffectedPackages : models.PackageFixStatuses {
6457+ {
6458+ Name : "binutils" ,
6459+ NotFixedYet : true ,
6460+ },
6461+ },
6462+ DistroAdvisories : models.DistroAdvisories {
6463+ {
6464+ AdvisoryID : "SUSE-CU-2023:3179-1" ,
6465+ Issued : time .Date (1000 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC ),
6466+ Updated : time .Date (1000 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC ),
6467+ },
6468+ },
6469+ CveContents : models.CveContents {
6470+ models .SUSE : []models.CveContent {
6471+ {
6472+ Type : models .SUSE ,
6473+ CveID : "CVE-2022-4285" ,
6474+ Cvss3Score : 5.5 ,
6475+ Cvss3Vector : "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H" ,
6476+ Cvss3Severity : "MEDIUM" ,
6477+ SourceLink : "https://www.suse.com/security/cve/CVE-2022-4285" ,
6478+ References : models.References {
6479+ {
6480+ Link : "https://www.suse.com/security/cve/SUSE-CU-2023:3179-1.html" ,
6481+ Source : "SUSE" ,
6482+ RefID : "SUSE-CU-2023:3179-1" ,
6483+ },
6484+ },
6485+ Published : time .Date (1000 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC ),
6486+ LastModified : time .Date (1000 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC ),
6487+ Optional : map [string ]string {
6488+ "vuls2-sources" : "[{\" root_id\" :\" CVE-2022-4285\" ,\" source_id\" :\" suse-oval\" ,\" segment\" :{\" ecosystem\" :\" suse.linux.enterprise.server:15\" }}]" ,
6489+ },
6490+ },
6491+ },
6492+ },
6493+ },
6494+ },
6495+ },
62056496 }
62066497 for _ , tt := range tests {
62076498 t .Run (tt .name , func (t * testing.T ) {
0 commit comments