Explicitly check memory's data store. #515

This commit is contained in:
obscuren 2015-03-27 14:22:38 +01:00
parent eb102bf4bb
commit 00f8319faf
1 changed files with 8 additions and 1 deletions

View File

@ -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