aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislusf <chris.lu@gmail.com>2025-12-03 19:39:15 -0800
committerchrislusf <chris.lu@gmail.com>2025-12-03 19:39:15 -0800
commit51aef3c1d61bc4fd095a51c989c3957692a2a172 (patch)
treea955a72ff1619d2bf90bf887098326b4d5f38ad2
parenta0500b8a994235079337599ba6ebdc598a671abf (diff)
downloadseaweedfs-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.go12
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)
}