in src/primitives.rs [497:532]
fn test_corrupted_vec_len() {
let vm = VersionMap::new();
let mut buffer = vec![0u8; 1024];
let mut string = String::from("Test string1");
let vec = unsafe { string.as_mut_vec() };
vec.serialize(&mut buffer.as_mut_slice(), &vm, 1).unwrap();
// Test corrupt length field.
assert_eq!(
<Vec<u8> as Versionize>::deserialize(
&mut buffer.as_slice().split_first().unwrap().1,
&vm,
1
)
.unwrap_err(),
VersionizeError::VecLength(6052837899185946624)
);
// Test incomplete Vec.
assert_eq!(
<Vec<u8> as Versionize>::deserialize(&mut buffer.as_slice().split_at(6).0, &vm, 1)
.unwrap_err(),
VersionizeError::Deserialize(
"Io(Custom { kind: UnexpectedEof, error: \"failed to fill whole buffer\" })"
.to_owned()
)
);
// Test NULL Vec len.
buffer[0] = 0;
assert_eq!(
<Vec<u8> as Versionize>::deserialize(&mut buffer.as_slice(), &vm, 1).unwrap(),
Vec::new()
);
}