diff options
Diffstat (limited to 'vm/vm.go')
-rw-r--r-- | vm/vm.go | 17 |
1 files changed, 4 insertions, 13 deletions
@@ -441,24 +441,15 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) { self.Printf(" => %d", l) case CALLDATACOPY: var ( - size = uint64(len(callData)) mOff = stack.pop().Uint64() cOff = stack.pop().Uint64() l = stack.pop().Uint64() ) + data := getData(callData, cOff, l) - if cOff > size { - cOff = 0 - l = 0 - } else if cOff+l > size { - l = 0 - } - - code := callData[cOff : cOff+l] - - mem.Set(mOff, l, code) + mem.Set(mOff, l, data) - self.Printf(" => [%v, %v, %v] %x", mOff, cOff, l, callData[cOff:cOff+l]) + self.Printf(" => [%v, %v, %v] %x", mOff, cOff, l, data) case CODESIZE, EXTCODESIZE: var code []byte if op == EXTCODESIZE { @@ -486,7 +477,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) { cOff = stack.pop().Uint64() l = stack.pop().Uint64() ) - codeCopy := getCode(code, cOff, l) + codeCopy := getData(code, cOff, l) mem.Set(mOff, l, codeCopy) |