diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2016-09-03 16:11:39 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2016-09-05 12:49:47 +0200 |
| commit | 77f435b4f716cca71ebd55ae083fcfa4b220ebdc (patch) | |
| tree | ff9a0da462646a3e8fc8c7f4eee99fd2a625e77d | |
| parent | cac2fbeb8c33ec1cf484f793b42fad175667ac46 (diff) | |
prog: more checks during program validation
| -rw-r--r-- | prog/validation.go | 12 |
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: |
