From 4380d19ad302ef59772529a34be16c6e5a5b7ff0 Mon Sep 17 00:00:00 2001 From: Andrea Tartaglia Date: Fri, 25 Jul 2025 12:39:56 +0200 Subject: [PATCH] extract dependencies in temp directory first Extracts the downloaded dependencies in a temporary directory and checks for errors before actually moving them in the final `/charts` directory Signed-off-by: Andrea Tartaglia --- pkg/downloader/manager.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 211a38d8d..37fed0efe 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -368,7 +368,16 @@ func (m *Manager) downloadAll(deps []*chart.Dependency) error { } if m.Untar { - chartutil.ExpandFile(m.ChartPath+"/charts/", tmpPath) + tmpDest, err := os.MkdirTemp("", "helm-dependency-") + if err != nil { + saveErrors = append(saveErrors, fmt.Errorf("failed to create temp dir: %w", err)) + break + } + if err := chartutil.ExpandFile(tmpDest, tmpPath); err != nil { + saveErrors = append(saveErrors, fmt.Errorf("failed to expand chart %s: %w", tmpPath, err)) + break + } + defer os.RemoveAll(tmpDest) } churls[churl] = struct{}{}