From 692004c87b11845ebc4498f4c40ee905a32878c5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Sat, 22 Jun 2013 12:29:42 -0700 Subject: [PATCH] Fix a bug which caused creation of empty images (and volumes) to crash. FIxes #995. Upstream-commit: 290b1973a90e39f2b7f751f038633b9e6e4a1694 Component: engine --- components/engine/archive.go | 4 +++- components/engine/image.go | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) 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)