Преглед изворни кода

Close readclosers returned by DecompressStream

Signed-off-by: Joe Ferguson <joe@infosiftr.com>
Joe Ferguson пре 8 година
родитељ
комит
76e99e1a8b
3 измењених фајлова са 5 додато и 1 уклоњено
  1. 1 0
      pkg/archive/archive.go
  2. 3 1
      pkg/archive/diff.go
  3. 1 0
      plugin/blobstore.go

+ 1 - 0
pkg/archive/archive.go

@@ -127,6 +127,7 @@ func IsArchivePath(path string) bool {
 	if err != nil {
 	if err != nil {
 		return false
 		return false
 	}
 	}
+	defer rdr.Close()
 	r := tar.NewReader(rdr)
 	r := tar.NewReader(rdr)
 	_, err = r.Next()
 	_, err = r.Next()
 	return err == nil
 	return err == nil

+ 3 - 1
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
 	defer system.Umask(oldmask) // ignore err, ErrNotSupportedPlatform
 
 
 	if decompress {
 	if decompress {
-		layer, err = DecompressStream(layer)
+		decompLayer, err := DecompressStream(layer)
 		if err != nil {
 		if err != nil {
 			return 0, err
 			return 0, err
 		}
 		}
+		defer decompLayer.Close()
+		layer = decompLayer
 	}
 	}
 	return UnpackLayer(dest, layer, options)
 	return UnpackLayer(dest, layer, options)
 }
 }

+ 1 - 0
plugin/blobstore.go

@@ -145,6 +145,7 @@ func (dm *downloadManager) Download(ctx context.Context, initialRootFS image.Roo
 		if err != nil {
 		if err != nil {
 			return initialRootFS, nil, err
 			return initialRootFS, nil, err
 		}
 		}
+		defer inflatedLayerData.Close()
 		digester := digest.Canonical.Digester()
 		digester := digest.Canonical.Digester()
 		if _, err := chrootarchive.ApplyLayer(dm.tmpDir, io.TeeReader(inflatedLayerData, digester.Hash())); err != nil {
 		if _, err := chrootarchive.ApplyLayer(dm.tmpDir, io.TeeReader(inflatedLayerData, digester.Hash())); err != nil {
 			return initialRootFS, nil, err
 			return initialRootFS, nil, err