From 00f8319faf95e53333a9573fdc9e49df23238607 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 27 Mar 2015 14:22:38 +0100 Subject: [PATCH] Explicitly check memory's data store. #515 --- core/vm/memory.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/vm/memory.go b/core/vm/memory.go index dd47fa1b5..f5984d82f 100644 --- a/core/vm/memory.go +++ b/core/vm/memory.go @@ -15,10 +15,17 @@ func NewMemory() *Memory { } func (m *Memory) Set(offset, size uint64, value []byte) { + // If the length of the store is 0 this is a complete failure + // memory size is set prior to calling this method so enough size + // should always be available. + if len(m.store) == 0 { + panic("INVALID memory: store empty") + } + value = common.RightPadBytes(value, int(size)) totSize := offset + size - lenSize := uint64(len(m.store) - 1) + lenSize := int64(len(m.store) - 1) if totSize > lenSize { // Calculate the diff between the sizes diff := totSize - lenSize