Skip to content

Commit e0fa89d

Browse files
authored
Merge pull request #188 from huww98/not-found-enum-value
protosanitizer: fix panic if enum value is not found
2 parents d002ca2 + c4df6cb commit e0fa89d

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

protosanitizer/protosanitizer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,11 @@ func stripSingleValue(field protoreflect.FieldDescriptor, v protoreflect.Value)
6868
case protoreflect.MessageKind:
6969
return stripMessage(v.Message())
7070
case protoreflect.EnumKind:
71-
return field.Enum().Values().ByNumber(v.Enum()).Name()
71+
desc := field.Enum().Values().ByNumber(v.Enum())
72+
if desc == nil {
73+
return v.Enum()
74+
}
75+
return desc.Name()
7276
default:
7377
return v.Interface()
7478
}

protosanitizer/protosanitizer_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,14 @@ func TestStripSecrets(t *testing.T) {
148148
{createVolumeFuture,
149149
`{"capacity_range":{"required_bytes":1024},"maybe_secret_map":{"1":{"array_secret":"***stripped***"},"2":{"array_secret":"***stripped***"}},"name":"foo","new_secret_int":"***stripped***","seecreets":"***stripped***","volume_capabilities":[{"array_secret":"***stripped***","mount":{"fs_type":"ext4"}},{"array_secret":"***stripped***"}],"volume_content_source":{"nested_secret_field":"***stripped***","volume":{"oneof_secret_field":"***stripped***","volume_id":"abc"}}}`,
150150
},
151+
{&csi.CreateVolumeRequest{
152+
VolumeCapabilities: []*csi.VolumeCapability{{
153+
AccessMode: &csi.VolumeCapability_AccessMode{
154+
// Test for unknown enum value
155+
Mode: csi.VolumeCapability_AccessMode_Mode(12345),
156+
},
157+
}},
158+
}, `{"volume_capabilities":[{"access_mode":{"mode":12345}}]}`},
151159
}
152160

153161
// Message from revised spec as received by a sidecar based on the current spec.

0 commit comments

Comments
 (0)