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