verify_pubkey() now takes a ref

This commit is contained in:
Michael Vines
2021-04-21 14:12:23 -07:00
parent 4c94f8933f
commit 91b6888e15

View File

@ -1765,13 +1765,13 @@ fn verify_filter(input: &RpcFilterType) -> Result<()> {
.map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e))) .map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e)))
} }
fn verify_pubkey(input: String) -> Result<Pubkey> { fn verify_pubkey(input: &str) -> Result<Pubkey> {
input input
.parse() .parse()
.map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e))) .map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e)))
} }
fn verify_hash(input: String) -> Result<Hash> { fn verify_hash(input: &str) -> Result<Hash> {
input input
.parse() .parse()
.map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e))) .map_err(|e| Error::invalid_params(format!("Invalid param: {:?}", e)))
@ -1788,11 +1788,11 @@ fn verify_token_account_filter(
) -> Result<TokenAccountsFilter> { ) -> Result<TokenAccountsFilter> {
match token_account_filter { match token_account_filter {
RpcTokenAccountsFilter::Mint(mint_str) => { RpcTokenAccountsFilter::Mint(mint_str) => {
let mint = verify_pubkey(mint_str)?; let mint = verify_pubkey(&mint_str)?;
Ok(TokenAccountsFilter::Mint(mint)) Ok(TokenAccountsFilter::Mint(mint))
} }
RpcTokenAccountsFilter::ProgramId(program_id_str) => { RpcTokenAccountsFilter::ProgramId(program_id_str) => {
let program_id = verify_pubkey(program_id_str)?; let program_id = verify_pubkey(&program_id_str)?;
Ok(TokenAccountsFilter::ProgramId(program_id)) Ok(TokenAccountsFilter::ProgramId(program_id))
} }
} }
@ -2125,7 +2125,7 @@ pub mod rpc_minimal {
commitment: Option<CommitmentConfig>, commitment: Option<CommitmentConfig>,
) -> Result<RpcResponse<u64>> { ) -> Result<RpcResponse<u64>> {
debug!("get_balance rpc request received: {:?}", pubkey_str); debug!("get_balance rpc request received: {:?}", pubkey_str);
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
Ok(meta.get_balance(&pubkey, commitment)) Ok(meta.get_balance(&pubkey, commitment))
} }
@ -2530,7 +2530,7 @@ pub mod rpc_full {
config: Option<RpcAccountInfoConfig>, config: Option<RpcAccountInfoConfig>,
) -> Result<RpcResponse<Option<UiAccount>>> { ) -> Result<RpcResponse<Option<UiAccount>>> {
debug!("get_account_info rpc request received: {:?}", pubkey_str); debug!("get_account_info rpc request received: {:?}", pubkey_str);
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
meta.get_account_info(&pubkey, config) meta.get_account_info(&pubkey, config)
} }
@ -2557,7 +2557,7 @@ pub mod rpc_full {
} }
let mut pubkeys: Vec<Pubkey> = vec![]; let mut pubkeys: Vec<Pubkey> = vec![];
for pubkey_str in pubkey_strs { for pubkey_str in pubkey_strs {
pubkeys.push(verify_pubkey(pubkey_str)?); pubkeys.push(verify_pubkey(&pubkey_str)?);
} }
meta.get_multiple_accounts(pubkeys, config) meta.get_multiple_accounts(pubkeys, config)
} }
@ -2588,7 +2588,7 @@ pub mod rpc_full {
"get_program_accounts rpc request received: {:?}", "get_program_accounts rpc request received: {:?}",
program_id_str program_id_str
); );
let program_id = verify_pubkey(program_id_str)?; let program_id = verify_pubkey(&program_id_str)?;
let (config, filters) = if let Some(config) = config { let (config, filters) = if let Some(config) = config {
( (
Some(config.account_config), Some(config.account_config),
@ -2820,13 +2820,13 @@ pub mod rpc_full {
); );
let faucet_addr = meta.config.faucet_addr.ok_or_else(Error::invalid_request)?; let faucet_addr = meta.config.faucet_addr.ok_or_else(Error::invalid_request)?;
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
let config = config.unwrap_or_default(); let config = config.unwrap_or_default();
let bank = meta.bank(config.commitment); let bank = meta.bank(config.commitment);
let blockhash = if let Some(blockhash) = config.recent_blockhash { let blockhash = if let Some(blockhash) = config.recent_blockhash {
verify_hash(blockhash)? verify_hash(&blockhash)?
} else { } else {
bank.confirmed_last_blockhash().0 bank.confirmed_last_blockhash().0
}; };
@ -3084,7 +3084,7 @@ pub mod rpc_full {
address: String, address: String,
config: Option<RpcSignaturesForAddressConfig>, config: Option<RpcSignaturesForAddressConfig>,
) -> Result<Vec<RpcConfirmedTransactionStatusWithSignature>> { ) -> Result<Vec<RpcConfirmedTransactionStatusWithSignature>> {
let address = verify_pubkey(address)?; let address = verify_pubkey(&address)?;
let config = config.unwrap_or_default(); let config = config.unwrap_or_default();
let before = config let before = config
@ -3124,7 +3124,7 @@ pub mod rpc_full {
"get_stake_activation rpc request received: {:?}", "get_stake_activation rpc request received: {:?}",
pubkey_str pubkey_str
); );
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
meta.get_stake_activation(&pubkey, config) meta.get_stake_activation(&pubkey, config)
} }
@ -3141,7 +3141,7 @@ pub mod rpc_full {
let mut addresses: Vec<Pubkey> = vec![]; let mut addresses: Vec<Pubkey> = vec![];
for address_str in address_strs { for address_str in address_strs {
addresses.push(verify_pubkey(address_str)?); addresses.push(verify_pubkey(&address_str)?);
} }
meta.get_inflation_reward(addresses, config) meta.get_inflation_reward(addresses, config)
@ -3157,7 +3157,7 @@ pub mod rpc_full {
"get_token_account_balance rpc request received: {:?}", "get_token_account_balance rpc request received: {:?}",
pubkey_str pubkey_str
); );
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
meta.get_token_account_balance(&pubkey, commitment) meta.get_token_account_balance(&pubkey, commitment)
} }
@ -3168,7 +3168,7 @@ pub mod rpc_full {
commitment: Option<CommitmentConfig>, commitment: Option<CommitmentConfig>,
) -> Result<RpcResponse<UiTokenAmount>> { ) -> Result<RpcResponse<UiTokenAmount>> {
debug!("get_token_supply rpc request received: {:?}", mint_str); debug!("get_token_supply rpc request received: {:?}", mint_str);
let mint = verify_pubkey(mint_str)?; let mint = verify_pubkey(&mint_str)?;
meta.get_token_supply(&mint, commitment) meta.get_token_supply(&mint, commitment)
} }
@ -3182,7 +3182,7 @@ pub mod rpc_full {
"get_token_largest_accounts rpc request received: {:?}", "get_token_largest_accounts rpc request received: {:?}",
mint_str mint_str
); );
let mint = verify_pubkey(mint_str)?; let mint = verify_pubkey(&mint_str)?;
meta.get_token_largest_accounts(&mint, commitment) meta.get_token_largest_accounts(&mint, commitment)
} }
@ -3197,7 +3197,7 @@ pub mod rpc_full {
"get_token_accounts_by_owner rpc request received: {:?}", "get_token_accounts_by_owner rpc request received: {:?}",
owner_str owner_str
); );
let owner = verify_pubkey(owner_str)?; let owner = verify_pubkey(&owner_str)?;
let token_account_filter = verify_token_account_filter(token_account_filter)?; let token_account_filter = verify_token_account_filter(token_account_filter)?;
meta.get_token_accounts_by_owner(&owner, token_account_filter, config) meta.get_token_accounts_by_owner(&owner, token_account_filter, config)
} }
@ -3213,7 +3213,7 @@ pub mod rpc_full {
"get_token_accounts_by_delegate rpc request received: {:?}", "get_token_accounts_by_delegate rpc request received: {:?}",
delegate_str delegate_str
); );
let delegate = verify_pubkey(delegate_str)?; let delegate = verify_pubkey(&delegate_str)?;
let token_account_filter = verify_token_account_filter(token_account_filter)?; let token_account_filter = verify_token_account_filter(token_account_filter)?;
meta.get_token_accounts_by_delegate(&delegate, token_account_filter, config) meta.get_token_accounts_by_delegate(&delegate, token_account_filter, config)
} }
@ -3340,7 +3340,7 @@ pub mod rpc_deprecated_v1_7 {
address: String, address: String,
config: Option<RpcGetConfirmedSignaturesForAddress2Config>, config: Option<RpcGetConfirmedSignaturesForAddress2Config>,
) -> Result<Vec<RpcConfirmedTransactionStatusWithSignature>> { ) -> Result<Vec<RpcConfirmedTransactionStatusWithSignature>> {
let address = verify_pubkey(address)?; let address = verify_pubkey(&address)?;
let config = config.unwrap_or_default(); let config = config.unwrap_or_default();
let before = config let before = config
@ -3483,7 +3483,7 @@ pub mod rpc_obsolete_v1_7 {
"get_confirmed_signatures_for_address rpc request received: {:?} {:?}-{:?}", "get_confirmed_signatures_for_address rpc request received: {:?} {:?}-{:?}",
pubkey_str, start_slot, end_slot pubkey_str, start_slot, end_slot
); );
let pubkey = verify_pubkey(pubkey_str)?; let pubkey = verify_pubkey(&pubkey_str)?;
if end_slot < start_slot { if end_slot < start_slot {
return Err(Error::invalid_params(format!( return Err(Error::invalid_params(format!(
"start_slot {} must be less than or equal to end_slot {}", "start_slot {} must be less than or equal to end_slot {}",
@ -5269,10 +5269,10 @@ pub mod tests {
#[test] #[test]
fn test_rpc_verify_pubkey() { fn test_rpc_verify_pubkey() {
let pubkey = solana_sdk::pubkey::new_rand(); let pubkey = solana_sdk::pubkey::new_rand();
assert_eq!(verify_pubkey(pubkey.to_string()).unwrap(), pubkey); assert_eq!(verify_pubkey(&pubkey.to_string()).unwrap(), pubkey);
let bad_pubkey = "a1b2c3d4"; let bad_pubkey = "a1b2c3d4";
assert_eq!( assert_eq!(
verify_pubkey(bad_pubkey.to_string()), verify_pubkey(&bad_pubkey.to_string()),
Err(Error::invalid_params("Invalid param: WrongSize")) Err(Error::invalid_params("Invalid param: WrongSize"))
); );
} }