vm: restrict SHL/SHR arguments to -256..256

Also unify SHL/SHR implementation.
This commit is contained in:
Evgenii Stratonikov 2019-09-18 14:35:29 +03:00
parent 4a8be486f0
commit 3c53beca82
2 changed files with 32 additions and 11 deletions

View file

@ -305,6 +305,15 @@ func TestSHRZero(t *testing.T) {
assert.Equal(t, makeStackItem([]byte{0, 1}), vm.estack.Pop().value)
}
func TestSHRSmallValue(t *testing.T) {
prog := makeProgram(SHR)
vm := load(prog)
vm.estack.PushVal(5)
vm.estack.PushVal(-257)
vm.Run()
assert.Equal(t, true, vm.state.HasFlag(faultState))
}
func TestSHLGood(t *testing.T) {
prog := makeProgram(SHL)
vm := load(prog)
@ -327,6 +336,15 @@ func TestSHLZero(t *testing.T) {
assert.Equal(t, makeStackItem([]byte{0, 1}), vm.estack.Pop().value)
}
func TestSHLBigValue(t *testing.T) {
prog := makeProgram(SHL)
vm := load(prog)
vm.estack.PushVal(5)
vm.estack.PushVal(257)
vm.Run()
assert.Equal(t, true, vm.state.HasFlag(faultState))
}
func TestLT(t *testing.T) {
prog := makeProgram(LT)
vm := load(prog)