add stricter address check

This commit is contained in:
Hardhat Chad
2024-10-11 20:58:56 +00:00
parent 8d2efb8916
commit 24aace2c24
2 changed files with 9 additions and 1 deletions

View File

@@ -6,12 +6,20 @@ use crate::{
};
pub trait OreAccountInfoValidation {
fn is_bus(&self) -> Result<&Self, ProgramError>;
fn is_config(&self) -> Result<&Self, ProgramError>;
fn is_treasury(&self) -> Result<&Self, ProgramError>;
fn is_treasury_tokens(&self) -> Result<&Self, ProgramError>;
}
impl OreAccountInfoValidation for AccountInfo<'_> {
fn is_bus(&self) -> Result<&Self, ProgramError> {
if !BUS_ADDRESSES.contains(self.key) {
return Err(ProgramError::InvalidSeeds);
}
Ok(self)
}
fn is_config(&self) -> Result<&Self, ProgramError> {
self.has_address(&CONFIG_ADDRESS)?
.is_type::<Config>(&crate::ID)

View File

@@ -29,7 +29,7 @@ pub fn process_mine(accounts: &[AccountInfo], data: &[u8]) -> ProgramResult {
return Err(ProgramError::NotEnoughAccountKeys);
};
signer_info.is_signer()?;
let bus = bus_info.to_account_mut::<Bus>(&ore_api::ID)?;
let bus = bus_info.is_bus()?.to_account_mut::<Bus>(&ore_api::ID)?;
let config = config_info
.is_config()?
.to_account::<Config>(&ore_api::ID)?;