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