@@ -36,14 +36,14 @@ const (
36
36
debianSecurityTrackerURL = "https://security-tracker.debian.org/tracker/data/json"
37
37
outputBucketDefault = "debian-osv"
38
38
hashMetadataKey = "sha256-hash"
39
- numWorkers = 128
40
39
)
41
40
42
41
func main () {
43
42
logger .InitGlobalLogger ()
44
43
45
44
debianOutputPath := flag .String ("output_path" , debianOutputPathDefault , "Path to output OSV files." )
46
45
outputBucketName := flag .String ("output_bucket" , outputBucketDefault , "The GCS bucket to write to." )
46
+ numWorkers := flag .String ("num_workers" , "64" , "Number of workers to process records" )
47
47
flag .Parse ()
48
48
49
49
err := os .MkdirAll (* debianOutputPath , 0755 )
@@ -73,16 +73,23 @@ func main() {
73
73
var wg sync.WaitGroup
74
74
vulnChan := make (chan * vulns.Vulnerability )
75
75
76
- for range numWorkers {
76
+ for range * numWorkers {
77
77
wg .Add (1 )
78
78
go func () {
79
79
defer wg .Done ()
80
80
worker (ctx , vulnChan , bkt , * debianOutputPath )
81
81
}()
82
82
}
83
83
84
- generateOSVFromDebianTracker (debianData , debianReleaseMap , allCVEs , vulnChan )
84
+ osvCVEs := generateOSVFromDebianTracker (debianData , debianReleaseMap , allCVEs )
85
85
86
+ for _ , v := range osvCVEs {
87
+ if len (v .Affected ) == 0 {
88
+ logger .Warn (fmt .Sprintf ("Skipping %s as no affected versions found." , v .ID ), slog .String ("id" , v .ID ))
89
+ continue
90
+ }
91
+ vulnChan <- v
92
+ }
86
93
close (vulnChan )
87
94
wg .Wait ()
88
95
@@ -156,7 +163,7 @@ func worker(ctx context.Context, vulnChan <-chan *vulns.Vulnerability, bkt *stor
156
163
}
157
164
158
165
// generateOSVFromDebianTracker converts Debian Security Tracker entries to OSV format.
159
- func generateOSVFromDebianTracker (debianData DebianSecurityTrackerData , debianReleaseMap map [string ]string , allCVEs map [cves.CVEID ]cves.Vulnerability , vulnChan chan <- * vulns.Vulnerability ) {
166
+ func generateOSVFromDebianTracker (debianData DebianSecurityTrackerData , debianReleaseMap map [string ]string , allCVEs map [cves.CVEID ]cves.Vulnerability ) map [ string ] * vulns.Vulnerability {
160
167
logger .Info ("Converting Debian Security Tracker data to OSV." )
161
168
osvCves := make (map [string ]* vulns.Vulnerability )
162
169
@@ -236,13 +243,7 @@ func generateOSVFromDebianTracker(debianData DebianSecurityTrackerData, debianRe
236
243
}
237
244
}
238
245
}
239
- for _ , v := range osvCves {
240
- if len (v .Affected ) == 0 {
241
- logger .Warn (fmt .Sprintf ("Skipping %s as no affected versions found." , v .ID ), slog .String ("id" , v .ID ))
242
- continue
243
- }
244
- vulnChan <- v
245
- }
246
+ return osvCves
246
247
}
247
248
248
249
// getDebianReleaseMap gets the Debian version number, excluding testing and experimental versions.
0 commit comments