From ce14890336295f3ad86036e8d65ff8612a9eb27f Mon Sep 17 00:00:00 2001 From: "Joshua J. Bouw" Date: Mon, 7 Aug 2023 11:41:44 +0400 Subject: [PATCH] fix: missing exit errors (#815) ## Description The EVM errors haven't been updated to include the latest EVM errors provided by Sputnik EVM. This simply adds them back in. ## Additional information This is related to a non-security releated on-chain incident: https://explorer.near.org/transactions/DwNRjGnZack99i8QtZ877i1MEsSzGMNWY3jpPDPxWvpb --- engine/src/engine.rs | 3 +++ engine/src/errors.rs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/engine/src/engine.rs b/engine/src/engine.rs index b4132996c..180ca8c5d 100644 --- a/engine/src/engine.rs +++ b/engine/src/engine.rs @@ -128,9 +128,12 @@ impl EngineErrorKind { Self::EvmError(ExitError::CallTooDeep) => errors::ERR_CALL_TOO_DEEP, Self::EvmError(ExitError::CreateCollision) => errors::ERR_CREATE_COLLISION, Self::EvmError(ExitError::CreateContractLimit) => errors::ERR_CREATE_CONTRACT_LIMIT, + Self::EvmError(ExitError::InvalidCode(_)) => errors::ERR_INVALID_OPCODE, Self::EvmError(ExitError::OutOfOffset) => errors::ERR_OUT_OF_OFFSET, Self::EvmError(ExitError::OutOfGas) => errors::ERR_OUT_OF_GAS, Self::EvmError(ExitError::OutOfFund) => errors::ERR_OUT_OF_FUND, + Self::EvmError(ExitError::CreateEmpty) => errors::ERR_CREATE_EMPTY, + Self::EvmError(ExitError::MaxNonce) => errors::ERR_MAX_NONCE, Self::EvmFatal(ExitFatal::NotSupported) => errors::ERR_NOT_SUPPORTED, Self::EvmFatal(ExitFatal::UnhandledInterrupt) => errors::ERR_UNHANDLED_INTERRUPT, Self::EvmError(ExitError::Other(m)) | Self::EvmFatal(ExitFatal::Other(m)) => { diff --git a/engine/src/errors.rs b/engine/src/errors.rs index c2bc58e42..f1e2d1138 100644 --- a/engine/src/errors.rs +++ b/engine/src/errors.rs @@ -41,7 +41,10 @@ pub const ERR_INVALID_RANGE: &[u8; 17] = b"ERR_INVALID_RANGE"; pub const ERR_DESIGNATED_INVALID: &[u8; 22] = b"ERR_DESIGNATED_INVALID"; pub const ERR_CREATE_COLLISION: &[u8; 20] = b"ERR_CREATE_COLLISION"; pub const ERR_CREATE_CONTRACT_LIMIT: &[u8; 25] = b"ERR_CREATE_CONTRACT_LIMIT"; +pub const ERR_INVALID_OPCODE: &[u8; 18] = b"ERR_INVALID_OPCODE"; pub const ERR_OUT_OF_FUND: &[u8; 15] = b"ERR_OUT_OF_FUND"; +pub const ERR_CREATE_EMPTY: &[u8; 16] = b"ERR_CREATE_EMPTY"; +pub const ERR_MAX_NONCE: &[u8; 13] = b"ERR_MAX_NONCE"; pub const ERR_NOT_SUPPORTED: &[u8; 17] = b"ERR_NOT_SUPPORTED"; pub const ERR_UNHANDLED_INTERRUPT: &[u8; 23] = b"ERR_UNHANDLED_INTERRUPT"; pub const ERR_INCORRECT_NONCE: &[u8; 19] = b"ERR_INCORRECT_NONCE";