summaryrefslogtreecommitdiff
path: root/system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch')
-rw-r--r--system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch289
1 files changed, 0 insertions, 289 deletions
diff --git a/system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch b/system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch
deleted file mode 100644
index f343afae57..0000000000
--- a/system/docker/patches/0005-vendor-update-tar-split-to-v0.9.10.patch
+++ /dev/null
@@ -1,289 +0,0 @@
-From d8029ceb202fda8160855c07081dc51aae1ec1ad Mon Sep 17 00:00:00 2001
-From: Vincent Batts <vbatts@redhat.com>
-Date: Wed, 23 Sep 2015 15:50:23 -0400
-Subject: [PATCH 5/5] vendor: update tar-split to v0.9.10
-
-This addresses handling of non-utf8 file names, namely iso-8859-1.
-
-https://github.com/docker/docker/issues/16516
-
-Reported-by: @kwk
-Signed-off-by: Vincent Batts <vbatts@redhat.com>
----
- hack/vendor.sh | 2 +-
- .../vbatts/tar-split/archive/tar/common.go | 28 ++++++++++++++--
- .../vbatts/tar-split/archive/tar/reader.go | 15 ++++++++-
- .../vbatts/tar-split/archive/tar/writer.go | 2 +-
- .../vbatts/tar-split/tar/asm/assemble.go | 4 +--
- .../vbatts/tar-split/tar/asm/disassemble.go | 11 +++---
- .../vbatts/tar-split/tar/storage/entry.go | 39 ++++++++++++++++++++++
- .../vbatts/tar-split/tar/storage/packer.go | 13 ++++++--
- 8 files changed, 101 insertions(+), 13 deletions(-)
-
-diff --git a/hack/vendor.sh b/hack/vendor.sh
-index 68772ef..52ba6ef 100755
---- a/hack/vendor.sh
-+++ b/hack/vendor.sh
-@@ -36,7 +36,7 @@ clone git github.com/hashicorp/consul v0.5.2
-
- # get graph and distribution packages
- clone git github.com/docker/distribution ec87e9b6971d831f0eff752ddb54fb64693e51cd # docker/1.8 branch
--clone git github.com/vbatts/tar-split v0.9.6
-+clone git github.com/vbatts/tar-split v0.9.10
-
- clone git github.com/docker/notary 8e8122eb5528f621afcd4e2854c47302f17392f7
- clone git github.com/endophage/gotuf a592b03b28b02bb29bb5878308fb1abed63383b5
-diff --git a/vendor/src/github.com/vbatts/tar-split/archive/tar/common.go b/vendor/src/github.com/vbatts/tar-split/archive/tar/common.go
-index e363aa7..c31df06 100644
---- a/vendor/src/github.com/vbatts/tar-split/archive/tar/common.go
-+++ b/vendor/src/github.com/vbatts/tar-split/archive/tar/common.go
-@@ -139,8 +139,8 @@ func (fi headerFileInfo) Mode() (mode os.FileMode) {
- }
-
- switch fi.h.Typeflag {
-- case TypeLink, TypeSymlink:
-- // hard link, symbolic link
-+ case TypeSymlink:
-+ // symbolic link
- mode |= os.ModeSymlink
- case TypeChar:
- // character device node
-@@ -249,6 +249,30 @@ func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {
- if fm&os.ModeSticky != 0 {
- h.Mode |= c_ISVTX
- }
-+ // If possible, populate additional fields from OS-specific
-+ // FileInfo fields.
-+ if sys, ok := fi.Sys().(*Header); ok {
-+ // This FileInfo came from a Header (not the OS). Use the
-+ // original Header to populate all remaining fields.
-+ h.Uid = sys.Uid
-+ h.Gid = sys.Gid
-+ h.Uname = sys.Uname
-+ h.Gname = sys.Gname
-+ h.AccessTime = sys.AccessTime
-+ h.ChangeTime = sys.ChangeTime
-+ if sys.Xattrs != nil {
-+ h.Xattrs = make(map[string]string)
-+ for k, v := range sys.Xattrs {
-+ h.Xattrs[k] = v
-+ }
-+ }
-+ if sys.Typeflag == TypeLink {
-+ // hard link
-+ h.Typeflag = TypeLink
-+ h.Size = 0
-+ h.Linkname = sys.Linkname
-+ }
-+ }
- if sysStat != nil {
- return h, sysStat(fi, h)
- }
-diff --git a/vendor/src/github.com/vbatts/tar-split/archive/tar/reader.go b/vendor/src/github.com/vbatts/tar-split/archive/tar/reader.go
-index c72e002..4168ea2 100644
---- a/vendor/src/github.com/vbatts/tar-split/archive/tar/reader.go
-+++ b/vendor/src/github.com/vbatts/tar-split/archive/tar/reader.go
-@@ -138,7 +138,13 @@ func (tr *Reader) Next() (*Header, error) {
- // We actually read the whole file,
- // but this skips alignment padding
- tr.skipUnread()
-+ if tr.err != nil {
-+ return nil, tr.err
-+ }
- hdr = tr.readHeader()
-+ if hdr == nil {
-+ return nil, tr.err
-+ }
- mergePAX(hdr, headers)
-
- // Check for a PAX format sparse file
-@@ -397,7 +403,7 @@ func parsePAX(r io.Reader) (map[string]string, error) {
- }
- // Parse the first token as a decimal integer.
- n, err := strconv.ParseInt(string(buf[:sp]), 10, 0)
-- if err != nil {
-+ if err != nil || n < 5 || int64(len(buf)) < n {
- return nil, ErrHeader
- }
- // Extract everything between the decimal and the n -1 on the
-@@ -553,6 +559,10 @@ func (tr *Reader) readHeader() *Header {
- hdr.Uid = int(tr.octal(s.next(8)))
- hdr.Gid = int(tr.octal(s.next(8)))
- hdr.Size = tr.octal(s.next(12))
-+ if hdr.Size < 0 {
-+ tr.err = ErrHeader
-+ return nil
-+ }
- hdr.ModTime = time.Unix(tr.octal(s.next(12)), 0)
- s.next(8) // chksum
- hdr.Typeflag = s.next(1)[0]
-@@ -895,6 +905,9 @@ func (sfr *sparseFileReader) Read(b []byte) (n int, err error) {
- // Otherwise, we're at the end of the file
- return 0, io.EOF
- }
-+ if sfr.tot < sfr.sp[0].offset {
-+ return 0, io.ErrUnexpectedEOF
-+ }
- if sfr.pos < sfr.sp[0].offset {
- // We're in a hole
- n = sfr.readHole(b, sfr.sp[0].offset)
-diff --git a/vendor/src/github.com/vbatts/tar-split/archive/tar/writer.go b/vendor/src/github.com/vbatts/tar-split/archive/tar/writer.go
-index dafb2ca..9dbc01a 100644
---- a/vendor/src/github.com/vbatts/tar-split/archive/tar/writer.go
-+++ b/vendor/src/github.com/vbatts/tar-split/archive/tar/writer.go
-@@ -355,7 +355,7 @@ func paxHeader(msg string) string {
- // hdr.Size bytes are written after WriteHeader.
- func (tw *Writer) Write(b []byte) (n int, err error) {
- if tw.closed {
-- err = ErrWriteTooLong
-+ err = ErrWriteAfterClose
- return
- }
- overwrite := false
-diff --git a/vendor/src/github.com/vbatts/tar-split/tar/asm/assemble.go b/vendor/src/github.com/vbatts/tar-split/tar/asm/assemble.go
-index 74317cb..83d6426 100644
---- a/vendor/src/github.com/vbatts/tar-split/tar/asm/assemble.go
-+++ b/vendor/src/github.com/vbatts/tar-split/tar/asm/assemble.go
-@@ -39,7 +39,7 @@ func NewOutputTarStream(fg storage.FileGetter, up storage.Unpacker) io.ReadClose
- if entry.Size == 0 {
- continue
- }
-- fh, err := fg.Get(entry.Name)
-+ fh, err := fg.Get(entry.GetName())
- if err != nil {
- pw.CloseWithError(err)
- return
-@@ -56,7 +56,7 @@ func NewOutputTarStream(fg storage.FileGetter, up storage.Unpacker) io.ReadClose
- // but since it's coming through the PipeReader, the context of
- // _which_ file would be lost...
- fh.Close()
-- pw.CloseWithError(fmt.Errorf("file integrity checksum failed for %q", entry.Name))
-+ pw.CloseWithError(fmt.Errorf("file integrity checksum failed for %q", entry.GetName()))
- return
- }
- fh.Close()
-diff --git a/vendor/src/github.com/vbatts/tar-split/tar/asm/disassemble.go b/vendor/src/github.com/vbatts/tar-split/tar/asm/disassemble.go
-index 7986890..54ef23a 100644
---- a/vendor/src/github.com/vbatts/tar-split/tar/asm/disassemble.go
-+++ b/vendor/src/github.com/vbatts/tar-split/tar/asm/disassemble.go
-@@ -92,13 +92,16 @@ func NewInputTarStream(r io.Reader, p storage.Packer, fp storage.FilePutter) (io
- }
- }
-
-- // File entries added, regardless of size
-- _, err = p.AddEntry(storage.Entry{
-+ entry := storage.Entry{
- Type: storage.FileType,
-- Name: hdr.Name,
- Size: hdr.Size,
- Payload: csum,
-- })
-+ }
-+ // For proper marshalling of non-utf8 characters
-+ entry.SetName(hdr.Name)
-+
-+ // File entries added, regardless of size
-+ _, err = p.AddEntry(entry)
- if err != nil {
- pW.CloseWithError(err)
- return
-diff --git a/vendor/src/github.com/vbatts/tar-split/tar/storage/entry.go b/vendor/src/github.com/vbatts/tar-split/tar/storage/entry.go
-index 38fe7ba..c91e7ea 100644
---- a/vendor/src/github.com/vbatts/tar-split/tar/storage/entry.go
-+++ b/vendor/src/github.com/vbatts/tar-split/tar/storage/entry.go
-@@ -1,5 +1,7 @@
- package storage
-
-+import "unicode/utf8"
-+
- // Entries is for sorting by Position
- type Entries []Entry
-
-@@ -33,7 +35,44 @@ const (
- type Entry struct {
- Type Type `json:"type"`
- Name string `json:"name,omitempty"`
-+ NameRaw []byte `json:"name_raw,omitempty"`
- Size int64 `json:"size,omitempty"`
- Payload []byte `json:"payload"` // SegmentType stores payload here; FileType stores crc64 checksum here;
- Position int `json:"position"`
- }
-+
-+// SetName will check name for valid UTF-8 string, and set the appropriate
-+// field. See https://github.com/vbatts/tar-split/issues/17
-+func (e *Entry) SetName(name string) {
-+ if utf8.ValidString(name) {
-+ e.Name = name
-+ } else {
-+ e.NameRaw = []byte(name)
-+ }
-+}
-+
-+// SetNameBytes will check name for valid UTF-8 string, and set the appropriate
-+// field
-+func (e *Entry) SetNameBytes(name []byte) {
-+ if utf8.Valid(name) {
-+ e.Name = string(name)
-+ } else {
-+ e.NameRaw = name
-+ }
-+}
-+
-+// GetName returns the string for the entry's name, regardless of the field stored in
-+func (e *Entry) GetName() string {
-+ if len(e.NameRaw) > 0 {
-+ return string(e.NameRaw)
-+ }
-+ return e.Name
-+}
-+
-+// GetNameBytes returns the bytes for the entry's name, regardless of the field stored in
-+func (e *Entry) GetNameBytes() []byte {
-+ if len(e.NameRaw) > 0 {
-+ return e.NameRaw
-+ }
-+ return []byte(e.Name)
-+}
-diff --git a/vendor/src/github.com/vbatts/tar-split/tar/storage/packer.go b/vendor/src/github.com/vbatts/tar-split/tar/storage/packer.go
-index a02a19a..0c9d99b 100644
---- a/vendor/src/github.com/vbatts/tar-split/tar/storage/packer.go
-+++ b/vendor/src/github.com/vbatts/tar-split/tar/storage/packer.go
-@@ -6,6 +6,7 @@ import (
- "errors"
- "io"
- "path/filepath"
-+ "unicode/utf8"
- )
-
- // ErrDuplicatePath occurs when a tar archive has more than one entry for the
-@@ -61,7 +62,7 @@ func (jup *jsonUnpacker) Next() (*Entry, error) {
-
- // check for dup name
- if e.Type == FileType {
-- cName := filepath.Clean(e.Name)
-+ cName := filepath.Clean(e.GetName())
- if _, ok := jup.seen[cName]; ok {
- return nil, ErrDuplicatePath
- }
-@@ -93,9 +94,17 @@ type jsonPacker struct {
- type seenNames map[string]struct{}
-
- func (jp *jsonPacker) AddEntry(e Entry) (int, error) {
-+ // if Name is not valid utf8, switch it to raw first.
-+ if e.Name != "" {
-+ if !utf8.ValidString(e.Name) {
-+ e.NameRaw = []byte(e.Name)
-+ e.Name = ""
-+ }
-+ }
-+
- // check early for dup name
- if e.Type == FileType {
-- cName := filepath.Clean(e.Name)
-+ cName := filepath.Clean(e.GetName())
- if _, ok := jp.seen[cName]; ok {
- return -1, ErrDuplicatePath
- }
---
-2.4.3
-