Skip to content

Commit f9da9eb

Browse files
committed
♻️ Adding checks to BoltMetadata partial deserialization
1 parent e36553c commit f9da9eb

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

crates/bolt-lang/src/lib.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,14 @@ pub fn pubkey_from_str(s: &str) -> solana_program::pubkey::Pubkey {
8888
impl BoltMetadata {
8989
pub fn try_from_account_info(account: &AccountInfo) -> Result<Self> {
9090
let data = account.try_borrow_data()?;
91-
let bolt_metadata = &data[8..8 + std::mem::size_of::<BoltMetadata>()];
92-
Ok(BoltMetadata::try_from_slice(bolt_metadata)?)
91+
require!(data.len() >= 8 + BoltMetadata::INIT_SPACE, ErrorCode::AccountDidNotDeserialize);
92+
let slice = &data[8..8 + BoltMetadata::INIT_SPACE];
93+
Ok(BoltMetadata::try_from_slice(slice)?)
9394
}
9495

9596
pub fn discriminator_from_account_info(account: &AccountInfo) -> Result<Vec<u8>> {
9697
let data = account.try_borrow_data()?;
98+
require!(data.len() >= 8, ErrorCode::AccountDidNotDeserialize);
9799
let discriminator = &data[0..8];
98100
Ok(discriminator.to_vec())
99101
}

0 commit comments

Comments
 (0)