Skip to content

Commit 5ee437e

Browse files
committed
Fix crash in GCP iam binding middleware
1 parent cfec9bd commit 5ee437e

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

pkg/middlewares/google_iam_binding_tranformer_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,29 @@ func TestGoogleProjectIAMBindingTransformer_Execute(t *testing.T) {
1818
expected []*resource.Resource
1919
mock func(factory *terraform.MockResourceFactory)
2020
}{
21+
{
22+
name: "Test that bindings with nil members does not cause any crash",
23+
resourcesFromState: []*resource.Resource{
24+
{
25+
Type: google.GoogleStorageBucketIamBindingResourceType,
26+
Attrs: &resource.Attributes{
27+
"bucket": "hey",
28+
"role": "storage.admin",
29+
"members": nil,
30+
},
31+
},
32+
{
33+
Type: google.GoogleProjectIamBindingResourceType,
34+
Attrs: &resource.Attributes{
35+
"project": "coucou",
36+
"role": "storage.admin",
37+
"members": nil,
38+
},
39+
},
40+
},
41+
expected: []*resource.Resource{},
42+
mock: nil,
43+
},
2144
{
2245
"Test that project bindings are transformed into member",
2346
[]*resource.Resource{

pkg/middlewares/google_iam_binding_transformer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ func (m *GoogleIAMBindingTransformer) Execute(_, resourcesFromState *[]*resource
3939

4040
resName := *stateRes.Attrs.GetString(resField)
4141
roleName := *stateRes.Attrs.GetString("role")
42-
members, _ := stateRes.Attrs.Get("members")
42+
members, exist := stateRes.Attrs.Get("members")
43+
44+
if !exist || members == nil {
45+
continue
46+
}
4347

4448
for _, member := range members.([]interface{}) {
4549
id := fmt.Sprintf("%s/%s/%s", resName, roleName, member)

0 commit comments

Comments
 (0)