mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
better binary cataloger description
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
02f61abc62
commit
95ba1b04a4
@ -115,10 +115,19 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
|
|||||||
Fields []configFieldInfo `json:"fields,omitempty"`
|
Fields []configFieldInfo `json:"fields,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type detectorPackageInfo struct {
|
||||||
|
Class string `json:"class"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
PURL string `json:"purl"`
|
||||||
|
CPEs []string `json:"cpes"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
}
|
||||||
|
|
||||||
type patternInfo struct {
|
type patternInfo struct {
|
||||||
Method string `json:"method"`
|
Method string `json:"method"`
|
||||||
Criteria []string `json:"criteria"`
|
Criteria []string `json:"criteria"`
|
||||||
Conditions []capabilities.DetectorCondition `json:"conditions,omitempty"`
|
Conditions []capabilities.DetectorCondition `json:"conditions,omitempty"`
|
||||||
|
Packages []detectorPackageInfo `json:"packages,omitempty"`
|
||||||
Comment string `json:"comment,omitempty"`
|
Comment string `json:"comment,omitempty"`
|
||||||
Capabilities capabilities.CapabilitySet `json:"capabilities,omitempty"`
|
Capabilities capabilities.CapabilitySet `json:"capabilities,omitempty"`
|
||||||
}
|
}
|
||||||
@ -146,10 +155,23 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, parser := range cat.Parsers {
|
for _, parser := range cat.Parsers {
|
||||||
|
// convert detector packages
|
||||||
|
var pkgs []detectorPackageInfo
|
||||||
|
for _, pkg := range parser.Detector.Packages {
|
||||||
|
pkgs = append(pkgs, detectorPackageInfo{
|
||||||
|
Class: pkg.Class,
|
||||||
|
Name: pkg.Name,
|
||||||
|
PURL: pkg.PURL,
|
||||||
|
CPEs: pkg.CPEs,
|
||||||
|
Type: pkg.Type,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pi := patternInfo{
|
pi := patternInfo{
|
||||||
Method: string(parser.Detector.Method),
|
Method: string(parser.Detector.Method),
|
||||||
Criteria: parser.Detector.Criteria,
|
Criteria: parser.Detector.Criteria,
|
||||||
Conditions: parser.Detector.Conditions,
|
Conditions: parser.Detector.Conditions,
|
||||||
|
Packages: pkgs,
|
||||||
Comment: parser.Detector.Comment,
|
Comment: parser.Detector.Comment,
|
||||||
Capabilities: parser.Capabilities,
|
Capabilities: parser.Capabilities,
|
||||||
}
|
}
|
||||||
@ -161,10 +183,23 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
|
|||||||
info.Capabilities = cat.Capabilities
|
info.Capabilities = cat.Capabilities
|
||||||
|
|
||||||
for _, det := range cat.Detectors {
|
for _, det := range cat.Detectors {
|
||||||
|
// convert detector packages
|
||||||
|
var pkgs []detectorPackageInfo
|
||||||
|
for _, pkg := range det.Packages {
|
||||||
|
pkgs = append(pkgs, detectorPackageInfo{
|
||||||
|
Class: pkg.Class,
|
||||||
|
Name: pkg.Name,
|
||||||
|
PURL: pkg.PURL,
|
||||||
|
CPEs: pkg.CPEs,
|
||||||
|
Type: pkg.Type,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pi := patternInfo{
|
pi := patternInfo{
|
||||||
Method: string(det.Method),
|
Method: string(det.Method),
|
||||||
Criteria: det.Criteria,
|
Criteria: det.Criteria,
|
||||||
Conditions: det.Conditions,
|
Conditions: det.Conditions,
|
||||||
|
Packages: pkgs,
|
||||||
Comment: det.Comment,
|
Comment: det.Comment,
|
||||||
}
|
}
|
||||||
info.Patterns = append(info.Patterns, pi)
|
info.Patterns = append(info.Patterns, pi)
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/anchore/syft/internal/capabilities"
|
"github.com/anchore/syft/internal/capabilities"
|
||||||
@ -650,24 +649,10 @@ func RepoRoot() (string, error) {
|
|||||||
return absRepoRoot, nil
|
return absRepoRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// extractBinaryClassifierGlobs extracts all FileGlob patterns from binary classifiers
|
// extractBinaryClassifiers extracts all binary classifiers with their full information
|
||||||
func extractBinaryClassifierGlobs() []string {
|
func extractBinaryClassifiers() []binary.Classifier {
|
||||||
classifiers := binary.DefaultClassifiers()
|
classifiers := binary.DefaultClassifiers()
|
||||||
|
|
||||||
// extract all unique FileGlob values
|
// return all classifiers (already sorted by the default function)
|
||||||
globs := make(map[string]bool)
|
return classifiers
|
||||||
for _, classifier := range classifiers {
|
|
||||||
if classifier.FileGlob != "" {
|
|
||||||
globs[classifier.FileGlob] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert to sorted slice
|
|
||||||
result := make([]string, 0, len(globs))
|
|
||||||
for glob := range globs {
|
|
||||||
result = append(result, glob)
|
|
||||||
}
|
|
||||||
sort.Strings(result)
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,10 +7,20 @@ import (
|
|||||||
"github.com/scylladb/go-set/strset"
|
"github.com/scylladb/go-set/strset"
|
||||||
|
|
||||||
"github.com/anchore/syft/internal/capabilities"
|
"github.com/anchore/syft/internal/capabilities"
|
||||||
|
"github.com/anchore/syft/syft/pkg/cataloger/binary"
|
||||||
)
|
)
|
||||||
|
|
||||||
const genericCatalogerType = "generic"
|
const genericCatalogerType = "generic"
|
||||||
|
|
||||||
|
// stripPURLVersion removes the @version suffix from a PURL string
|
||||||
|
// e.g., "pkg:generic/python@version" -> "pkg:generic/python"
|
||||||
|
func stripPURLVersion(purl string) string {
|
||||||
|
if idx := strings.LastIndex(purl, "@"); idx != -1 {
|
||||||
|
return purl[:idx]
|
||||||
|
}
|
||||||
|
return purl
|
||||||
|
}
|
||||||
|
|
||||||
// catalogerTypeOverrides specifies catalogers that should have their type manually controlled
|
// catalogerTypeOverrides specifies catalogers that should have their type manually controlled
|
||||||
// rather than determined from the discovered cataloger structure.
|
// rather than determined from the discovered cataloger structure.
|
||||||
// This is useful when a cataloger is discovered as "generic" but should be treated as "custom"
|
// This is useful when a cataloger is discovered as "generic" but should be treated as "custom"
|
||||||
@ -71,10 +81,10 @@ func RegenerateCapabilities(yamlPath string, repoRoot string) (*Statistics, erro
|
|||||||
}
|
}
|
||||||
fmt.Println(" done")
|
fmt.Println(" done")
|
||||||
|
|
||||||
// 1b. Extract binary classifier globs
|
// 1b. Extract binary classifiers
|
||||||
fmt.Print(" → Extracting binary classifier globs...")
|
fmt.Print(" → Extracting binary classifiers...")
|
||||||
binaryClassifierGlobs := extractBinaryClassifierGlobs()
|
binaryClassifiers := extractBinaryClassifiers()
|
||||||
fmt.Printf(" found %d globs\n", len(binaryClassifierGlobs))
|
fmt.Printf(" found %d classifiers\n", len(binaryClassifiers))
|
||||||
|
|
||||||
// Count parser functions
|
// Count parser functions
|
||||||
for _, disc := range discovered {
|
for _, disc := range discovered {
|
||||||
@ -205,7 +215,7 @@ func RegenerateCapabilities(yamlPath string, repoRoot string) (*Statistics, erro
|
|||||||
discovered,
|
discovered,
|
||||||
customCatalogerMetadata,
|
customCatalogerMetadata,
|
||||||
customCatalogerPackageTypes,
|
customCatalogerPackageTypes,
|
||||||
binaryClassifierGlobs,
|
binaryClassifiers,
|
||||||
allCatalogers,
|
allCatalogers,
|
||||||
existing,
|
existing,
|
||||||
discoveredConfigs,
|
discoveredConfigs,
|
||||||
@ -286,19 +296,19 @@ func (r *CatalogerRegistry) AllCatalogers() []capabilities.CatalogerInfo {
|
|||||||
return r.all
|
return r.all
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnrichmentData encapsulates metadata enrichment information (metadata types, package types, binary classifier globs)
|
// EnrichmentData encapsulates metadata enrichment information (metadata types, package types, binary classifiers)
|
||||||
type EnrichmentData struct {
|
type EnrichmentData struct {
|
||||||
metadata map[string][]string
|
metadata map[string][]string
|
||||||
packageTypes map[string][]string
|
packageTypes map[string][]string
|
||||||
binaryClassifierGlobs []string
|
binaryClassifiers []binary.Classifier
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewEnrichmentData creates a new enrichment data container
|
// NewEnrichmentData creates a new enrichment data container
|
||||||
func NewEnrichmentData(metadata, packageTypes map[string][]string, binaryClassifierGlobs []string) *EnrichmentData {
|
func NewEnrichmentData(metadata, packageTypes map[string][]string, binaryClassifiers []binary.Classifier) *EnrichmentData {
|
||||||
return &EnrichmentData{
|
return &EnrichmentData{
|
||||||
metadata: metadata,
|
metadata: metadata,
|
||||||
packageTypes: packageTypes,
|
packageTypes: packageTypes,
|
||||||
binaryClassifierGlobs: binaryClassifierGlobs,
|
binaryClassifiers: binaryClassifiers,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,16 +336,36 @@ func (e *EnrichmentData) EnrichEntry(catalogerName string, entry *capabilities.C
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnrichWithBinaryClassifier enriches an entry with binary classifier globs if it's the binary-classifier-cataloger
|
// EnrichWithBinaryClassifier enriches an entry with binary classifier detectors if it's the binary-classifier-cataloger
|
||||||
func (e *EnrichmentData) EnrichWithBinaryClassifier(catalogerName string, entry *capabilities.CatalogerEntry) {
|
func (e *EnrichmentData) EnrichWithBinaryClassifier(catalogerName string, entry *capabilities.CatalogerEntry) {
|
||||||
// special handling for binary-classifier-cataloger: auto-generate detectors from classifier globs
|
// special handling for binary-classifier-cataloger: auto-generate one detector per classifier
|
||||||
if catalogerName == "binary-classifier-cataloger" && len(e.binaryClassifierGlobs) > 0 {
|
if catalogerName == "binary-classifier-cataloger" && len(e.binaryClassifiers) > 0 {
|
||||||
entry.Detectors = []capabilities.Detector{
|
var detectors []capabilities.Detector
|
||||||
{
|
for _, classifier := range e.binaryClassifiers {
|
||||||
|
// convert CPEs to strings
|
||||||
|
cpeStrings := make([]string, len(classifier.CPEs))
|
||||||
|
for i, c := range classifier.CPEs {
|
||||||
|
cpeStrings[i] = c.Attributes.BindToFmtString()
|
||||||
|
}
|
||||||
|
|
||||||
|
// strip @version from PURL
|
||||||
|
purlStr := stripPURLVersion(classifier.PURL.String())
|
||||||
|
|
||||||
|
detectors = append(detectors, capabilities.Detector{
|
||||||
Method: "glob",
|
Method: "glob",
|
||||||
Criteria: e.binaryClassifierGlobs,
|
Criteria: []string{classifier.FileGlob},
|
||||||
},
|
Packages: []capabilities.DetectorPackageInfo{
|
||||||
|
{
|
||||||
|
Class: classifier.Class,
|
||||||
|
Name: classifier.Package,
|
||||||
|
PURL: purlStr,
|
||||||
|
CPEs: cpeStrings,
|
||||||
|
Type: "BinaryPkg",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
entry.Detectors = detectors
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,7 +542,7 @@ func mergeDiscoveredWithExisting(
|
|||||||
discovered map[string]DiscoveredCataloger,
|
discovered map[string]DiscoveredCataloger,
|
||||||
customMetadata map[string][]string,
|
customMetadata map[string][]string,
|
||||||
customPackageTypes map[string][]string,
|
customPackageTypes map[string][]string,
|
||||||
binaryClassifierGlobs []string,
|
binaryClassifiers []binary.Classifier,
|
||||||
allCatalogers []capabilities.CatalogerInfo,
|
allCatalogers []capabilities.CatalogerInfo,
|
||||||
existing *capabilities.Document,
|
existing *capabilities.Document,
|
||||||
configs map[string]capabilities.CatalogerConfigEntry,
|
configs map[string]capabilities.CatalogerConfigEntry,
|
||||||
@ -520,7 +550,7 @@ func mergeDiscoveredWithExisting(
|
|||||||
catalogerConfigMappings map[string]string,
|
catalogerConfigMappings map[string]string,
|
||||||
) (*capabilities.Document, []orphanInfo, *mergeStatistics) {
|
) (*capabilities.Document, []orphanInfo, *mergeStatistics) {
|
||||||
registry := NewCatalogerRegistry(discovered, allCatalogers)
|
registry := NewCatalogerRegistry(discovered, allCatalogers)
|
||||||
enrichment := NewEnrichmentData(customMetadata, customPackageTypes, binaryClassifierGlobs)
|
enrichment := NewEnrichmentData(customMetadata, customPackageTypes, binaryClassifiers)
|
||||||
merger := NewCatalogerMerger(registry, enrichment, existing, catalogerConfigMappings)
|
merger := NewCatalogerMerger(registry, enrichment, existing, catalogerConfigMappings)
|
||||||
|
|
||||||
// set the AUTO-GENERATED config sections
|
// set the AUTO-GENERATED config sections
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/anchore/syft/internal/capabilities"
|
"github.com/anchore/syft/internal/capabilities"
|
||||||
|
"github.com/anchore/syft/syft/pkg/cataloger/binary"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestMergeConfigSections(t *testing.T) {
|
func TestMergeConfigSections(t *testing.T) {
|
||||||
@ -113,7 +114,7 @@ func TestMergeConfigSections(t *testing.T) {
|
|||||||
map[string]DiscoveredCataloger{},
|
map[string]DiscoveredCataloger{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
[]string{},
|
[]binary.Classifier{},
|
||||||
[]capabilities.CatalogerInfo{},
|
[]capabilities.CatalogerInfo{},
|
||||||
tt.existingDoc,
|
tt.existingDoc,
|
||||||
tt.newConfigs,
|
tt.newConfigs,
|
||||||
@ -250,7 +251,7 @@ func TestMergePreservesManualCapabilities(t *testing.T) {
|
|||||||
discovered,
|
discovered,
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
[]string{},
|
[]binary.Classifier{},
|
||||||
[]capabilities.CatalogerInfo{
|
[]capabilities.CatalogerInfo{
|
||||||
{Name: "test-cataloger", Selectors: []string{"test"}},
|
{Name: "test-cataloger", Selectors: []string{"test"}},
|
||||||
},
|
},
|
||||||
@ -337,7 +338,7 @@ func TestCatalogerConfigFieldUpdatedForNewCatalogers(t *testing.T) {
|
|||||||
discovered,
|
discovered,
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
[]string{},
|
[]binary.Classifier{},
|
||||||
[]capabilities.CatalogerInfo{
|
[]capabilities.CatalogerInfo{
|
||||||
{Name: tt.catalogerName, Selectors: []string{"test"}},
|
{Name: tt.catalogerName, Selectors: []string{"test"}},
|
||||||
},
|
},
|
||||||
@ -357,7 +358,7 @@ func TestCatalogerConfigFieldUpdatedForNewCatalogers(t *testing.T) {
|
|||||||
map[string]DiscoveredCataloger{},
|
map[string]DiscoveredCataloger{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
map[string][]string{},
|
map[string][]string{},
|
||||||
[]string{},
|
[]binary.Classifier{},
|
||||||
[]capabilities.CatalogerInfo{
|
[]capabilities.CatalogerInfo{
|
||||||
{Name: tt.catalogerName, Selectors: []string{"test"}},
|
{Name: tt.catalogerName, Selectors: []string{"test"}},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -49,9 +49,19 @@ type Detector struct {
|
|||||||
Method ArtifactDetectionMethod `yaml:"method" json:"method"` // AUTO-GENERATED
|
Method ArtifactDetectionMethod `yaml:"method" json:"method"` // AUTO-GENERATED
|
||||||
Criteria []string `yaml:"criteria" json:"criteria"` // AUTO-GENERATED
|
Criteria []string `yaml:"criteria" json:"criteria"` // AUTO-GENERATED
|
||||||
Conditions []DetectorCondition `yaml:"conditions,omitempty" json:"conditions,omitempty"` // MANUAL - when this detector should be active
|
Conditions []DetectorCondition `yaml:"conditions,omitempty" json:"conditions,omitempty"` // MANUAL - when this detector should be active
|
||||||
|
Packages []DetectorPackageInfo `yaml:"packages,omitempty" json:"packages,omitempty"` // AUTO-GENERATED for binary-classifier-cataloger
|
||||||
Comment string `yaml:"comment,omitempty" json:"comment,omitempty"` // MANUAL - explanation of this detector
|
Comment string `yaml:"comment,omitempty" json:"comment,omitempty"` // MANUAL - explanation of this detector
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DetectorPackageInfo describes package information that a detector can produce
|
||||||
|
type DetectorPackageInfo struct {
|
||||||
|
Class string `yaml:"class" json:"class"` // classifier class (e.g., "python-binary-lib")
|
||||||
|
Name string `yaml:"name" json:"name"` // package name (e.g., "python")
|
||||||
|
PURL string `yaml:"purl" json:"purl"` // package URL without version (e.g., "pkg:generic/python")
|
||||||
|
CPEs []string `yaml:"cpes" json:"cpes"` // CPE strings
|
||||||
|
Type string `yaml:"type" json:"type"` // package type (e.g., "BinaryPkg")
|
||||||
|
}
|
||||||
|
|
||||||
// DetectorCondition specifies when a detector should be active based on configuration
|
// DetectorCondition specifies when a detector should be active based on configuration
|
||||||
type DetectorCondition struct {
|
type DetectorCondition struct {
|
||||||
// When specifies config field names and their required values (all must match - AND logic)
|
// When specifies config field names and their required values (all must match - AND logic)
|
||||||
|
|||||||
@ -328,6 +328,7 @@ catalogers:
|
|||||||
- linux
|
- linux
|
||||||
- os
|
- os
|
||||||
- package
|
- package
|
||||||
|
- pacman
|
||||||
parsers: # AUTO-GENERATED structure
|
parsers: # AUTO-GENERATED structure
|
||||||
- function: parseAlpmDB # AUTO-GENERATED
|
- function: parseAlpmDB # AUTO-GENERATED
|
||||||
detector: # AUTO-GENERATED
|
detector: # AUTO-GENERATED
|
||||||
@ -426,61 +427,578 @@ catalogers:
|
|||||||
detectors: # AUTO-GENERATED
|
detectors: # AUTO-GENERATED
|
||||||
- method: glob
|
- method: glob
|
||||||
criteria:
|
criteria:
|
||||||
- '**/VERSION*'
|
|
||||||
- '**/arangosh'
|
|
||||||
- '**/bash'
|
|
||||||
- '**/beam.smp'
|
|
||||||
- '**/busybox'
|
|
||||||
- '**/cabal'
|
|
||||||
- '**/chrome'
|
|
||||||
- '**/composer*'
|
|
||||||
- '**/consul'
|
|
||||||
- '**/curl'
|
|
||||||
- '**/dart'
|
|
||||||
- '**/erlexec'
|
|
||||||
- '**/ffmpeg'
|
|
||||||
- '**/fluent-bit'
|
|
||||||
- '**/gcc'
|
|
||||||
- '**/getopt'
|
|
||||||
- '**/ghc*'
|
|
||||||
- '**/go'
|
|
||||||
- '**/gzip'
|
|
||||||
- '**/haproxy'
|
|
||||||
- '**/helm'
|
|
||||||
- '**/httpd'
|
|
||||||
- '**/java'
|
|
||||||
- '**/jdb'
|
|
||||||
- '**/jq'
|
|
||||||
- '**/libav*'
|
|
||||||
- '**/liberts_internal.a'
|
|
||||||
- '**/libjulia-internal.so'
|
|
||||||
- '**/libpypy*.so*'
|
|
||||||
- '**/libpython*.so*'
|
|
||||||
- '**/libstd-????????????????.dylib'
|
|
||||||
- '**/libstd-????????????????.so'
|
|
||||||
- '**/libswresample*'
|
|
||||||
- '**/lighttpd'
|
|
||||||
- '**/memcached'
|
|
||||||
- '**/mysql'
|
|
||||||
- '**/nginx'
|
|
||||||
- '**/node'
|
|
||||||
- '**/openssl'
|
|
||||||
- '**/perl'
|
|
||||||
- '**/postgres'
|
|
||||||
- '**/proftpd'
|
|
||||||
- '**/python*'
|
- '**/python*'
|
||||||
|
packages:
|
||||||
|
- class: python-binary
|
||||||
|
name: python
|
||||||
|
purl: pkg:generic/python
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:python:python:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libpython*.so*'
|
||||||
|
packages:
|
||||||
|
- class: python-binary-lib
|
||||||
|
name: python
|
||||||
|
purl: pkg:generic/python
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:python_software_foundation:python:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:python:python:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libpypy*.so*'
|
||||||
|
packages:
|
||||||
|
- class: pypy-binary-lib
|
||||||
|
name: pypy
|
||||||
|
purl: pkg:generic/pypy
|
||||||
|
cpes: []
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/go'
|
||||||
|
packages:
|
||||||
|
- class: go-binary
|
||||||
|
name: go
|
||||||
|
purl: pkg:generic/go
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:golang:go:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libjulia-internal.so'
|
||||||
|
packages:
|
||||||
|
- class: julia-binary
|
||||||
|
name: julia
|
||||||
|
purl: pkg:generic/julia
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:julialang:julia:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/helm'
|
||||||
|
packages:
|
||||||
|
- class: helm
|
||||||
|
name: helm
|
||||||
|
purl: pkg:golang/helm.sh/helm
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:helm:helm:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
- '**/redis-server'
|
- '**/redis-server'
|
||||||
- '**/ruby'
|
packages:
|
||||||
- '**/sqlcipher'
|
- class: redis-binary
|
||||||
- '**/stack'
|
name: redis
|
||||||
- '**/swipl'
|
purl: pkg:generic/redis
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:redislabs:redis:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:redis:redis:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/node'
|
||||||
|
packages:
|
||||||
|
- class: nodejs-binary
|
||||||
|
name: node
|
||||||
|
purl: pkg:generic/node
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:nodejs:node.js:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/VERSION*'
|
||||||
|
packages:
|
||||||
|
- class: go-binary-hint
|
||||||
|
name: go
|
||||||
|
purl: pkg:generic/go
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:golang:go:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/busybox'
|
||||||
|
packages:
|
||||||
|
- class: busybox-binary
|
||||||
|
name: busybox
|
||||||
|
purl: pkg:generic/busybox
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:busybox:busybox:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/getopt'
|
||||||
|
packages:
|
||||||
|
- class: util-linux-binary
|
||||||
|
name: util-linux
|
||||||
|
purl: pkg:generic/util-linux
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:kernel:util-linux:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/haproxy'
|
||||||
|
packages:
|
||||||
|
- class: haproxy-binary
|
||||||
|
name: haproxy
|
||||||
|
purl: pkg:generic/haproxy
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:haproxy:haproxy:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/perl'
|
||||||
|
packages:
|
||||||
|
- class: perl-binary
|
||||||
|
name: perl
|
||||||
|
purl: pkg:generic/perl
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:perl:perl:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/composer*'
|
||||||
|
packages:
|
||||||
|
- class: php-composer-binary
|
||||||
|
name: composer
|
||||||
|
purl: pkg:generic/composer
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:getcomposer:composer:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/httpd'
|
||||||
|
packages:
|
||||||
|
- class: httpd-binary
|
||||||
|
name: httpd
|
||||||
|
purl: pkg:generic/httpd
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/memcached'
|
||||||
|
packages:
|
||||||
|
- class: memcached-binary
|
||||||
|
name: memcached
|
||||||
|
purl: pkg:generic/memcached
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:memcached:memcached:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
- '**/traefik'
|
- '**/traefik'
|
||||||
- '**/vault'
|
packages:
|
||||||
- '**/wp'
|
- class: traefik-binary
|
||||||
|
name: traefik
|
||||||
|
purl: pkg:generic/traefik
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/arangosh'
|
||||||
|
packages:
|
||||||
|
- class: arangodb-binary
|
||||||
|
name: arangodb
|
||||||
|
purl: pkg:generic/arangodb
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:arangodb:arangodb:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/postgres'
|
||||||
|
packages:
|
||||||
|
- class: postgresql-binary
|
||||||
|
name: postgresql
|
||||||
|
purl: pkg:generic/postgresql
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:postgresql:postgresql:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/mysql'
|
||||||
|
packages:
|
||||||
|
- class: mysql-binary
|
||||||
|
name: mysql
|
||||||
|
purl: pkg:generic/mysql
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/mysql'
|
||||||
|
packages:
|
||||||
|
- class: mysql-binary
|
||||||
|
name: percona-server
|
||||||
|
purl: pkg:generic/percona-server
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/mysql'
|
||||||
|
packages:
|
||||||
|
- class: mysql-binary
|
||||||
|
name: percona-xtradb-cluster
|
||||||
|
purl: pkg:generic/percona-xtradb-cluster
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:oracle:mysql:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:percona:percona_server:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:percona:xtradb_cluster:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
- '**/xtrabackup'
|
- '**/xtrabackup'
|
||||||
- '**/xz'
|
packages:
|
||||||
- '**/zstd'
|
- class: xtrabackup-binary
|
||||||
|
name: percona-xtrabackup
|
||||||
|
purl: pkg:generic/percona-xtrabackup
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:percona:xtrabackup:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
- '**/{mariadb,mysql}'
|
- '**/{mariadb,mysql}'
|
||||||
|
packages:
|
||||||
|
- class: mariadb-binary
|
||||||
|
name: mariadb
|
||||||
|
purl: pkg:generic/mariadb
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:mariadb:mariadb:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libstd-????????????????.so'
|
||||||
|
packages:
|
||||||
|
- class: rust-standard-library-linux
|
||||||
|
name: rust
|
||||||
|
purl: pkg:generic/rust
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libstd-????????????????.dylib'
|
||||||
|
packages:
|
||||||
|
- class: rust-standard-library-macos
|
||||||
|
name: rust
|
||||||
|
purl: pkg:generic/rust
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:rust-lang:rust:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/ruby'
|
||||||
|
packages:
|
||||||
|
- class: ruby-binary
|
||||||
|
name: ruby
|
||||||
|
purl: pkg:generic/ruby
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:ruby-lang:ruby:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/erlexec'
|
||||||
|
packages:
|
||||||
|
- class: erlang-binary
|
||||||
|
name: erlang
|
||||||
|
purl: pkg:generic/erlang
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/beam.smp'
|
||||||
|
packages:
|
||||||
|
- class: erlang-alpine-binary
|
||||||
|
name: erlang
|
||||||
|
purl: pkg:generic/erlang
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/liberts_internal.a'
|
||||||
|
packages:
|
||||||
|
- class: erlang-library
|
||||||
|
name: erlang
|
||||||
|
purl: pkg:generic/erlang
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/swipl'
|
||||||
|
packages:
|
||||||
|
- class: swipl-binary
|
||||||
|
name: swipl
|
||||||
|
purl: pkg:generic/swipl
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/dart'
|
||||||
|
packages:
|
||||||
|
- class: dart-binary
|
||||||
|
name: dart
|
||||||
|
purl: pkg:generic/dart
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:dart:dart_software_development_kit:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/ghc*'
|
||||||
|
packages:
|
||||||
|
- class: haskell-ghc-binary
|
||||||
|
name: haskell/ghc
|
||||||
|
purl: pkg:generic/haskell/ghc
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:haskell:ghc:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/cabal'
|
||||||
|
packages:
|
||||||
|
- class: haskell-cabal-binary
|
||||||
|
name: haskell/cabal
|
||||||
|
purl: pkg:generic/haskell/cabal
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:haskell:cabal:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/stack'
|
||||||
|
packages:
|
||||||
|
- class: haskell-stack-binary
|
||||||
|
name: haskell/stack
|
||||||
|
purl: pkg:generic/haskell/stack
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:haskell:stack:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/consul'
|
||||||
|
packages:
|
||||||
|
- class: consul-binary
|
||||||
|
name: consul
|
||||||
|
purl: pkg:golang/github.com/hashicorp/consul
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:hashicorp:consul:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/vault'
|
||||||
|
packages:
|
||||||
|
- class: hashicorp-vault-binary
|
||||||
|
name: github.com/hashicorp/vault
|
||||||
|
purl: pkg:golang/github.com/hashicorp/vault
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:hashicorp:vault:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/nginx'
|
||||||
|
packages:
|
||||||
|
- class: nginx-binary
|
||||||
|
name: nginx
|
||||||
|
purl: pkg:generic/nginx
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*
|
||||||
|
- cpe:2.3:a:nginx:nginx:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/bash'
|
||||||
|
packages:
|
||||||
|
- class: bash-binary
|
||||||
|
name: bash
|
||||||
|
purl: pkg:generic/bash
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:gnu:bash:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/openssl'
|
||||||
|
packages:
|
||||||
|
- class: openssl-binary
|
||||||
|
name: openssl
|
||||||
|
purl: pkg:generic/openssl
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/gcc'
|
||||||
|
packages:
|
||||||
|
- class: gcc-binary
|
||||||
|
name: gcc
|
||||||
|
purl: pkg:generic/gcc
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:gnu:gcc:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/fluent-bit'
|
||||||
|
packages:
|
||||||
|
- class: fluent-bit-binary
|
||||||
|
name: fluent-bit
|
||||||
|
purl: pkg:github/fluent/fluent-bit
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:treasuredata:fluent_bit:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/wp'
|
||||||
|
packages:
|
||||||
|
- class: wordpress-cli-binary
|
||||||
|
name: wp-cli
|
||||||
|
purl: pkg:generic/wp-cli
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:wp-cli:wp-cli:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/curl'
|
||||||
|
packages:
|
||||||
|
- class: curl-binary
|
||||||
|
name: curl
|
||||||
|
purl: pkg:generic/curl
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/lighttpd'
|
||||||
|
packages:
|
||||||
|
- class: lighttpd-binary
|
||||||
|
name: lighttpd
|
||||||
|
purl: pkg:generic/lighttpd
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:lighttpd:lighttpd:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/proftpd'
|
||||||
|
packages:
|
||||||
|
- class: proftpd-binary
|
||||||
|
name: proftpd
|
||||||
|
purl: pkg:generic/proftpd
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:proftpd:proftpd:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/zstd'
|
||||||
|
packages:
|
||||||
|
- class: zstd-binary
|
||||||
|
name: zstd
|
||||||
|
purl: pkg:generic/zstd
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:facebook:zstandard:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/xz'
|
||||||
|
packages:
|
||||||
|
- class: xz-binary
|
||||||
|
name: xz
|
||||||
|
purl: pkg:generic/xz
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:tukaani:xz:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/gzip'
|
||||||
|
packages:
|
||||||
|
- class: gzip-binary
|
||||||
|
name: gzip
|
||||||
|
purl: pkg:generic/gzip
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:gnu:gzip:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/sqlcipher'
|
||||||
|
packages:
|
||||||
|
- class: sqlcipher-binary
|
||||||
|
name: sqlcipher
|
||||||
|
purl: pkg:generic/sqlcipher
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:zetetic:sqlcipher:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/jq'
|
||||||
|
packages:
|
||||||
|
- class: jq-binary
|
||||||
|
name: jq
|
||||||
|
purl: pkg:generic/jq
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:jqlang:jq:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/chrome'
|
||||||
|
packages:
|
||||||
|
- class: chrome-binary
|
||||||
|
name: chrome
|
||||||
|
purl: pkg:generic/chrome
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:google:chrome:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/ffmpeg'
|
||||||
|
packages:
|
||||||
|
- class: ffmpeg-binary
|
||||||
|
name: ffmpeg
|
||||||
|
purl: pkg:generic/ffmpeg
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libav*'
|
||||||
|
packages:
|
||||||
|
- class: ffmpeg-library
|
||||||
|
name: ffmpeg
|
||||||
|
purl: pkg:generic/ffmpeg
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/libswresample*'
|
||||||
|
packages:
|
||||||
|
- class: ffmpeg-library
|
||||||
|
name: ffmpeg
|
||||||
|
purl: pkg:generic/ffmpeg
|
||||||
|
cpes:
|
||||||
|
- cpe:2.3:a:ffmpeg:ffmpeg:*:*:*:*:*:*:*:*
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/java'
|
||||||
|
packages:
|
||||||
|
- class: java-binary
|
||||||
|
name: ""
|
||||||
|
purl: pkg:/
|
||||||
|
cpes: []
|
||||||
|
type: BinaryPkg
|
||||||
|
- method: glob
|
||||||
|
criteria:
|
||||||
|
- '**/jdb'
|
||||||
|
packages:
|
||||||
|
- class: java-jdb-binary
|
||||||
|
name: ""
|
||||||
|
purl: pkg:/
|
||||||
|
cpes: []
|
||||||
|
type: BinaryPkg
|
||||||
metadata_types: # AUTO-GENERATED
|
metadata_types: # AUTO-GENERATED
|
||||||
- pkg.BinarySignature
|
- pkg.BinarySignature
|
||||||
package_types: # AUTO-GENERATED
|
package_types: # AUTO-GENERATED
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user