Files
solana/sdk/src/program_utils.rs

15 lines
563 B
Rust
Raw Normal View History

use crate::instruction::InstructionError;
2020-02-04 17:04:26 -08:00
/// Deserialize with a limit based the maximum amount of data a program can expect to get.
/// This function should be used in place of direct deserialization to help prevent OOM errors
2020-01-20 15:27:36 -08:00
pub fn limited_deserialize<T>(instruction_data: &[u8]) -> Result<T, InstructionError>
where
T: serde::de::DeserializeOwned,
{
let limit = crate::packet::PACKET_DATA_SIZE as u64;
bincode::config()
.limit(limit)
2020-01-20 15:27:36 -08:00
.deserialize(instruction_data)
.map_err(|_| InstructionError::InvalidInstructionData)
}