Skip to content

Commit

Permalink
CR fixes jfrog#1
Browse files Browse the repository at this point in the history
  • Loading branch information
srmish-jfrog committed Nov 27, 2023
1 parent 5c79d89 commit b55ca95
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 27 deletions.
42 changes: 17 additions & 25 deletions xray/commands/audit/jas/applicability/applicabilitymanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func RunApplicabilityScan(xrayResults []services.ScanResponse, directDependencie
}

func newApplicabilityScanManager(xrayScanResults []services.ScanResponse, directDependencies []string, scanner *jas.JasScanner, thirdPartyScan bool) (manager *ApplicabilityScanManager) {
directDependenciesCves, indirectDependenciesCves := extractDirectDependenciesCvesFromScan(xrayScanResults, directDependencies)
directDependenciesCves, indirectDependenciesCves := extractDependenciesCvesFromScan(xrayScanResults, directDependencies)
return &ApplicabilityScanManager{
applicabilityScanResults: []*sarif.Run{},
directDependenciesCves: directDependenciesCves,
Expand All @@ -67,45 +67,37 @@ func newApplicabilityScanManager(xrayScanResults []services.ScanResponse, direct
}
}

func addCvesToSet(cves []services.Cve, set *datastructures.Set[string]) {
for _, cve := range cves {
if cve.Id != "" {
set.Add(cve.Id)
}
}
}

// This function gets a list of xray scan responses that contain direct and indirect vulnerabilities and returns separate
// lists of the direct and indirect CVEs
func extractDirectDependenciesCvesFromScan(xrayScanResults []services.ScanResponse, directDependencies []string) ([]string, []string) {
directsCves := datastructures.MakeSet[string]()
indirectCves := datastructures.MakeSet[string]()
func extractDependenciesCvesFromScan(xrayScanResults []services.ScanResponse, directDependencies []string) (directCves []string, indirectCves []string) {
directCvesSet := datastructures.MakeSet[string]()
indirectCvesSet := datastructures.MakeSet[string]()
for _, scanResult := range xrayScanResults {
for _, vulnerability := range scanResult.Vulnerabilities {
if isDirectComponents(maps.Keys(vulnerability.Components), directDependencies) {
for _, cve := range vulnerability.Cves {
if cve.Id != "" {
directsCves.Add(cve.Id)
}
}
addCvesToSet(vulnerability.Cves, directCvesSet)
} else {
for _, cve := range vulnerability.Cves {
if cve.Id != "" {
indirectCves.Add(cve.Id)
}
}
addCvesToSet(vulnerability.Cves, indirectCvesSet)
}
}
for _, violation := range scanResult.Violations {
if isDirectComponents(maps.Keys(violation.Components), directDependencies) {
for _, cve := range violation.Cves {
if cve.Id != "" {
directsCves.Add(cve.Id)
}
}
addCvesToSet(violation.Cves, directCvesSet)
} else {
for _, cve := range violation.Cves {
if cve.Id != "" {
indirectCves.Add(cve.Id)
}
}
addCvesToSet(violation.Cves, indirectCvesSet)
}
}
}

return directsCves.ToSlice(), indirectCves.ToSlice()
return directCvesSet.ToSlice(), indirectCvesSet.ToSlice()
}

func isDirectComponents(components []string, directDependencies []string) bool {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ func TestExtractXrayDirectViolations(t *testing.T) {
}

for _, test := range tests {
directCves, indirectCves := extractDirectDependenciesCvesFromScan(xrayResponseForDirectViolationsTest, test.directDependencies)
directCves, indirectCves := extractDependenciesCvesFromScan(xrayResponseForDirectViolationsTest, test.directDependencies)
assert.Len(t, directCves, test.directCvesCount)
assert.Len(t, indirectCves, test.indirectCvesCount)
}
Expand Down Expand Up @@ -253,7 +253,7 @@ func TestExtractXrayDirectVulnerabilities(t *testing.T) {
}

for _, test := range tests {
directCves, indirectCves := extractDirectDependenciesCvesFromScan(xrayResponseForDirectVulnerabilitiesTest, test.directDependencies)
directCves, indirectCves := extractDependenciesCvesFromScan(xrayResponseForDirectVulnerabilitiesTest, test.directDependencies)
assert.Len(t, directCves, test.directCvesCount)
assert.Len(t, indirectCves, test.indirectCvesCount)
}
Expand Down

0 comments on commit b55ca95

Please sign in to comment.