@@ -19,6 +19,7 @@ import (
1919 criteriaTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/condition/criteria"
2020 criterionTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/condition/criteria/criterion"
2121 vcAffectedRangeTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/condition/criteria/criterion/versioncriterion/affected/range"
22+ "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/condition/criteria/criterion/versioncriterion/fixstatus"
2223 vcPackageTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/condition/criteria/criterion/versioncriterion/package"
2324 segmentTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/segment"
2425 ecosystemTypes "github.com/MaineK00n/vuls-data-update/pkg/extract/types/data/detection/segment/ecosystem"
@@ -169,6 +170,7 @@ func detect(sesh *session.Session, sr scanTypes.ScanResult) (detectTypes.DetectR
169170 Detections : []detectTypes.VulnerabilityDataDetection {d },
170171 }
171172
173+ << << << < HEAD
172174 avs , err := sesh .GetVulnerabilityData (rootID , dbTypes.Filter {
173175 Contents : []dbTypes.FilterContentType {
174176 dbTypes .FilterContentTypeAdvisories ,
@@ -178,6 +180,8 @@ func detect(sesh *session.Session, sr scanTypes.ScanResult) (detectTypes.DetectR
178180 Ecosystems : []ecosystemTypes.Ecosystem {d .Ecosystem },
179181 DataSources : slices .Collect (maps .Keys (d .Contents )),
180182 })
183+ for rootID , base := range detected {
184+ for d , err := range dbc .GetVulnerabilityData (dbTypes .SearchRoot , string (rootID )) {
181185 if err != nil {
182186 return detectTypes.DetectResult {}, xerrors .Errorf ("Failed to get vulnerability data. RootID: %s, err: %w" , rootID , err )
183187 }
@@ -494,6 +498,10 @@ func walkCriteria(e ecosystemTypes.Ecosystem, sourceID sourceTypes.SourceID, ca
494498
495499 switch fcn .Criterion .Version .Package .Type {
496500 case vcPackageTypes .PackageTypeBinary , vcPackageTypes .PackageTypeSource :
501+ if ! cn .Criterion .Version .Vulnerable {
502+ continue
503+ }
504+
497505 rangeType , fixedIn := func () (vcAffectedRangeTypes.RangeType , string ) {
498506 if fcn .Criterion .Version .Affected == nil {
499507 return vcAffectedRangeTypes .RangeTypeUnknown , ""
@@ -513,10 +521,21 @@ func walkCriteria(e ecosystemTypes.Ecosystem, sourceID sourceTypes.SourceID, ca
513521 if fcn .Criterion .Version .FixStatus == nil {
514522 return ""
515523 }
516- return fixState (e , sourceID , fcn .Criterion .Version .FixStatus .Vendor )
524+ if s := fixState (e , sourceID , fcn .Criterion .Version .FixStatus .Vendor ); s != "" {
525+ return s
526+ }
527+ if fcn .Criterion .Version .FixStatus .Class == fixstatus .ClassUnknown {
528+ return "Unknown"
529+ }
530+ return ""
531+ }(),
532+ FixedIn : fixedIn ,
533+ NotFixedYet : func () bool {
534+ if cn .Criterion .Version .FixStatus == nil {
535+ return true
536+ }
537+ return cn .Criterion .Version .FixStatus .Class != fixstatus .ClassFixed
517538 }(),
518- FixedIn : fixedIn ,
519- NotFixedYet : fixedIn == "" ,
520539 },
521540 })
522541 }
0 commit comments