From bdc33cd421cb86b8c42819e2c337b6f248053144 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Sat, 29 Dec 2018 00:18:10 -0500 Subject: [PATCH] lang: Validate the edge field names in our resources Validate these early instead of waiting for this to be caught during output generation. --- lang/structs.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lang/structs.go b/lang/structs.go index 539a4404..b5e55cb5 100644 --- a/lang/structs.go +++ b/lang/structs.go @@ -767,6 +767,13 @@ func (obj *StmtResEdge) Apply(fn func(interfaces.Node) error) error { // Init initializes this branch of the AST, and returns an error if it fails to // validate. func (obj *StmtResEdge) Init(data *interfaces.Data) error { + if obj.Property == "" { + return fmt.Errorf("empty property") + } + if obj.Property != EdgeNotify && obj.Property != EdgeBefore && obj.Property != EdgeListen && obj.Property != EdgeDepend { + return fmt.Errorf("invalid property: `%s`", obj.Property) + } + if obj.Condition != nil { if err := obj.Condition.Init(data); err != nil { return err