Skip to content

Commit aff0a5c

Browse files
authored
Merge pull request #1088 from andyzhangx/fix/validate-path-v2
cleanup: add validatePath to newNFSVolume
2 parents b127c9c + 4ac9c69 commit aff0a5c

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

pkg/nfs/controllerserver.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,13 @@ func newNFSVolume(name string, size int64, params map[string]string, defaultOnDe
709709
return nil, fmt.Errorf("%v is a required parameter", paramServer)
710710
}
711711

712+
if err := validatePath(baseDir); err != nil {
713+
return nil, fmt.Errorf("invalid share %q: %v", baseDir, err)
714+
}
715+
if err := validatePath(subDir); err != nil {
716+
return nil, fmt.Errorf("invalid subDir %q: %v", subDir, err)
717+
}
718+
712719
vol := &nfsVolume{
713720
server: server,
714721
baseDir: baseDir,

pkg/nfs/controllerserver_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,30 @@ func TestNewNFSVolume(t *testing.T) {
705705
expectVol: nil,
706706
expectErr: fmt.Errorf("invalid value %s for OnDelete, supported values are %v", "invalid", supportedOnDeleteValues),
707707
},
708+
{
709+
desc: "subDir with path traversal should be rejected",
710+
name: "pv-name",
711+
size: 100,
712+
params: map[string]string{
713+
paramServer: "//nfs-server.default.svc.cluster.local",
714+
paramShare: "share",
715+
paramSubDir: "../../etc/shadow",
716+
},
717+
expectVol: nil,
718+
expectErr: fmt.Errorf("invalid subDir %q: path contains directory traversal sequence", "../../etc/shadow"),
719+
},
720+
{
721+
desc: "share with path traversal should be rejected",
722+
name: "pv-name",
723+
size: 100,
724+
params: map[string]string{
725+
paramServer: "//nfs-server.default.svc.cluster.local",
726+
paramShare: "/exports/../../../etc",
727+
paramSubDir: "data",
728+
},
729+
expectVol: nil,
730+
expectErr: fmt.Errorf("invalid share %q: path contains directory traversal sequence", "/exports/../../../etc"),
731+
},
708732
}
709733

710734
for _, test := range cases {

0 commit comments

Comments
 (0)