diff options
| author | chrislusf <chris.lu@gmail.com> | 2025-12-03 19:39:15 -0800 |
|---|---|---|
| committer | chrislusf <chris.lu@gmail.com> | 2025-12-03 19:39:15 -0800 |
| commit | 51aef3c1d61bc4fd095a51c989c3957692a2a172 (patch) | |
| tree | a955a72ff1619d2bf90bf887098326b4d5f38ad2 | |
| parent | a0500b8a994235079337599ba6ebdc598a671abf (diff) | |
| download | seaweedfs-csi-driver-51aef3c1d61bc4fd095a51c989c3957692a2a172.tar.xz seaweedfs-csi-driver-51aef3c1d61bc4fd095a51c989c3957692a2a172.zip | |
fix: add nil checks for AccessMode to prevent panic
Address CodeRabbit review feedback - add defensive nil checks for
GetVolumeCapability() and GetAccessMode() in both isPublishVolumeReadOnly
and isVolumeReadOnly to prevent potential nil pointer dereference.
| -rw-r--r-- | pkg/driver/nodeserver.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/pkg/driver/nodeserver.go b/pkg/driver/nodeserver.go index b9059fe..95b556f 100644 --- a/pkg/driver/nodeserver.go +++ b/pkg/driver/nodeserver.go @@ -195,7 +195,11 @@ func isPublishVolumeReadOnly(req *csi.NodePublishVolumeRequest) bool { if req.GetReadonly() { return true } - return isReadOnlyAccessMode(req.GetVolumeCapability().GetAccessMode().Mode) + cap := req.GetVolumeCapability() + if cap == nil || cap.GetAccessMode() == nil { + return false + } + return isReadOnlyAccessMode(cap.GetAccessMode().Mode) } func (ns *NodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpublishVolumeRequest) (*csi.NodeUnpublishVolumeResponse, error) { @@ -400,5 +404,9 @@ func isReadOnlyAccessMode(mode csi.VolumeCapability_AccessMode_Mode) bool { } func isVolumeReadOnly(req *csi.NodeStageVolumeRequest) bool { - return isReadOnlyAccessMode(req.GetVolumeCapability().GetAccessMode().Mode) + cap := req.GetVolumeCapability() + if cap == nil || cap.GetAccessMode() == nil { + return false + } + return isReadOnlyAccessMode(cap.GetAccessMode().Mode) } |
