From 3543a9a49f7d027afa0b37f5866547ad40c63a13 Mon Sep 17 00:00:00 2001 From: Stephen Akridge Date: Thu, 15 Nov 2018 12:58:40 -0800 Subject: [PATCH] Add check for missing signature with fee'ed transaction And update fetch-perf-libs version --- fetch-perf-libs.sh | 2 +- src/bank.rs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fetch-perf-libs.sh b/fetch-perf-libs.sh index 727b4f0f73..ae1d2d0876 100755 --- a/fetch-perf-libs.sh +++ b/fetch-perf-libs.sh @@ -16,7 +16,7 @@ mkdir -p target/perf-libs cd target/perf-libs ( set -x - curl https://solana-perf.s3.amazonaws.com/v0.11.0/x86_64-unknown-linux-gnu/solana-perf.tgz | tar zxvf - + curl https://solana-perf.s3.amazonaws.com/v0.11.1/x86_64-unknown-linux-gnu/solana-perf.tgz | tar zxvf - ) if [[ -r solana-perf-CUDA_HOME.txt ]]; then diff --git a/src/bank.rs b/src/bank.rs index dfc51b219b..cac1018e3a 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -104,6 +104,9 @@ pub enum BankError { /// Loader call chain too deep CallChainTooDeep, + + /// Transaction has a fee but has no signature present + MissingSignatureForFee, } pub type Result = result::Result; @@ -637,7 +640,9 @@ impl Bank { error_counters: &mut ErrorCounters, ) -> Result> { // Copy all the accounts - if accounts.load(&tx.account_keys[0]).is_none() { + if tx.signatures.is_empty() && tx.fee != 0 { + Err(BankError::MissingSignatureForFee) + } else if accounts.load(&tx.account_keys[0]).is_none() { error_counters.account_not_found += 1; Err(BankError::AccountNotFound) } else if accounts.load(&tx.account_keys[0]).unwrap().tokens < tx.fee {