mirror of
https://github.com/securego/gosec.git
synced 2024-11-05 19:45:51 +00:00
Fix data race in the analyzer
Signed-off-by: Cosmin Cojocar <gcojocar@adobe.com>
This commit is contained in:
parent
c06903addd
commit
a2397580b6
2 changed files with 8 additions and 0 deletions
3
Makefile
3
Makefile
|
@ -64,6 +64,9 @@ test-coverage: install-test-deps
|
||||||
build:
|
build:
|
||||||
go build -o $(BIN) ./cmd/gosec/
|
go build -o $(BIN) ./cmd/gosec/
|
||||||
|
|
||||||
|
build-race:
|
||||||
|
go build -race -o $(BIN) ./cmd/gosec/
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build vendor dist coverage.txt
|
rm -rf build vendor dist coverage.txt
|
||||||
rm -f release image $(BIN)
|
rm -f release image $(BIN)
|
||||||
|
|
|
@ -184,6 +184,7 @@ type Analyzer struct {
|
||||||
trackSuppressions bool
|
trackSuppressions bool
|
||||||
concurrency int
|
concurrency int
|
||||||
analyzerList []*analysis.Analyzer
|
analyzerList []*analysis.Analyzer
|
||||||
|
mu sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewAnalyzer builds a new analyzer.
|
// NewAnalyzer builds a new analyzer.
|
||||||
|
@ -324,7 +325,9 @@ func (gosec *Analyzer) load(pkgPath string, conf *packages.Config) ([]*packages.
|
||||||
// step 1/3 create build context.
|
// step 1/3 create build context.
|
||||||
buildD := build.Default
|
buildD := build.Default
|
||||||
// step 2/3: add build tags to get env dependent files into basePackage.
|
// step 2/3: add build tags to get env dependent files into basePackage.
|
||||||
|
gosec.mu.Lock()
|
||||||
buildD.BuildTags = conf.BuildFlags
|
buildD.BuildTags = conf.BuildFlags
|
||||||
|
gosec.mu.Unlock()
|
||||||
basePackage, err := buildD.ImportDir(pkgPath, build.ImportComment)
|
basePackage, err := buildD.ImportDir(pkgPath, build.ImportComment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []*packages.Package{}, fmt.Errorf("importing dir %q: %w", pkgPath, err)
|
return []*packages.Package{}, fmt.Errorf("importing dir %q: %w", pkgPath, err)
|
||||||
|
@ -348,7 +351,9 @@ func (gosec *Analyzer) load(pkgPath string, conf *packages.Config) ([]*packages.
|
||||||
}
|
}
|
||||||
|
|
||||||
// step 3/3 remove build tags from conf to proceed build correctly.
|
// step 3/3 remove build tags from conf to proceed build correctly.
|
||||||
|
gosec.mu.Lock()
|
||||||
conf.BuildFlags = nil
|
conf.BuildFlags = nil
|
||||||
|
defer gosec.mu.Unlock()
|
||||||
pkgs, err := packages.Load(conf, packageFiles...)
|
pkgs, err := packages.Load(conf, packageFiles...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []*packages.Package{}, fmt.Errorf("loading files from package %q: %w", pkgPath, err)
|
return []*packages.Package{}, fmt.Errorf("loading files from package %q: %w", pkgPath, err)
|
||||||
|
|
Loading…
Reference in a new issue