aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-09-03 16:11:39 +0200
committerDmitry Vyukov <dvyukov@google.com>2016-09-05 12:49:47 +0200
commit77f435b4f716cca71ebd55ae083fcfa4b220ebdc (patch)
treeff9a0da462646a3e8fc8c7f4eee99fd2a625e77d
parentcac2fbeb8c33ec1cf484f793b42fad175667ac46 (diff)
prog: more checks during program validation
-rw-r--r--prog/validation.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/prog/validation.go b/prog/validation.go
index ac874c49e..efd178a41 100644
--- a/prog/validation.go
+++ b/prog/validation.go
@@ -85,6 +85,18 @@ func (c *Call) validate(ctx *validCtx) error {
default:
return fmt.Errorf("syscall %v: filename arg '%v' has bad kind %v", c.Meta.Name, typ.Name(), arg.Kind)
}
+ case *sys.StructType, *sys.ArrayType:
+ switch arg.Kind {
+ case ArgGroup:
+ default:
+ return fmt.Errorf("syscall %v: struct/array arg '%v' has bad kind %v", c.Meta.Name, typ.Name(), arg.Kind)
+ }
+ case *sys.UnionType:
+ switch arg.Kind {
+ case ArgUnion:
+ default:
+ return fmt.Errorf("syscall %v: union arg '%v' has bad kind %v", c.Meta.Name, typ.Name(), arg.Kind)
+ }
}
switch arg.Kind {
case ArgConst: