Skip to content

Commit 673570c

Browse files
committed
Merge remote-tracking branch 'upstream/master' into release-3.8
2 parents 1a98ffa + 8960f2b commit 673570c

File tree

9 files changed

+113
-33
lines changed

9 files changed

+113
-33
lines changed

.circleci/config.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ executors:
2323
password: $CIRCLE_CI_DOCKER_PASSWORD
2424
macos-machine:
2525
macos:
26-
xcode: "10.2.0"
26+
xcode: 12.4.0
2727
ubuntu-machine:
2828
working_directory: ~/go/singularity
2929
machine:
@@ -119,10 +119,10 @@ jobs:
119119
name: Check Module Tidiness
120120
command: git diff --exit-code -- go.mod go.sum
121121

122-
check-stretch:
122+
check-debian:
123123
executor:
124124
name: golang
125-
variant: stretch
125+
variant: buster
126126
steps:
127127
- checkout
128128
- install-deps-apt:
@@ -226,7 +226,7 @@ workflows:
226226
build_and_test:
227227
jobs:
228228
- check-go-mod
229-
- check-stretch
229+
- check-debian
230230
- check-alpine
231231
- check-darwin
232232
- short-unit-tests

.github/RELEASE_PROCEDURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ bug(s), and well covered by tests.
7171
4. Modify the `README.md`, `INSTALL.md`, `CHANGELOG.md` via PR against
7272
the release branch, so that they reflect the version to be released.
7373
5. Apply an annotated tag via `git tag -a -m "SingularityCE v3.8.0" v3.8.0`.
74-
6. Push the tag via `git push upstream v3.8.0-rc.1`.
74+
6. Push the tag via `git push upstream v3.8.0`.
7575
7. Create a tarball via `mconfig -v && make dist`.
7676
8. Test intallation from the tarball.
7777
9. Compute the sha256sum of the tarball e.g. `sha256sum *.tar.gz > sha256sums`.

CHANGELOG.md

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# SingularityCE Changelog
22

3-
## v3.8.0-rc.2 [2021-05-18]
3+
## v3.8.0 [2021-05-26]
44

5-
This is the second release candidate for SingularityCE 3.8.0, the Community
5+
This is the first release of SingularityCE 3.8.0, the Community
66
Edition of the Singularity container runtime hosted at
77
https://github.com/sylabs/singularity.
88

@@ -55,11 +55,26 @@ of `make test` for ease of use:
5555

5656
----
5757

58-
## v3.7.3 - [2021-04-06]
58+
## v3.7.4 - [2021-05-26]
59+
60+
**Singularity 3.7.4 is the most recent stable release of Singularity prior to Sylabs' fork from https://github.com/hpcng/singularity**
5961

60-
**Singularity 3.7.3 is the most recent stable release of Singularity prior to Sylabs' fork from https://github.com/hpcng/singularity**
62+
The 3.7.4 release is identical to https://github.com/hpcng/singularity/releases/tag/v3.7.4 and is provided for convenience to users arriving from outdated links.
63+
64+
### Security Related Fixes
6165

