From 1e47d1ee499747080752cebea5b2dfe79fff507a Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Thu, 9 Feb 2023 16:45:58 -0500 Subject: [PATCH 1/2] moves check for init code length before balance check Signed-off-by: Justin Florentine --- .../src/reference-test/external-resources | 2 +- .../besu/evm/operation/AbstractCreateOperation.java | 12 ++++++------ gradle.properties | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ethereum/referencetests/src/reference-test/external-resources b/ethereum/referencetests/src/reference-test/external-resources index 69c4c2a98dc..638da7ca7b2 160000 --- a/ethereum/referencetests/src/reference-test/external-resources +++ b/ethereum/referencetests/src/reference-test/external-resources @@ -1 +1 @@ -Subproject commit 69c4c2a98dc8a712d4c6f5a817da4f21ff719006 +Subproject commit 638da7ca7b2ca371ebb33d7d7d2562981aafd9b2 diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java index ca28eecdb62..a2ebcf472df 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java @@ -80,6 +80,12 @@ public OperationResult execute(final MessageFrame frame, final EVM evm) { final MutableAccount account = frame.getWorldUpdater().getAccount(address).getMutable(); frame.clearReturnData(); + final long inputOffset = clampedToLong(frame.getStackItem(1)); + final long inputSize = clampedToLong(frame.getStackItem(2)); + if (inputSize > maxInitcodeSize) { + frame.popStackItems(getStackItemsConsumed()); + return new OperationResult(cost, ExceptionalHaltReason.CODE_TOO_LARGE); + } if (value.compareTo(account.getBalance()) > 0 || frame.getMessageStackDepth() >= 1024 @@ -88,12 +94,6 @@ public OperationResult execute(final MessageFrame frame, final EVM evm) { } else { account.incrementNonce(); - final long inputOffset = clampedToLong(frame.getStackItem(1)); - final long inputSize = clampedToLong(frame.getStackItem(2)); - if (inputSize > maxInitcodeSize) { - frame.popStackItems(getStackItemsConsumed()); - return new OperationResult(cost, ExceptionalHaltReason.CODE_TOO_LARGE); - } final Bytes inputData = frame.readMemory(inputOffset, inputSize); // Never cache CREATEx initcode. The amount of reuse is very low, and caching mostly // addresses disk loading delay, and we already have the code. diff --git a/gradle.properties b/gradle.properties index 2e2a4bbdbf9..2061eb9c1f6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ version=23.1.1-SNAPSHOT org.gradle.welcome=never # Set exports/opens flags required by Google Java Format and ErrorProne plugins. (JEP-396) -org.gradle.jvmargs=-Xmx2g \ +org.gradle.jvmargs=-Xmx4g \ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \ From b7badfc07242a2d972192851e1246bab8c29117a Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Fri, 10 Feb 2023 10:05:17 -0500 Subject: [PATCH 2/2] not everyone needs 4g Signed-off-by: Justin Florentine --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2061eb9c1f6..2e2a4bbdbf9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ version=23.1.1-SNAPSHOT org.gradle.welcome=never # Set exports/opens flags required by Google Java Format and ErrorProne plugins. (JEP-396) -org.gradle.jvmargs=-Xmx4g \ +org.gradle.jvmargs=-Xmx2g \ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED \