Skip to content

Commit a08c2bb

Browse files
black-dragon74mergify[bot]
authored andcommitted
nfs: use ValidateVolumeID for input validation
This patch modifies nfs controllerserver and nodeserver methods to use `util.ValidateVolumeID`. It is done to ensure the provided VolumeId in the gRPC matches the expected format. Signed-off-by: Niraj Yadav <niryadav@redhat.com> Reported-by: Shaul Ben Hai <shaul.benhai@sentinelone.com> (cherry picked from commit 9619c7c)
1 parent 61598af commit a08c2bb

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

internal/nfs/controller/controllerserver.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ func (cs *Server) DeleteVolume(
127127
ctx context.Context,
128128
req *csi.DeleteVolumeRequest,
129129
) (*csi.DeleteVolumeResponse, error) {
130+
volumeID := req.GetVolumeId()
131+
if err := util.ValidateVolumeID(volumeID, true); err != nil {
132+
return nil, status.Error(codes.InvalidArgument, err.Error())
133+
}
134+
130135
secret := req.GetSecrets()
131136
cr, err := util.NewAdminCredentials(secret)
132137
if err != nil {
@@ -136,7 +141,7 @@ func (cs *Server) DeleteVolume(
136141
}
137142
defer cr.DeleteCredentials()
138143

139-
nfsVolume, err := NewNFSVolume(ctx, req.GetVolumeId())
144+
nfsVolume, err := NewNFSVolume(ctx, volumeID)
140145
if err != nil {
141146
return nil, status.Error(codes.InvalidArgument, err.Error())
142147
}

internal/nfs/nodeserver/nodeserver.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,11 @@ func (ns *NodeServer) mountNFS(
250250

251251
// validateNodePublishVolumeRequest validates node publish volume request.
252252
func validateNodePublishVolumeRequest(req *csi.NodePublishVolumeRequest) error {
253+
if err := util.ValidateVolumeID(req.GetVolumeId(), util.IsStaticVol(req.GetVolumeContext())); err != nil {
254+
return err
255+
}
256+
253257
switch {
254-
case req.GetVolumeId() == "":
255-
return errors.New("volume ID missing in request")
256258
case req.GetVolumeCapability() == nil:
257259
return errors.New("volume capability missing in request")
258260
case req.GetTargetPath() == "":

internal/nfs/nodeserver/nodeserver_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ func Test_validateNodePublishVolumeRequest(t *testing.T) {
3939
VolumeId: "123",
4040
TargetPath: "/target",
4141
VolumeCapability: &csi.VolumeCapability{},
42+
// staticVolume ensures format validation for volumeID is skipped.
43+
VolumeContext: map[string]string{
44+
"staticVolume": "true",
45+
},
4246
},
4347
},
4448
wantErr: false,

0 commit comments

Comments
 (0)