diff options
| -rw-r--r-- | prog/validation.go | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/prog/validation.go b/prog/validation.go index b38afc874..148640650 100644 --- a/prog/validation.go +++ b/prog/validation.go @@ -221,15 +221,6 @@ func (arg *UnionArg) validate(ctx *validCtx) error { } func (arg *PointerArg) validate(ctx *validCtx) error { - maxMem := ctx.target.NumPages * ctx.target.PageSize - size := arg.VmaSize - if size == 0 && arg.Res != nil { - size = arg.Res.Size() - } - if arg.Address >= maxMem || arg.Address+size > maxMem { - return fmt.Errorf("ptr %v has bad address %v/%v/%v", - arg.Type().Name(), arg.Address, arg.VmaSize, size) - } switch typ := arg.Type().(type) { case *VmaType: if arg.Res != nil { @@ -256,5 +247,14 @@ func (arg *PointerArg) validate(ctx *validCtx) error { default: return fmt.Errorf("ptr arg %v has bad type %v", arg, typ.Name()) } + maxMem := ctx.target.NumPages * ctx.target.PageSize + size := arg.VmaSize + if size == 0 && arg.Res != nil { + size = arg.Res.Size() + } + if arg.Address >= maxMem || arg.Address+size > maxMem { + return fmt.Errorf("ptr %v has bad address %v/%v/%v", + arg.Type().Name(), arg.Address, arg.VmaSize, size) + } return nil } |
