瀏覽代碼

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
Liang Ma 6 年之前
父節點
當前提交
157f09e5b6
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      core/vm/gas_table.go

+ 3 - 3
core/vm/gas_table.go

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