From e313cf83322010ee7a63e4f669acae5aca62519b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 3 Dec 2020 03:35:48 +0000 Subject: [PATCH] BankServer::send_transaction_with_context() now performs signature verification (#13932) (cherry picked from commit 3b39e982981ea444c7c174462d5a3a4d5c935da1) Co-authored-by: Michael Vines --- banks-server/src/banks_server.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/banks-server/src/banks_server.rs b/banks-server/src/banks_server.rs index 4c8ebf052b..776b8b8af3 100644 --- a/banks-server/src/banks_server.rs +++ b/banks-server/src/banks_server.rs @@ -122,6 +122,16 @@ impl BanksServer { } } +fn verify_transaction(transaction: &Transaction) -> transaction::Result<()> { + if let Err(err) = transaction.verify() { + Err(err) + } else if let Err(err) = transaction.verify_precompiles() { + Err(err) + } else { + Ok(()) + } +} + #[tarpc::server] impl Banks for BanksServer { async fn send_transaction_with_context(self, _: Context, transaction: Transaction) { @@ -183,6 +193,10 @@ impl Banks for BanksServer { transaction: Transaction, commitment: CommitmentLevel, ) -> Option> { + if let Err(err) = verify_transaction(&transaction) { + return Some(Err(err)); + } + let blockhash = &transaction.message.recent_blockhash; let last_valid_slot = self .bank_forks