Skip to content

schema.MapAttribute struct without ElementType member causes segmentation fault #699

@mschuchard

Description

@mschuchard

Module version

1.1.1

Relevant provider source code

schema.Schema{
  Attributes: map[string]schema.Attribute{
    // generic example following
    "foo": schema.MapAttribute{
      Description: "A Map attribute",
      Required:    true,
    },
  },
}

Adding e.g. ElementType: types.StringType, to the schema above fixes the issue as expected.

Expected Behavior

A clean runtime error thrown that the struct is missing the ElementsAs member.

Actual Behavior

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x6483df]

goroutine 83 [running]:
github.com/hashicorp/terraform-plugin-framework/types/basetypes.MapType.TerraformType(...)
	/home/matt/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/types/basetypes/map.go:66
github.com/hashicorp/terraform-plugin-framework/internal/toproto6.SchemaAttribute({0xf950c0, 0xc000111080}, {0xe1d5c1, 0x6}, 0xc000112120, {0xf99408?, 0xc000262000?})
	/home/matt/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/toproto6/schema_attribute.go:26 +0x158
github.com/hashicorp/terraform-plugin-framework/internal/toproto6.Schema({0xf950c0, 0xc000111080}, {0xf999c0, 0xc00011e3c0})
	/home/matt/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/toproto6/schema.go:26 +0x2e6
github.com/hashicorp/terraform-plugin-framework/internal/toproto6.GetProviderSchemaResponse({0xf950c0, 0xc000111080}, 0xc00018f610)
	/home/matt/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/toproto6/getproviderschema.go:51 +0x52e
github.com/hashicorp/terraform-plugin-framework/internal/proto6server.(*Server).GetProviderSchema(0xc000254580, {0xf950c0?, 0xc000110f90?}, 0x1546e10)
	/home/matt/go/pkg/mod/github.com/hashicorp/terraform-plugin-framework@v1.1.1/internal/proto6server/server_getproviderschema.go:23 +0xc7
github.com/hashicorp/terraform-plugin-go/tfprotov6/tf6server.(*server).GetProviderSchema(0xc00031d680, {0xf950c0?, 0xc0001104e0?}, 0x0?)

There are several more lines, but their stack trace pertains to the gRPC server and are omitted for brevity.

Steps to Reproduce

Executing an acceptance test would be the easiest reproduction step.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions