From 25b55e1704c9afaf0969c1a2d4bbe74251b979d1 Mon Sep 17 00:00:00 2001 From: guangwu Date: Wed, 1 May 2024 00:47:17 +0800 Subject: [PATCH] fix: close temp rpmdb file (#2792) * fix: close temp rpmdb file and db Signed-off-by: guoguangwu * chore: fix linter Signed-off-by: Christopher Phillips --------- Signed-off-by: guoguangwu Signed-off-by: Christopher Phillips Co-authored-by: Christopher Phillips --- syft/pkg/cataloger/redhat/parse_rpm_db.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/syft/pkg/cataloger/redhat/parse_rpm_db.go b/syft/pkg/cataloger/redhat/parse_rpm_db.go index f4634726b..cf9742a81 100644 --- a/syft/pkg/cataloger/redhat/parse_rpm_db.go +++ b/syft/pkg/cataloger/redhat/parse_rpm_db.go @@ -17,6 +17,7 @@ import ( ) // parseRpmDb parses an "Packages" RPM DB and returns the Packages listed within it. +// nolint:funlen func parseRpmDB(_ context.Context, resolver file.Resolver, env *generic.Environment, reader file.LocationReadCloser) ([]pkg.Package, []artifact.Relationship, error) { f, err := os.CreateTemp("", "rpmdb") if err != nil { @@ -24,6 +25,10 @@ func parseRpmDB(_ context.Context, resolver file.Resolver, env *generic.Environm } defer func() { + err = f.Close() + if err != nil { + log.Errorf("failed to close temp rpmdb file: %+v", err) + } err = os.Remove(f.Name()) if err != nil { log.Errorf("failed to remove temp rpmdb file: %+v", err) @@ -39,6 +44,7 @@ func parseRpmDB(_ context.Context, resolver file.Resolver, env *generic.Environm if err != nil { return nil, nil, err } + defer db.Close() pkgList, err := db.ListPackages() if err != nil {