Skip to content

Commit 085dc34

Browse files
authored
Merge pull request #40353 from thaJeztah/bump_golang_1.14
Bump golang 1.16.5
2 parents 9e8cf10 + 3ed804a commit 085dc34

13 files changed

Lines changed: 93 additions & 70 deletions

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
ARG CROSS="false"
44
ARG SYSTEMD="false"
55
# IMPORTANT: When updating this please note that stdlib archive/tar pkg is vendored
6-
ARG GO_VERSION=1.13.15
6+
ARG GO_VERSION=1.16.5
77
ARG DEBIAN_FRONTEND=noninteractive
88
ARG VPNKIT_VERSION=0.5.0
99
ARG DOCKER_BUILDTAGS="apparmor seccomp"

Dockerfile.e2e

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ARG GO_VERSION=1.13.15
1+
ARG GO_VERSION=1.16.5
22

33
FROM golang:${GO_VERSION}-alpine AS base
44
ENV GO111MODULE=off

Dockerfile.simple

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
# This represents the bare minimum required to build and test Docker.
77

8-
ARG GO_VERSION=1.13.15
8+
ARG GO_VERSION=1.16.5
99

1010
FROM golang:${GO_VERSION}-buster
1111
ENV GO111MODULE=off

Dockerfile.windows

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ FROM microsoft/windowsservercore
165165
# Use PowerShell as the default shell
166166
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
167167

168-
ARG GO_VERSION=1.13.15
168+
ARG GO_VERSION=1.16.5
169169
ARG GOTESTSUM_COMMIT=v0.5.3
170170

171171
# Environment variable notes:

patches/0001-archive-tar-do-not-populate-user-group-names.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ index 868105f338..9640ed4bab 100644
2323
@@ -8,10 +8,7 @@ package tar
2424

