@@ -2,6 +2,7 @@ package grype
22
33import (
44 "bytes"
5+ "context"
56 "encoding/json"
67 "fmt"
78 "os"
@@ -75,7 +76,9 @@ func GrypeExeOutput[T any](cmd *exec.Cmd) (T, error) {
7576// check grype binary version
7677func GetScannerVersion (scannerBin string ) (string , error ) {
7778
78- cmd := exec .Command (scannerBin , "version" , "-o" , "json" )
79+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute * 5 )
80+ defer cancel ()
81+ cmd := exec .CommandContext (ctx , scannerBin , "version" , "-o" , "json" )
7982 cmd .Env = append (cmd .Env , "GRYPE_CHECK_FOR_APP_UPDATE=false" )
8083
8184 result , err := GrypeExeOutput [GrypeVersion ](cmd )
@@ -88,7 +91,9 @@ func GetScannerVersion(scannerBin string) (string, error) {
8891// check grype local database status, update DbState
8992func GetDatabaseStatus (scannerBin string , targetDir string ) (string , time.Time , error ) {
9093
91- cmd := exec .Command (scannerBin , "db" , "status" , "-o" , "json" )
94+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute * 5 )
95+ defer cancel ()
96+ cmd := exec .CommandContext (ctx , scannerBin , "db" , "status" , "-o" , "json" )
9297 cmd .Env = append (cmd .Env , "GRYPE_CHECK_FOR_APP_UPDATE=false" )
9398 cmd .Env = append (cmd .Env , "GRYPE_DB_CACHE_DIR=" + targetDir )
9499
@@ -102,7 +107,9 @@ func GetDatabaseStatus(scannerBin string, targetDir string) (string, time.Time,
102107// check if local db in targetDir requires an update
103108func GrypeUpdateRequired (scannerBin , targetDir string ) bool {
104109
105- cmd := exec .Command (scannerBin , "db" , "check" , "-o" , "json" )
110+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute * 5 )
111+ defer cancel ()
112+ cmd := exec .CommandContext (ctx , scannerBin , "db" , "check" , "-o" , "json" )
106113 cmd .Env = append (cmd .Env , "GRYPE_CHECK_FOR_APP_UPDATE=false" )
107114 cmd .Env = append (cmd .Env , "GRYPE_DB_CACHE_DIR=" + targetDir )
108115
@@ -118,7 +125,9 @@ func GetGrypeUpdate(scannerBin, targetDir string) error {
118125
119126 // do update
120127 var stdout , stderr bytes.Buffer
121- cmd := exec .Command (scannerBin , "db" , "update" , "--quiet" )
128+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute * 5 )
129+ defer cancel ()
130+ cmd := exec .CommandContext (ctx , scannerBin , "db" , "update" , "--quiet" )
122131 cmd .Env = append (cmd .Env , "GRYPE_CHECK_FOR_APP_UPDATE=false" )
123132 cmd .Env = append (cmd .Env , "GRYPE_DB_CACHE_DIR=" + targetDir )
124133 cmd .Stdout = & stdout
@@ -137,7 +146,9 @@ func GrypeTestScan(scannerBin, targetDir string) error {
137146
138147 var stdout , stderr bytes.Buffer
139148
140- cmd := exec .Command (scannerBin , "-o" , "json" )
149+ ctx , cancel := context .WithTimeout (context .Background (), time .Minute * 5 )
150+ defer cancel ()
151+ cmd := exec .CommandContext (ctx , scannerBin , "-o" , "json" )
141152 cmd .Stdin = bytes .NewReader (sampleSbom )
142153 cmd .Stdout = & stdout
143154 cmd .Stderr = & stderr
0 commit comments