From d19130f69ea4036bff9615f120dbb509fe31897b Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Mon, 25 Aug 2025 22:23:20 -0400 Subject: [PATCH] Fix file handle management in tar extractors Use defer outFile.Close() to avoid multiple close calls and ensure proper resource cleanup Co-authored-by: Andrew Block Signed-off-by: Scott Rigby --- internal/plugin/installer/http_installer.go | 3 +-- internal/plugin/installer/oci_installer.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/internal/plugin/installer/http_installer.go b/internal/plugin/installer/http_installer.go index b168f8646..e598bce02 100644 --- a/internal/plugin/installer/http_installer.go +++ b/internal/plugin/installer/http_installer.go @@ -256,11 +256,10 @@ func (g *TarGzExtractor) Extract(buffer *bytes.Buffer, targetDir string) error { if err != nil { return err } + defer outFile.Close() if _, err := io.Copy(outFile, tarReader); err != nil { - outFile.Close() return err } - outFile.Close() // We don't want to process these extension header files. case tar.TypeXGlobalHeader, tar.TypeXHeader: continue diff --git a/internal/plugin/installer/oci_installer.go b/internal/plugin/installer/oci_installer.go index 89dd44056..a96a94ee1 100644 --- a/internal/plugin/installer/oci_installer.go +++ b/internal/plugin/installer/oci_installer.go @@ -200,11 +200,10 @@ func extractTar(r io.Reader, targetDir string) error { if err != nil { return err } + defer outFile.Close() if _, err := io.Copy(outFile, tarReader); err != nil { - outFile.Close() return err } - outFile.Close() case tar.TypeXGlobalHeader, tar.TypeXHeader: // Skip these continue