From 836aa9eb6095ca14baceae63bef657c877b9b463 Mon Sep 17 00:00:00 2001 From: Ben Drucker Date: Wed, 7 Dec 2022 19:11:31 -0800 Subject: [PATCH] `elasticache_cluster_previous_type`: fix panic on empty string --- ...ws_elasticache_cluster_invalid_type_test.go | 18 ++++++++++++++++++ rules/aws_elasticache_cluster_previous_type.go | 7 ++++++- ...s_elasticache_cluster_previous_type_test.go | 8 ++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/rules/aws_elasticache_cluster_invalid_type_test.go b/rules/aws_elasticache_cluster_invalid_type_test.go index 46800c05..7fac047c 100644 --- a/rules/aws_elasticache_cluster_invalid_type_test.go +++ b/rules/aws_elasticache_cluster_invalid_type_test.go @@ -31,6 +31,24 @@ resource "aws_elasticache_cluster" "redis" { }, }, }, + { + Name: "empty is invalid", + Content: ` +resource "aws_elasticache_cluster" "redis" { + node_type = "" +}`, + Expected: helper.Issues{ + { + Rule: NewAwsElastiCacheClusterInvalidTypeRule(), + Message: "\"\" is invalid node type.", + Range: hcl.Range{ + Filename: "resource.tf", + Start: hcl.Pos{Line: 3, Column: 17}, + End: hcl.Pos{Line: 3, Column: 19}, + }, + }, + }, + }, { Name: "cache.t2.micro is valid", Content: ` diff --git a/rules/aws_elasticache_cluster_previous_type.go b/rules/aws_elasticache_cluster_previous_type.go index e31896ba..379e368f 100644 --- a/rules/aws_elasticache_cluster_previous_type.go +++ b/rules/aws_elasticache_cluster_previous_type.go @@ -64,7 +64,12 @@ func (r *AwsElastiCacheClusterPreviousTypeRule) Check(runner tflint.Runner) erro err := runner.EvaluateExpr(attribute.Expr, &nodeType, nil) err = runner.EnsureNoError(err, func() error { - if previousElastiCacheNodeTypes[strings.Split(nodeType, ".")[1]] { + parts := strings.Split(nodeType, ".") + if len(parts) != 3 { + return nil + } + + if previousElastiCacheNodeTypes[parts[1]] { runner.EmitIssue( r, fmt.Sprintf("\"%s\" is previous generation node type.", nodeType), diff --git a/rules/aws_elasticache_cluster_previous_type_test.go b/rules/aws_elasticache_cluster_previous_type_test.go index 2791cd27..918a2e51 100644 --- a/rules/aws_elasticache_cluster_previous_type_test.go +++ b/rules/aws_elasticache_cluster_previous_type_test.go @@ -39,6 +39,14 @@ resource "aws_elasticache_cluster" "redis" { }`, Expected: helper.Issues{}, }, + { + Name: "empty type", + Content: ` + resource "aws_elasticache_cluster" "redis" { + node_type = "" + }`, + Expected: helper.Issues{}, + }, } rule := NewAwsElastiCacheClusterPreviousTypeRule()