Skip to content

Commit 1340598

Browse files
author
Marina Limeira
committed
Fix logic on checking for ipv6
1 parent 5c36c9c commit 1340598

File tree

1 file changed

+13
-22
lines changed

1 file changed

+13
-22
lines changed

rules/aws_security_group_rule_invalid_cidr_block.go

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ func NewAwsSecurityGroupRuleInvalidCidrBlockRule() *AwsSecurityGroupRuleInvalidC
2222
return &AwsSecurityGroupRuleInvalidCidrBlockRule{
2323
resourceType: "aws_security_group_rule",
2424
remoteAccessPorts: []int{22, 3389},
25-
26-
// todo extrair os resource types daqui?
27-
2825
}
2926
}
3027

@@ -70,10 +67,6 @@ func (r *AwsSecurityGroupRuleInvalidCidrBlockRule) Check(runner tflint.Runner) e
7067

7168
for _, resource := range resources.Blocks {
7269
typeAttribute, exists := resource.Body.Attributes["type"]
73-
// well this cant not exist
74-
if !exists {
75-
continue
76-
}
7770

7871
var sgType string
7972
err := runner.EvaluateExpr(typeAttribute.Expr, &sgType, nil)
@@ -109,18 +102,16 @@ func (r *AwsSecurityGroupRuleInvalidCidrBlockRule) Check(runner tflint.Runner) e
109102
}
110103

111104
cidrBlocksAttribute, exists := resource.Body.Attributes["cidr_blocks"]
112-
if !exists {
113-
continue
114-
}
115-
116-
var cidrBlocks []string
117-
err = runner.EvaluateExpr(cidrBlocksAttribute.Expr, &cidrBlocks, nil)
118-
if doesIpv4CidrBlocksAllowAll(cidrBlocks) {
119-
return runner.EmitIssue(
120-
r,
121-
fmt.Sprintf("cidr_blocks can not contain '0.0.0.0/0' when allowing 'ingress' access to ports %v", r.remoteAccessPorts),
122-
cidrBlocksAttribute.Expr.Range(),
123-
)
105+
if exists {
106+
var cidrBlocks []string
107+
err = runner.EvaluateExpr(cidrBlocksAttribute.Expr, &cidrBlocks, nil)
108+
if containsIpv4CidrBlocksAllowAll(cidrBlocks) {
109+
return runner.EmitIssue(
110+
r,
111+
fmt.Sprintf("cidr_blocks can not contain '0.0.0.0/0' when allowing 'ingress' access to ports %v", r.remoteAccessPorts),
112+
cidrBlocksAttribute.Expr.Range(),
113+
)
114+
}
124115
}
125116

126117
ipv6CidrBlocksAttribute, exists := resource.Body.Attributes["ipv6_cidr_blocks"]
@@ -130,7 +121,7 @@ func (r *AwsSecurityGroupRuleInvalidCidrBlockRule) Check(runner tflint.Runner) e
130121

131122
var ipv6CidrBlocks []string
132123
err = runner.EvaluateExpr(ipv6CidrBlocksAttribute.Expr, &ipv6CidrBlocks, nil)
133-
if doesIpv6CidrBlocksAllowAll(ipv6CidrBlocks) {
124+
if containsIpv6CidrBlocksAllowAll(ipv6CidrBlocks) {
134125
return runner.EmitIssue(
135126
r,
136127
fmt.Sprintf("ipv6_cidr_blocks can not contain '::/0' when allowing 'ingress' access to ports %v", r.remoteAccessPorts),
@@ -157,7 +148,7 @@ func doesPortRangeContainsPorts(fromPort int, toPort int, ports []int) bool {
157148
return false
158149
}
159150

160-
func doesIpv4CidrBlocksAllowAll(cidrBlocks []string) bool {
151+
func containsIpv4CidrBlocksAllowAll(cidrBlocks []string) bool {
161152
for _, cidrBlock := range cidrBlocks {
162153
if cidrBlock == "0.0.0.0/0" {
163154
return true
@@ -166,7 +157,7 @@ func doesIpv4CidrBlocksAllowAll(cidrBlocks []string) bool {
166157
return false
167158
}
168159

169-
func doesIpv6CidrBlocksAllowAll(ipv6CidrBlocks []string) bool {
160+
func containsIpv6CidrBlocksAllowAll(ipv6CidrBlocks []string) bool {
170161
for _, cidrBlock := range ipv6CidrBlocks {
171162
if cidrBlock == "::/0" {
172163
return true

0 commit comments

Comments
 (0)