From fed9a153a77f54134f12f5f9b0fb175a7e906a97 Mon Sep 17 00:00:00 2001 From: RJ Catalano <rj@monax.io> Date: Wed, 8 Feb 2017 10:56:51 -0600 Subject: [PATCH] add error for codecopy Signed-off-by: RJ Catalano <rj@monax.io> --- manager/eris-mint/evm/vm.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/manager/eris-mint/evm/vm.go b/manager/eris-mint/evm/vm.go index dda17a03..e113513a 100644 --- a/manager/eris-mint/evm/vm.go +++ b/manager/eris-mint/evm/vm.go @@ -15,18 +15,19 @@ import ( ) var ( - ErrUnknownAddress = errors.New("Unknown address") - ErrInsufficientBalance = errors.New("Insufficient balance") - ErrInvalidJumpDest = errors.New("Invalid jump dest") - ErrInsufficientGas = errors.New("Insufficient gas") - ErrMemoryOutOfBounds = errors.New("Memory out of bounds") - ErrCodeOutOfBounds = errors.New("Code out of bounds") - ErrInputOutOfBounds = errors.New("Input out of bounds") - ErrCallStackOverflow = errors.New("Call stack overflow") - ErrCallStackUnderflow = errors.New("Call stack underflow") - ErrDataStackOverflow = errors.New("Data stack overflow") - ErrDataStackUnderflow = errors.New("Data stack underflow") - ErrInvalidContract = errors.New("Invalid contract") + ErrUnknownAddress = errors.New("Unknown address") + ErrInsufficientBalance = errors.New("Insufficient balance") + ErrInvalidJumpDest = errors.New("Invalid jump dest") + ErrInsufficientGas = errors.New("Insufficient gas") + ErrMemoryOutOfBounds = errors.New("Memory out of bounds") + ErrCodeOutOfBounds = errors.New("Code out of bounds") + ErrInputOutOfBounds = errors.New("Input out of bounds") + ErrCallStackOverflow = errors.New("Call stack overflow") + ErrCallStackUnderflow = errors.New("Call stack underflow") + ErrDataStackOverflow = errors.New("Data stack overflow") + ErrDataStackUnderflow = errors.New("Data stack underflow") + ErrInvalidContract = errors.New("Invalid contract") + ErrNativeContractCodeCopy = errors.New("Tried to copy native contract code, but this is not supported") ) type ErrPermission struct { @@ -585,7 +586,10 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas } acc := vm.appState.GetAccount(addr) if acc == nil { - return nil, firstErr(err, ErrUnknownAddress) + if _, ok := registeredNativeContracts[addr]; !ok { + return nil, firstErr(err, ErrUnknownAddress) + } + return nil, firstErr(err, ErrNativeContractCodeCopy) } code := acc.Code memOff := stack.Pop64() -- GitLab