From dc6063672cd4f9edcc3b6f8652166da965218e74 Mon Sep 17 00:00:00 2001 From: Joe Ferguson Date: Fri, 21 Jul 2017 17:47:15 -0700 Subject: [PATCH] Close readclosers returned by DecompressStream Signed-off-by: Joe Ferguson Upstream-commit: 76e99e1a8b60c831415d2f6a6a7954e16c25620b Component: engine --- components/engine/pkg/archive/archive.go | 1 + components/engine/pkg/archive/diff.go | 4 +++- components/engine/plugin/blobstore.go | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/engine/pkg/archive/archive.go b/components/engine/pkg/archive/archive.go index 5fb3995e9b..daddebded4 100644 --- a/components/engine/pkg/archive/archive.go +++ b/components/engine/pkg/archive/archive.go @@ -127,6 +127,7 @@ func IsArchivePath(path string) bool { if err != nil { return false } + defer rdr.Close() r := tar.NewReader(rdr) _, err = r.Next() return err == nil diff --git a/components/engine/pkg/archive/diff.go b/components/engine/pkg/archive/diff.go index d0cff98ffc..fae4b9de02 100644 --- a/components/engine/pkg/archive/diff.go +++ b/components/engine/pkg/archive/diff.go @@ -247,10 +247,12 @@ func applyLayerHandler(dest string, layer io.Reader, options *TarOptions, decomp defer system.Umask(oldmask) // ignore err, ErrNotSupportedPlatform if decompress { - layer, err = DecompressStream(layer) + decompLayer, err := DecompressStream(layer) if err != nil { return 0, err } + defer decompLayer.Close() + layer = decompLayer } return UnpackLayer(dest, layer, options) } diff --git a/components/engine/plugin/blobstore.go b/components/engine/plugin/blobstore.go index fd7f040efc..a24e7bdf4f 100644 --- a/components/engine/plugin/blobstore.go +++ b/components/engine/plugin/blobstore.go @@ -145,6 +145,7 @@ func (dm *downloadManager) Download(ctx context.Context, initialRootFS image.Roo if err != nil { return initialRootFS, nil, err } + defer inflatedLayerData.Close() digester := digest.Canonical.Digester() if _, err := chrootarchive.ApplyLayer(dm.tmpDir, io.TeeReader(inflatedLayerData, digester.Hash())); err != nil { return initialRootFS, nil, err