solana_sdk/
program_utils.rs1use crate::instruction::InstructionError;
2
3pub fn limited_deserialize<T>(instruction_data: &[u8]) -> Result<T, InstructionError>
6where
7 T: serde::de::DeserializeOwned,
8{
9 solana_program::program_utils::limited_deserialize(
10 instruction_data,
11 crate::packet::PACKET_DATA_SIZE as u64,
12 )
13}
14
15#[cfg(test)]
16pub mod tests {
17 use super::*;
18
19 #[test]
20 fn test_limited_deserialize() {
21 #[derive(Deserialize, Serialize)]
22 enum Foo {
23 Bar(Vec<u8>),
24 }
25
26 let item = Foo::Bar([1; crate::packet::PACKET_DATA_SIZE - 12].to_vec()); let serialized = bincode::serialize(&item).unwrap();
28 assert!(limited_deserialize::<Foo>(&serialized).is_ok());
29
30 let item = Foo::Bar([1; crate::packet::PACKET_DATA_SIZE - 11].to_vec()); let serialized = bincode::serialize(&item).unwrap();
32 assert!(limited_deserialize::<Foo>(&serialized).is_err());
33 }
34}