Merge pull request #95 from tendermint/vm_panics

label/remove panics in vm
This commit is contained in:
Jae Kwon 2015-06-27 10:10:25 -07:00
commit 99b94022ee
3 changed files with 5 additions and 1 deletions

View File

@ -52,6 +52,7 @@ func sha256Func(input []byte, gas *int64) (output []byte, err error) {
} }
// Hash // Hash
hasher := sha256.New() hasher := sha256.New()
// CONTRACT: this does not err
_, err = hasher.Write(input) _, err = hasher.Write(input)
if err != nil { if err != nil {
panic(err) panic(err)
@ -69,6 +70,7 @@ func ripemd160Func(input []byte, gas *int64) (output []byte, err error) {
} }
// Hash // Hash
hasher := ripemd160.New() hasher := ripemd160.New()
// CONTRACT: this does not err
_, err = hasher.Write(input) _, err = hasher.Write(input)
if err != nil { if err != nil {
panic(err) panic(err)

View File

@ -47,6 +47,7 @@ func (st *Stack) Push(d Word256) {
st.ptr++ st.ptr++
} }
// currently only called after Sha3
func (st *Stack) PushBytes(bz []byte) { func (st *Stack) PushBytes(bz []byte) {
if len(bz) != 32 { if len(bz) != 32 {
panic("Invalid bytes size: expected 32") panic("Invalid bytes size: expected 32")

View File

@ -100,6 +100,7 @@ func (vm *VM) Call(caller, callee *Account, code, input []byte, value int64, gas
*exception = err.Error() *exception = err.Error()
err := transfer(callee, caller, value) err := transfer(callee, caller, value)
if err != nil { if err != nil {
// data has been corrupted in ram
panic("Could not return value to caller") panic("Could not return value to caller")
} }
} }
@ -784,7 +785,7 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas
default: default:
dbg.Printf("(pc) %-3v Invalid opcode %X\n", pc, op) dbg.Printf("(pc) %-3v Invalid opcode %X\n", pc, op)
panic(fmt.Errorf("Invalid opcode %X", op)) return nil, fmt.Errorf("Invalid opcode %X", op)
} }
pc++ pc++