diff --git a/components/engine/archive.go b/components/engine/archive.go index 5756490bff..6ce1292bb6 100644 --- a/components/engine/archive.go +++ b/components/engine/archive.go @@ -108,7 +108,9 @@ func TarFilter(path string, compression Compression, filter []string) (io.Reader // identity (uncompressed), gzip, bzip2, xz. // FIXME: specify behavior when target path exists vs. doesn't exist. func Untar(archive io.Reader, path string) error { - + if archive == nil { + return fmt.Errorf("Empty archive") + } bufferedArchive := bufio.NewReaderSize(archive, 10) buf, err := bufferedArchive.Peek(10) if err != nil { diff --git a/components/engine/image.go b/components/engine/image.go index cd76b8c432..bb6598b262 100644 --- a/components/engine/image.go +++ b/components/engine/image.go @@ -92,9 +92,11 @@ func StoreImage(img *Image, layerData Archive, root string, store bool) error { defer file.Close() layerData = file } - - if err := Untar(layerData, layer); err != nil { - return err + // If layerData is not nil, unpack it into the new layer + if layerData != nil { + if err := Untar(layerData, layer); err != nil { + return err + } } return StoreSize(img, root)