core: align overflow checks in IntrinsicGas

This commit is contained in:
kourin 2024-12-18 18:47:53 +09:00
parent 1321a42525
commit c40cb1be5f

View file

@ -110,11 +110,24 @@ func IntrinsicGas(data []byte, accessList types.AccessList, authList []types.Aut
}
}
if accessList != nil {
gas += uint64(len(accessList)) * params.TxAccessListAddressGas
gas += uint64(accessList.StorageKeys()) * params.TxAccessListStorageKeyGas
numItems := uint64(len(accessList))
if (math.MaxUint64-gas)/params.TxAccessListAddressGas < numItems {
return 0, ErrGasUintOverflow
}
gas += numItems * params.TxAccessListAddressGas
numStorageKeys := uint64(accessList.StorageKeys())
if (math.MaxUint64-gas)/params.TxAccessListStorageKeyGas < numStorageKeys {
return 0, ErrGasUintOverflow
}
gas += numStorageKeys * params.TxAccessListStorageKeyGas
}
if authList != nil {
gas += uint64(len(authList)) * params.CallNewAccountGas
numItems := uint64(len(authList))
if (math.MaxUint64-gas)/params.CallNewAccountGas < numItems {
return 0, ErrGasUintOverflow
}
gas += numItems * params.CallNewAccountGas
}
return gas, nil
}