Trap nil pointer errors gracefully in plugin

closes #10352

Signed-off-by: rwxrob <rob@rwx.gg>
pull/10353/head
rwxrob 4 years ago
parent a63489ad28
commit 189a42aa40
No known key found for this signature in database
GPG Key ID: 1CCACEDD2F65578E

@ -173,6 +173,12 @@ var validPluginName = regexp.MustCompile("^[A-Za-z0-9_-]+$")
// validatePluginData validates a plugin's YAML data. // validatePluginData validates a plugin's YAML data.
func validatePluginData(plug *Plugin, filepath string) error { func validatePluginData(plug *Plugin, filepath string) error {
if plug == nil {
return fmt.Errorf("nil plugin value detected")
}
if plug.Metadata == nil {
return fmt.Errorf("nil plugin Metadata detected")
}
if !validPluginName.MatchString(plug.Metadata.Name) { if !validPluginName.MatchString(plug.Metadata.Name) {
return fmt.Errorf("invalid plugin name at %q", filepath) return fmt.Errorf("invalid plugin name at %q", filepath)
} }

@ -350,6 +350,18 @@ func TestValidatePluginData(t *testing.T) {
} }
} }
func TestValidatePluginData_Empty_Plugin(t *testing.T) {
err := validatePluginData(nil, "")
if err == nil {
t.Error("should have trapped nil pointer for empty plugin")
}
p := new(Plugin)
err = validatePluginData(p, "")
if err == nil {
t.Error("should have trapped nil plugin metadata")
}
}
func TestDetectDuplicates(t *testing.T) { func TestDetectDuplicates(t *testing.T) {
plugs := []*Plugin{ plugs := []*Plugin{
mockPlugin("foo"), mockPlugin("foo"),

Loading…
Cancel
Save