From c3c3872f8d4b1b244acee934b20c1ffec23fa8d0 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 16 Sep 2020 01:17:45 +0000 Subject: [PATCH] `validator-info get/set` no longer crash on invalid account data (#12258) (cherry picked from commit 56282f0c0116876daa194e9e9fd6a34e0faeedeb) Co-authored-by: Michael Vines --- cli/src/validator_info.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/cli/src/validator_info.rs b/cli/src/validator_info.rs index c94f661d50..6bc653f8c0 100644 --- a/cli/src/validator_info.rs +++ b/cli/src/validator_info.rs @@ -271,10 +271,12 @@ pub fn process_set_validator_info( let all_config = rpc_client.get_program_accounts(&solana_config_program::id())?; let existing_account = all_config .iter() - .filter(|(_, account)| { - let key_list: ConfigKeys = deserialize(&account.data).map_err(|_| false).unwrap(); - key_list.keys.contains(&(validator_info::id(), false)) - }) + .filter( + |(_, account)| match deserialize::(&account.data) { + Ok(key_list) => key_list.keys.contains(&(validator_info::id(), false)), + Err(_) => false, + }, + ) .find(|(pubkey, account)| { let (validator_pubkey, _) = parse_validator_info(&pubkey, &account).unwrap(); validator_pubkey == config.signers[0].pubkey() @@ -385,10 +387,10 @@ pub fn process_get_validator_info( all_config .into_iter() .filter(|(_, validator_info_account)| { - let key_list: ConfigKeys = deserialize(&validator_info_account.data) - .map_err(|_| false) - .unwrap(); - key_list.keys.contains(&(validator_info::id(), false)) + match deserialize::(&validator_info_account.data) { + Ok(key_list) => key_list.keys.contains(&(validator_info::id(), false)), + Err(_) => false, + } }) .collect() };