From 9e141fa0c29d3e53e011ac7dae7249526caacf6e Mon Sep 17 00:00:00 2001 From: Silas Davis <silas@erisindustries.com> Date: Wed, 8 Feb 2017 17:09:15 +0000 Subject: [PATCH] add error on EXTCODECOPY native contract and fix One256 push --- manager/eris-mint/evm/vm.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/manager/eris-mint/evm/vm.go b/manager/eris-mint/evm/vm.go index e113513a..b44bddfe 100644 --- a/manager/eris-mint/evm/vm.go +++ b/manager/eris-mint/evm/vm.go @@ -27,7 +27,7 @@ var ( 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") + ErrNativeContractCodeCopy = errors.New("Tried to copy native contract code") ) type ErrPermission struct { @@ -571,8 +571,8 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas if _, ok := registeredNativeContracts[addr]; !ok { return nil, firstErr(err, ErrUnknownAddress) } - stack.Push64(int64(One256)) - dbg.Printf(" => Hit native contract\n\n") + dbg.Printf(" => returning code size of 1 to indicated existence of native contract at %X\n", addr) + stack.Push(One256) } else { code := acc.Code l := int64(len(code)) @@ -586,10 +586,11 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas } acc := vm.appState.GetAccount(addr) if acc == nil { - if _, ok := registeredNativeContracts[addr]; !ok { - return nil, firstErr(err, ErrUnknownAddress) + if _, ok := registeredNativeContracts[addr]; ok { + dbg.Printf(" => attempted to copy native contract at %X but this is not supported\n", addr) + return nil, firstErr(err, ErrNativeContractCodeCopy) } - return nil, firstErr(err, ErrNativeContractCodeCopy) + return nil, firstErr(err, ErrUnknownAddress) } code := acc.Code memOff := stack.Pop64() -- GitLab