Correct stack size validation for MUL, CALLDATACOPY, EXTCODESIZE, BLOCKHASH
This commit is contained in:
parent
bba7ccb07f
commit
fd3793b8cf
6
vm/vm.go
6
vm/vm.go
@ -779,9 +779,9 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
|
|||||||
// Stack Check, memory resize & gas phase
|
// Stack Check, memory resize & gas phase
|
||||||
switch op {
|
switch op {
|
||||||
// Stack checks only
|
// Stack checks only
|
||||||
case ISZERO, CALLDATALOAD, POP, JUMP, NOT: // 1
|
case ISZERO, CALLDATALOAD, POP, JUMP, NOT, EXTCODESIZE, BLOCKHASH: // 1
|
||||||
stack.require(1)
|
stack.require(1)
|
||||||
case JUMPI, ADD, SUB, DIV, SDIV, MOD, SMOD, LT, GT, SLT, SGT, EQ, AND, OR, XOR, BYTE, SIGNEXTEND: // 2
|
case JUMPI, ADD, SUB, DIV, MUL, SDIV, MOD, SMOD, LT, GT, SLT, SGT, EQ, AND, OR, XOR, BYTE, SIGNEXTEND: // 2
|
||||||
stack.require(2)
|
stack.require(2)
|
||||||
case ADDMOD, MULMOD: // 3
|
case ADDMOD, MULMOD: // 3
|
||||||
stack.require(3)
|
stack.require(3)
|
||||||
@ -859,7 +859,7 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
|
|||||||
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-2])
|
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-2])
|
||||||
additionalGas.Set(stack.data[stack.Len()-2])
|
additionalGas.Set(stack.data[stack.Len()-2])
|
||||||
case CALLDATACOPY:
|
case CALLDATACOPY:
|
||||||
stack.require(2)
|
stack.require(3)
|
||||||
|
|
||||||
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-3])
|
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-3])
|
||||||
additionalGas.Set(stack.data[stack.Len()-3])
|
additionalGas.Set(stack.data[stack.Len()-3])
|
||||||
|
Loading…
Reference in New Issue
Block a user