diff options
| author | chrislusf <chris.lu@gmail.com> | 2025-12-03 19:39:15 -0800 |
|---|---|---|
| committer | Chris Lu <chrislusf@users.noreply.github.com> | 2025-12-03 20:52:27 -0800 |
| commit | dfad8b9747b114c863838cf48223fcebe3049890 (patch) | |
| tree | 046136e7f909eda59ed62a737a00ef685447ebf9 /pkg/driver/nodeserver.go | |
| parent | 05ac88f67723f1a6ce60543413f3ae59d2e85654 (diff) | |
| download | seaweedfs-csi-driver-dfad8b9747b114c863838cf48223fcebe3049890.tar.xz seaweedfs-csi-driver-dfad8b9747b114c863838cf48223fcebe3049890.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.
Diffstat (limited to 'pkg/driver/nodeserver.go')
| -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) } |
