mirror of
https://github.com/d0zingcat/ore.git
synced 2026-05-15 15:10:19 +00:00
add stricter address check
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)?;
|
||||
|
||||
Reference in New Issue
Block a user