2525
import (
26-
"os"
26+
"io/fs"
2727
- "os/user"
2828
"runtime"
2929
- "strconv"
@@ -39,7 +39,7 @@ index 868105f338..9640ed4bab 100644
3939
-// The downside is that renaming uname or gname by the OS never takes effect.
4040
-var userMap, groupMap sync.Map // map[int]string
4141
-
42-
func statUnix(fi os.FileInfo, h *Header) error {
42+
func statUnix(fi fs.FileInfo, h *Header) error {
4343
sys, ok := fi.Sys().(*syscall.Stat_t)
4444
if !ok {
4545
@@ -31,22 +24,9 @@ func statUnix(fi os.FileInfo, h *Header) error {

vendor/archive/tar/common.go

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ package tar
1313
import (
1414
"errors"
1515
"fmt"
16+
"io/fs"
1617
"math"
17-
"os"
1818
"path"
1919
"reflect"
2020
"strconv"
@@ -525,12 +525,12 @@ func (h Header) allowedFormats() (format Format, paxHdrs map[string]string, err
525525
return format, paxHdrs, err
526526
}
527527

528-
// FileInfo returns an os.FileInfo for the Header.
529-
func (h *Header) FileInfo() os.FileInfo {
528+
// FileInfo returns an fs.FileInfo for the Header.
529+
func (h *Header) FileInfo() fs.FileInfo {
530530
return headerFileInfo{h}
531531
}
532532

533-
// headerFileInfo implements os.FileInfo.
533+
// headerFileInfo implements fs.FileInfo.
534534
type headerFileInfo struct {
535535
h *Header
536536
}
@@ -549,57 +549,57 @@ func (fi headerFileInfo) Name() string {
549549
}
550550

551551
// Mode returns the permission and mode bits for the headerFileInfo.
552-
func (fi headerFileInfo) Mode() (mode os.FileMode) {
552+
func (fi headerFileInfo) Mode() (mode fs.FileMode) {
553553
// Set file permission bits.
554-
mode = os.FileMode(fi.h.Mode).Perm()
554+
mode = fs.FileMode(fi.h.Mode).Perm()
555555

556556
// Set setuid, setgid and sticky bits.
557557
if fi.h.Mode&c_ISUID != 0 {
558-
mode |= os.ModeSetuid
558+
mode |= fs.ModeSetuid
559559
}
560560
if fi.h.Mode&c_ISGID != 0 {
561-
mode |= os.ModeSetgid
561+
mode |= fs.ModeSetgid
562562
}
563563
if fi.h.Mode&c_ISVTX != 0 {
564-
mode |= os.ModeSticky
564+
mode |= fs.ModeSticky
565565
}
566566

567567
// Set file mode bits; clear perm, setuid, setgid, and sticky bits.
568-
switch m := os.FileMode(fi.h.Mode) &^ 07777; m {
568+
switch m := fs.FileMode(fi.h.Mode) &^ 07777; m {
569569
case c_ISDIR:
570-
mode |= os.ModeDir
570+
mode |= fs.ModeDir
571571
case c_ISFIFO:
572-
mode |= os.ModeNamedPipe
572+
mode |= fs.ModeNamedPipe
573573
case c_ISLNK:
574-
mode |= os.ModeSymlink
574+
mode |= fs.ModeSymlink
575575
case c_ISBLK:
576-
mode |= os.ModeDevice
576+
mode |= fs.ModeDevice
577577
case c_ISCHR:
578-
mode |= os.ModeDevice
579-
mode |= os.ModeCharDevice
578+
mode |= fs.ModeDevice
579+
mode |= fs.ModeCharDevice
580580
case c_ISSOCK:
581-
mode |= os.ModeSocket
581+
mode |= fs.ModeSocket
582582
}
583583

584584
switch fi.h.Typeflag {
585585
case TypeSymlink:
586-
mode |= os.ModeSymlink
586+
mode |= fs.ModeSymlink
587587
case TypeChar:
588-
mode |= os.ModeDevice
589-
mode |= os.ModeCharDevice
588+
mode |= fs.ModeDevice
589+
mode |= fs.ModeCharDevice
590590
case TypeBlock:
591-
mode |= os.ModeDevice
591+
mode |= fs.ModeDevice
592592
case TypeDir:
593-
mode |= os.ModeDir
593+
mode |= fs.ModeDir
594594
case TypeFifo:
595-
mode |= os.ModeNamedPipe
595+
mode |= fs.ModeNamedPipe
596596
}
597597

598598
return mode
599599
}
600600

601601
// sysStat, if non-nil, populates h from system-dependent fields of fi.
602-
var sysStat func(fi os.FileInfo, h *Header) error
602+
var sysStat func(fi fs.FileInfo, h *Header) error
603603

604604
const (
605605
// Mode constants from the USTAR spec:
@@ -623,10 +623,10 @@ const (
623623
// If fi describes a symlink, FileInfoHeader records link as the link target.
624624
// If fi describes a directory, a slash is appended to the name.
625625
//
626-
// Since os.FileInfo's Name method only returns the base name of
626+
// Since fs.FileInfo's Name method only returns the base name of
627627
// the file it describes, it may be necessary to modify Header.Name
628628
// to provide the full path name of the file.
629-
func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {
629+
func FileInfoHeader(fi fs.FileInfo, link string) (*Header, error) {
630630
if fi == nil {
631631
return nil, errors.New("archive/tar: FileInfo is nil")
632632
}
@@ -643,29 +643,29 @@ func FileInfoHeader(fi os.FileInfo, link string) (*Header, error) {
643643
case fi.IsDir():
644644
h.Typeflag = TypeDir
645645
h.Name += "/"
646-
case fm&os.ModeSymlink != 0:
646+
case fm&fs.ModeSymlink != 0:
647647
h.Typeflag = TypeSymlink
648648
h.Linkname = link
649-
case fm&os.ModeDevice != 0:
650-
if fm&os.ModeCharDevice != 0 {
649+
case fm&fs.ModeDevice != 0:
650+
if fm&fs.ModeCharDevice != 0 {
651651
h.Typeflag = TypeChar
652652
} else {
653653
h.Typeflag = TypeBlock
654654
}
655-
case fm&os.ModeNamedPipe != 0:
655+
case fm&fs.ModeNamedPipe != 0:
656656
h.Typeflag = TypeFifo
657-
case fm&os.ModeSocket != 0:
657+
case fm&fs.ModeSocket != 0:
658658
return nil, fmt.Errorf("archive/tar: sockets not supported")
659659
default:
660660
return nil, fmt.Errorf("archive/tar: unknown file mode %v", fm)
661661
}
662-
if fm&os.ModeSetuid != 0 {
662+
if fm&fs.ModeSetuid != 0 {
663663
h.Mode |= c_ISUID
664664
}
665-
if fm&os.ModeSetgid != 0 {
665+
if fm&fs.ModeSetgid != 0 {
666666
h.Mode |= c_ISGID
667667
}
668-
if fm&os.ModeSticky != 0 {
668+
if fm&fs.ModeSticky != 0 {
669669
h.Mode |= c_ISVTX
670670
}
671671
// If possible, populate additional fields from OS-specific

vendor/archive/tar/reader.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package tar
77
import (
88
"bytes"
99
"io"
10-
"io/ioutil"
1110
"strconv"
1211
"strings"
1312
"time"
@@ -104,7 +103,7 @@ func (tr *Reader) next() (*Header, error) {
104103
continue // This is a meta header affecting the next header
105104
case TypeGNULongName, TypeGNULongLink:
106105
format.mayOnlyBe(FormatGNU)
107-
realname, err := ioutil.ReadAll(tr)
106+
realname, err := io.ReadAll(tr)
108107
if err != nil {
109108
return nil, err
110109
}
@@ -294,7 +293,7 @@ func mergePAX(hdr *Header, paxHdrs map[string]string) (err error) {
294293
// parsePAX parses PAX headers.
295294
// If an extended header (type 'x') is invalid, ErrHeader is returned
296295
func parsePAX(r io.Reader) (map[string]string, error) {
297-
buf, err := ioutil.ReadAll(r)
296+
buf, err := io.ReadAll(r)
298297
if err != nil {
299298
return nil, err
300299
}
@@ -433,7 +432,7 @@ func (tr *Reader) readHeader() (*Header, *block, error) {
433432
// files generated by a pre-Go1.8 toolchain. If the generated file
434433
// happened to have a prefix field that parses as valid
435434
// atime and ctime fields (e.g., when they are valid octal strings),
436-
// then it is impossible to distinguish between an valid GNU file
435+
// then it is impossible to distinguish between a valid GNU file
437436
// and an invalid pre-Go1.8 file.
438437
//
439438
// See https://golang.org/issues/12594
@@ -850,7 +849,7 @@ func discard(r io.Reader, n int64) error {
850849
}
851850
}
852851

853-
copySkipped, err := io.CopyN(ioutil.Discard, r, n-seekSkipped)
852+
copySkipped, err := io.CopyN(io.Discard, r, n-seekSkipped)
854853
if err == io.EOF && seekSkipped+copySkipped < n {
855854
err = io.ErrUnexpectedEOF
856855
}

vendor/archive/tar/reader_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"errors"
1111
"fmt"
1212
"io"
13-
"io/ioutil"
1413
"math"
1514
"os"
1615
"path"
@@ -773,7 +772,7 @@ func TestReadTruncation(t *testing.T) {
773772
"testdata/pax-path-hdr.tar",
774773
"testdata/sparse-formats.tar",
775774
} {
776-
buf, err := ioutil.ReadFile(p)
775+
buf, err := os.ReadFile(p)
777776
if err != nil {
778777
t.Fatalf("unexpected error: %v", err)
779778
}
@@ -865,7 +864,7 @@ func TestReadTruncation(t *testing.T) {
865864
}
866865
cnt++
867866
if s2 == "manual" {
868-
if _, err = tr.writeTo(ioutil.Discard); err != nil {
867+
if _, err = tr.writeTo(io.Discard); err != nil {
869868
break
870869
}
871870
}

vendor/archive/tar/stat_unix.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
package tar
88

99
import (
10-
"os"
10+
"io/fs"
1111
"runtime"
1212
"syscall"
1313
)
@@ -16,7 +16,7 @@ func init() {
1616
sysStat = statUnix
1717
}
1818

19-
func statUnix(fi os.FileInfo, h *Header) error {
19+
func statUnix(fi fs.FileInfo, h *Header) error {
2020
sys, ok := fi.Sys().(*syscall.Stat_t)
2121
if !ok {
2222
return nil
@@ -46,7 +46,7 @@ func statUnix(fi os.FileInfo, h *Header) error {
4646
minor := uint32((dev & 0x00000000000000ff) >> 0)
4747
minor |= uint32((dev & 0x00000ffffff00000) >> 12)
4848
h.Devmajor, h.Devminor = int64(major), int64(minor)
49-
case "darwin":
49+
case "darwin", "ios":
5050
// Copied from golang.org/x/sys/unix/dev_darwin.go.
5151
major := uint32((dev >> 24) & 0xff)
5252
minor := uint32(dev & 0xffffff)

vendor/archive/tar/strconv.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func isASCII(s string) bool {
2828
}
2929

3030
// toASCII converts the input to an ASCII C-style string.
31-
// This a best effort conversion, so invalid characters are dropped.
31+
// This is a best effort conversion, so invalid characters are dropped.
3232
func toASCII(s string) string {
3333
if isASCII(s) {
3434
return s
@@ -265,8 +265,27 @@ func parsePAXRecord(s string) (k, v, r string, err error) {
265265
return "", "", s, ErrHeader
266266
}
267267

268+
afterSpace := int64(sp + 1)
269+
beforeLastNewLine := n - 1
270+
// In some cases, "length" was perhaps padded/malformed, and
271+
// trying to index past where the space supposedly is goes past
272+
// the end of the actual record.
273+
// For example:
274+
// "0000000000000000000000000000000030 mtime=1432668921.098285006\n30 ctime=2147483649.15163319"
275+
// ^ ^
276+
// | |
277+
// | afterSpace=35
278+
// |
279+
// beforeLastNewLine=29
280+
// yet indexOf(firstSpace) MUST BE before endOfRecord.
281+
//
282+
// See https://golang.org/issues/40196.
283+
if afterSpace >= beforeLastNewLine {
284+
return "", "", s, ErrHeader
285+
}
286+
268287
// Extract everything between the space and the final newline.
269-
rec, nl, rem := s[sp+1:n-1], s[n-1:n], s[n:]
288+
rec, nl, rem := s[afterSpace:beforeLastNewLine], s[beforeLastNewLine:n], s[n:]
270289
if nl != "\n" {
271290
return "", "", s, ErrHeader
272291
}

0 commit comments

Comments
 (0)