62-
The 3.7.3 release is identical to https://github.com/hpcng/singularity/releases/tag/v3.7.3 and is provided for convenience to users arriving from outdated links.
66+
- [CVE-2021-32635](https://github.com/sylabs/singularity/security/advisories/GHSA-5mv9-q7fq-9394):
67+
Due to incorrect use of a default URL, singularity action commands
68+
(run/shell/exec) specifying a container using a library:// URI will
69+
always attempt to retrieve the container from the default remote
70+
endpoint (cloud.sylabs.io) rather than the configured remote
71+
endpoint. An attacker may be able to push a malicious container to
72+
the default remote endpoint with a URI that is identical to the URI
73+
used by a victim with a non-default remote endpoint, thus executing
74+
the malicious container.
75+
76+
77+
## v3.7.3 - [2021-04-06]
6378

6479
### Security Related Fixes
6580

INSTALL.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
# Installing SingularityCE
22

3-
**NOTE:** *This installation guide has been updated for the release candidate of
4-
SingularityCE 3.8.0. The `3.8.0-rc2` version that will be installed is a
5-
pre-release of SingularityCE. To install the latest stable version,
6-
substitute the version `3.7.3` in the instructions below. See the `release-3.7` branch for the current stable codebase.*
7-
83
Since you are reading this from the SingularityCE source code, it will be assumed
94
that you are building/compiling from source.
105

@@ -87,7 +82,7 @@ $ mkdir -p ${GOPATH}/src/github.com/sylabs && \
8782
To build a specific version of SingularityCE, check out a [release tag](https://github.com/sylabs/singularity/tags) before compiling:
8883

8984
```
90-
$ git checkout v3.8.0-rc.2
85+
$ git checkout v3.8.0
9186
```
9287

9388
## Compiling SingularityCE
@@ -130,7 +125,7 @@ as shown above. Then download the latest
130125
and use it to install the RPM like this:
131126

132127
```
133-
$ export VERSION=3.8.0-rc.2 # this is the singularity version, change as you need
128+
$ export VERSION=3.8.0 # this is the singularity version, change as you need
134129
135130
$ wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-ce-${VERSION}.tar.gz && \
136131
rpmbuild -tb singularity-ce-${VERSION}.tar.gz && \

cmd/internal/cli/actions.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/sylabs/singularity/internal/pkg/client/oci"
2222
"github.com/sylabs/singularity/internal/pkg/client/oras"
2323
"github.com/sylabs/singularity/internal/pkg/client/shub"
24-
"github.com/sylabs/singularity/internal/pkg/remote/endpoint"
2524
"github.com/sylabs/singularity/internal/pkg/util/uri"
2625
"github.com/sylabs/singularity/pkg/sylog"
2726
)
@@ -80,11 +79,10 @@ func handleLibrary(ctx context.Context, imgCache *cache.Handle, pullFrom string)
8079
return "", err
8180
}
8281

82+
// Default "" = use current remote endpoint
8383
var libraryURI string
8484
if r.Host != "" {
8585
libraryURI = "https://" + r.Host
86-
} else {
87-
libraryURI = endpoint.SCSDefaultLibraryURI
8886
}
8987

9088
c, err := getLibraryClientConfig(libraryURI)

e2e/actions/actions.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2198,6 +2198,8 @@ func E2ETests(env e2e.TestEnv) testhelper.Tests {
21982198
env: env,
21992199
}
22002200

2201+
np := testhelper.NoParallel
2202+
22012203
return testhelper.Tests{
22022204
"action URI": c.RunFromURI, // action_URI
22032205
"exec": c.actionExec, // singularity exec
@@ -2230,5 +2232,6 @@ func E2ETests(env e2e.TestEnv) testhelper.Tests {
22302232
"bind image": c.bindImage, // test bind image
22312233
"umask": c.actionUmask, // test umask propagation
22322234
"no-mount": c.actionNoMount, // test --no-mount
2235+
"invalidRemote": np(c.invalidRemote), // GHSA-5mv9-q7fq-9394
22332236
}
22342237
}

e2e/actions/regressions.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,3 +616,69 @@ func (c actionTests) issue5690(t *testing.T) {
616616
e2e.ExpectExit(0),
617617
)
618618
}
619+
620+
// If an invalid remote is set, we should not pull a container from the default
621+
// library.
622+
// GHSA-5mv9-q7fq-9394
623+
func (c actionTests) invalidRemote(t *testing.T) {
624+
testEndpoint := "invalid"
625+
testEndpointURI := "https://cloud.example.com"
626+
testImage := "library://alpine"
627+
628+
// Exec library image from the default remote... ensure it succeeds
629+
argv := []string{testImage, "/bin/true"}
630+
c.env.RunSingularity(
631+
t,
632+
e2e.AsSubtest("exec default"),
633+
e2e.WithProfile(e2e.UserProfile),
634+
e2e.WithCommand("exec"),
635+
e2e.WithArgs(argv...),
636+
e2e.ExpectExit(0),
637+
)
638+
639+
// Add another endpoint
640+
argv = []string{"add", "--no-login", testEndpoint, testEndpointURI}
641+
c.env.RunSingularity(
642+
t,
643+
e2e.AsSubtest("remote add"),
644+
e2e.WithProfile(e2e.UserProfile),
645+
e2e.WithCommand("remote"),
646+
e2e.WithArgs(argv...),
647+
e2e.ExpectExit(0),
648+
)
649+
// Remove test remote when we are done here
650+
defer func(t *testing.T) {
651+
argv := []string{"remove", testEndpoint}
652+
c.env.RunSingularity(
653+
t,
654+
e2e.AsSubtest("remote remove"),
655+
e2e.WithProfile(e2e.UserProfile),
656+
e2e.WithCommand("remote"),
657+
e2e.WithArgs(argv...),
658+
e2e.ExpectExit(0),
659+
)
660+
}(t)
661+
662+
// Set as default
663+
argv = []string{"use", testEndpoint}
664+
c.env.RunSingularity(
665+
t,
666+
e2e.AsSubtest("remote use"),
667+
e2e.WithProfile(e2e.UserProfile),
668+
e2e.WithCommand("remote"),
669+
e2e.WithArgs(argv...),
670+
e2e.ExpectExit(0),
671+
)
672+
673+
// Exec library image from the invalid remote, should fail
674+
argv = []string{testImage, "/bin/true"}
675+
c.env.RunSingularity(
676+
t,
677+
e2e.AsSubtest("exec invalid"),
678+
e2e.WithProfile(e2e.UserProfile),
679+
e2e.WithCommand("exec"),
680+
e2e.WithArgs(argv...),
681+
e2e.ExpectExit(255),
682+
)
683+
684+
}

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ require (
1414
github.com/bugsnag/bugsnag-go v1.5.1 // indirect
1515
github.com/bugsnag/panicwrap v1.2.0 // indirect
1616
github.com/containerd/cgroups v1.0.1
17-
github.com/containerd/containerd v1.5.1
17+
github.com/containerd/containerd v1.5.2
1818
github.com/containernetworking/cni v0.8.1
1919
github.com/containernetworking/plugins v0.9.1
2020
github.com/containers/image/v5 v5.12.0
21-
github.com/fatih/color v1.11.0
21+
github.com/fatih/color v1.12.0
2222
github.com/garyburd/redigo v1.6.0 // indirect
2323
github.com/go-log/log v0.2.0
2424
github.com/godbus/dbus v4.1.0+incompatible // indirect
@@ -51,7 +51,7 @@ require (
5151
github.com/sylabs/sif v1.2.3
5252
github.com/urfave/cli v1.22.5 // indirect
5353
github.com/vbauerster/mpb/v4 v4.12.2
54-
github.com/vbauerster/mpb/v6 v6.0.3
54+
github.com/vbauerster/mpb/v6 v6.0.4
5555
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
5656
github.com/yvasiyarov/go-metrics v0.0.0-20150112132944-c25f46c4b940 // indirect
5757
github.com/yvasiyarov/gorelic v0.0.6 // indirect
@@ -60,7 +60,7 @@ require (
6060
golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e
6161
golang.org/x/net v0.0.0-20210510120150-4163338589ed // indirect
6262
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
63-
golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744
63+
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015
6464
google.golang.org/genproto v0.0.0-20210510173355-fb37daa5cd7a // indirect
6565
google.golang.org/grpc v1.37.0 // indirect
6666
gopkg.in/yaml.v2 v2.4.0

go.sum

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,9 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
7171
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
7272
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=
7373
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
74-
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
7574
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
75+
github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
76+
github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
7677
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
7778
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
7879
github.com/adigunhammedolalekan/registry-auth v0.0.0-20200730122110-8cde180a3a60 h1:1IG6ye8dellBRE2uqvG0EzQScRqjsH/n5xOw+n0OGec=
@@ -179,8 +180,8 @@ github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo
179180
github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI=
180181
github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s=
181182
github.com/containerd/containerd v1.5.0-rc.3/go.mod h1:kYiJ+LvywDUKzyax6+UKCk5xwQNCfcGR6KsSdShdg5U=
182-
github.com/containerd/containerd v1.5.1 h1:xWHPAoe6VkUiI9GAvndJM7s/0MTrmwX3AQiYTr3olf0=
183-
github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g=
183+
github.com/containerd/containerd v1.5.2 h1:MG/Bg1pbmMb61j3wHCFWPxESXHieiKr2xG64px/k8zQ=
184+
github.com/containerd/containerd v1.5.2/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g=
184185
github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
185186
github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
186187
github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
@@ -318,8 +319,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
318319
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
319320
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
320321
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
321-
github.com/fatih/color v1.11.0 h1:l4iX0RqNnx/pU7rY2DB/I+znuYY0K3x6Ywac6EIr0PA=
322-
github.com/fatih/color v1.11.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
322+
github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc=
323+
github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
323324
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
324325
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
325326
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
@@ -551,8 +552,9 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA
551552
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
552553
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
553554
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
554-
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
555555
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
556+
github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow=
557+
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
556558
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
557559
github.com/mattn/go-shellwords v1.0.11 h1:vCoR9VPpsk/TZFW2JwK5I9S0xdrtUq2bph6/YjEPnaw=
558560
github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
@@ -830,8 +832,9 @@ github.com/vbatts/go-mtree v0.5.0/go.mod h1:7JbaNHyBMng+RP8C3Q4E+4Ca8JnGQA2R/MB+
830832
github.com/vbatts/tar-split v0.11.1/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g=
831833
github.com/vbauerster/mpb/v4 v4.12.2 h1:TsBs1nWRYF0m8cUH13pxNhOUqY6yKcOr2PeSYxp2L3I=
832834
github.com/vbauerster/mpb/v4 v4.12.2/go.mod h1:LVRGvMch8T4HQO3eg2pFPsACH9kO/O6fT/7vhGje3QE=
833-
github.com/vbauerster/mpb/v6 v6.0.3 h1:j+twHHhSUe8aXWaT/27E98G5cSBeqEuJSVCMjmLg0PI=
834835
github.com/vbauerster/mpb/v6 v6.0.3/go.mod h1:5luBx4rDLWxpA4t6I5sdeeQuZhqDxc+wr5Nqf35+tnM=
836+
github.com/vbauerster/mpb/v6 v6.0.4 h1:h6J5zM/2wimP5Hj00unQuV8qbo5EPcj6wbkCqgj7KcY=
837+
github.com/vbauerster/mpb/v6 v6.0.4/go.mod h1:a/+JT57gqh6Du0Ay5jSR+uBMfXGdlR7VQlGP52fJxLM=
835838
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
836839
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
837840
github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 h1:cPXZWzzG0NllBLdjWoD1nDfaqu98YMv+OneaKc8sPOA=
@@ -1039,8 +1042,8 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w
10391042
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
10401043
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
10411044
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1042-
golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744 h1:yhBbb4IRs2HS9PPlAg6DMC6mUOKexJBNsLf4Z+6En1Q=
1043-
golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1045+
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
1046+
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10441047
golang.org/x/term v0.0.0-20191110171634-ad39bd3f0407/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
10451048
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
10461049
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=

0 commit comments

Comments
 (0)