Commit 157f09e5 authored by Liang Ma's avatar Liang Ma

core/vm: Correct the Memory Gas Overflow condition

previous overflow condition is too big to use.
0x7FFFFFFFF squre operation is overflowed uint64.

0x7FFFFFFFF^2 = 0x3F FFFF FFF0 0000 0001
parent 5b0d3fa3
......@@ -32,11 +32,11 @@ func memoryGasCost(mem *Memory, newMemSize uint64) (uint64, error) {
// The maximum that will fit in a uint64 is max_word_count - 1
// anything above that will result in an overflow.
// Additionally, a newMemSize which results in a
// newMemSizeWords larger than 0x7ffffffff will cause the square operation
// newMemSizeWords larger than 0xFFFFFFFF will cause the square operation
// to overflow.
// The constant 0xffffffffe0 is the highest number that can be used without
// The constant 0x1FFFFFFFE0 is the highest number that can be used without
// overflowing the gas calculation
if newMemSize > 0xffffffffe0 {
if newMemSize > 0x1FFFFFFFE0 {
return 0, errGasUintOverflow
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment