Skip to content

Commit 03d039f

Browse files
fix(conda): memory leak by adding closure method for package.json file (#9349)
Co-authored-by: DmitriyLewen <[email protected]>
1 parent 235c24e commit 03d039f

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

pkg/fanal/analyzer/language/conda/environment/environment.go

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,7 @@ func findLicenseFromEnvDir(pkg types.Package, prefix string) ([]string, error) {
9090
return nil, xerrors.Errorf("incorrect packageJSON file pattern: %w", err)
9191
}
9292
if matched {
93-
file, err := os.Open(filepath.Join(condaMetaDir, entry.Name()))
94-
if err != nil {
95-
return nil, xerrors.Errorf("unable to open packageJSON file: %w", err)
96-
}
97-
packageJson, _, err := meta.NewParser().Parse(file)
98-
if err != nil {
99-
return nil, xerrors.Errorf("unable to parse packageJSON file: %w", err)
100-
}
101-
// packageJson always contain only 1 element
102-
// cf. https://github.com/aquasecurity/trivy/blob/c3192f061d7e84eaf38df8df7c879dc00b4ca137/pkg/dependency/parser/conda/meta/parse.go#L39-L45
103-
return packageJson[0].Licenses, nil
93+
return licenseFromPackageJson(condaMetaDir, entry.Name())
10494
}
10595
}
10696
return nil, xerrors.Errorf("meta file didn't find")
@@ -117,3 +107,20 @@ func (a environmentAnalyzer) Type() analyzer.Type {
117107
func (a environmentAnalyzer) Version() int {
118108
return version
119109
}
110+
111+
func licenseFromPackageJson(condaMetaDir, fileName string) ([]string, error) {
112+
file, err := os.Open(filepath.Join(condaMetaDir, fileName))
113+
if err != nil {
114+
return nil, xerrors.Errorf("unable to open packageJSON file: %w", err)
115+
}
116+
117+
defer file.Close()
118+
119+
packageJson, _, err := meta.NewParser().Parse(file)
120+
if err != nil {
121+
return nil, xerrors.Errorf("unable to parse packageJSON file: %w", err)
122+
}
123+
// packageJson always contain only 1 element
124+
// cf. https://github.com/aquasecurity/trivy/blob/c3192f061d7e84eaf38df8df7c879dc00b4ca137/pkg/dependency/parser/conda/meta/parse.go#L39-L45
125+
return packageJson[0].Licenses, nil
126+
}

0 commit comments

Comments
 (0)