Fix panics by disallowing explicitly-defined null modules in config

This commit is contained in:
Matthew Holt 2019-06-26 10:45:34 -06:00
parent 38677aaa58
commit 6000855c82

View File

@ -100,6 +100,15 @@ func (ctx Context) LoadModule(name string, rawMsg json.RawMessage) (interface{},
} }
} }
if val == nil {
// returned module values are almost always type-asserted
// before being used, so a nil value would panic; and there
// is no good reason to explicitly declare null modules in
// a config; it might be because the user is trying to
// achieve a result they aren't expecting, which is a smell
return nil, fmt.Errorf("module value cannot be null")
}
if prov, ok := val.(Provisioner); ok { if prov, ok := val.(Provisioner); ok {
err := prov.Provision(ctx) err := prov.Provision(ctx)
if err != nil { if err != nil {