From c1c5dca31cad917756d0f4da8f2fc3831305cd6a Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 16 May 2014 12:15:21 -0700 Subject: [PATCH 1/3] archive: simplify DetectCompression Docker-DCO-1.1-Signed-off-by: Johan Euphrosine (github: proppy) Upstream-commit: 3118952e0a63b42b830fc846a56b891d14902976 Component: engine --- components/engine/archive/archive.go | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/components/engine/archive/archive.go b/components/engine/archive/archive.go index 5d29ce8193..c72849097b 100644 --- a/components/engine/archive/archive.go +++ b/components/engine/archive/archive.go @@ -42,26 +42,12 @@ const ( ) func DetectCompression(source []byte) Compression { - sourceLen := len(source) for compression, m := range map[Compression][]byte{ Bzip2: {0x42, 0x5A, 0x68}, Gzip: {0x1F, 0x8B, 0x08}, Xz: {0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00}, } { - fail := false - if len(m) > sourceLen { - utils.Debugf("Len too short") - continue - } - i := 0 - for _, b := range m { - if b != source[i] { - fail = true - break - } - i++ - } - if !fail { + if bytes.Compare(m, source[:len(m)]) == 0 { return compression } } From 1976c1713ab1680217fbf6a1567719ac584a1c9c Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 16 May 2014 12:47:50 -0700 Subject: [PATCH 2/3] archive: fix panic if len(source) < len(m) Docker-DCO-1.1-Signed-off-by: Johan Euphrosine (github: proppy) Upstream-commit: 67ce59a806007cd28d96fd11208c4a113d1b92e0 Component: engine --- components/engine/archive/archive.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/engine/archive/archive.go b/components/engine/archive/archive.go index c72849097b..1eda6c2de9 100644 --- a/components/engine/archive/archive.go +++ b/components/engine/archive/archive.go @@ -47,6 +47,10 @@ func DetectCompression(source []byte) Compression { Gzip: {0x1F, 0x8B, 0x08}, Xz: {0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00}, } { + if len(source) < len(m) { + utils.Debugf("Len too short") + continue + } if bytes.Compare(m, source[:len(m)]) == 0 { return compression } From 25b0a0131ed255a034ed1c7c554db6251f7cc05c Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 16 May 2014 16:26:28 -0700 Subject: [PATCH 3/3] archive: add missing bytes package Docker-DCO-1.1-Signed-off-by: Johan Euphrosine (github: proppy) Upstream-commit: 4a3aefbb5232433098c9d27423a10031eb17ff93 Component: engine --- components/engine/archive/archive.go | 1 + 1 file changed, 1 insertion(+) diff --git a/components/engine/archive/archive.go b/components/engine/archive/archive.go index 1eda6c2de9..160ea0737e 100644 --- a/components/engine/archive/archive.go +++ b/components/engine/archive/archive.go @@ -2,6 +2,7 @@ package archive import ( "bufio" + "bytes" "compress/bzip2" "compress/gzip" "errors"