1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #43597 from shoeffner/43596-mask-cifs-passwords

volume: mask password in cifs mount error messages
This commit is contained in:
Sebastiaan van Stijn 2022-05-19 22:52:26 +02:00 committed by GitHub
commit 32f7551e61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 0 deletions

View file

@ -361,3 +361,15 @@ func getAddress(opts string) string {
}
return ""
}
// getPassword finds out a password from options
func getPassword(opts string) string {
optsList := strings.Split(opts, ",")
for i := 0; i < len(optsList); i++ {
if strings.HasPrefix(optsList[i], "password=") {
passwd := strings.SplitN(optsList[i], "=", 2)[1]
return passwd
}
}
return ""
}

View file

@ -29,6 +29,25 @@ func TestGetAddress(t *testing.T) {
}
func TestGetPassword(t *testing.T) {
cases := map[string]string{
"password=secret": "secret",
" ": "",
"password=": "",
"password=Tr0ub4dor&3": "Tr0ub4dor&3",
"password=correcthorsebatterystaple": "correcthorsebatterystaple",
"username=moby,password=secret": "secret",
"username=moby,password=secret,addr=11": "secret",
"username=moby,addr=11": "",
}
for optsstring, success := range cases {
v := getPassword(optsstring)
if v != success {
t.Errorf("Test case failed for %s actual: %s expected : %s", optsstring, v, success)
}
}
}
func TestRemove(t *testing.T) {
skip.If(t, runtime.GOOS == "windows", "FIXME: investigate why this test fails on CI")
rootDir, err := os.MkdirTemp("", "local-volume-test")

View file

@ -124,6 +124,11 @@ func (v *localVolume) mount() error {
}
}
err := mount.Mount(v.opts.MountDevice, v.path, v.opts.MountType, mountOpts)
if err != nil {
if password := getPassword(v.opts.MountOpts); password != "" {
err = errors.New(strings.Replace(err.Error(), "password="+password, "password=********", 1))
}
}
return errors.Wrap(err, "failed to mount local volume")
}