mirror of
https://github.com/redstrate/Physis.git
synced 2025-04-23 13:17:44 +00:00
Add invalid data test for MDL
This commit is contained in:
parent
087deb2bc8
commit
a7a9a7855e
2 changed files with 13 additions and 3 deletions
14
src/model.rs
14
src/model.rs
|
@ -422,9 +422,9 @@ pub struct MDL {
|
|||
impl MDL {
|
||||
pub fn from_existing(buffer: ByteSpan) -> Option<MDL> {
|
||||
let mut cursor = Cursor::new(buffer);
|
||||
let model_file_header = ModelFileHeader::read(&mut cursor).unwrap();
|
||||
let model_file_header = ModelFileHeader::read(&mut cursor).ok()?;
|
||||
|
||||
let model = ModelData::read_args(&mut cursor, binrw::args! { file_header: &model_file_header }).unwrap();
|
||||
let model = ModelData::read_args(&mut cursor, binrw::args! { file_header: &model_file_header }).ok()?;
|
||||
|
||||
let mut affected_bone_names = vec![];
|
||||
|
||||
|
@ -1150,4 +1150,14 @@ mod tests {
|
|||
// model header
|
||||
assert_eq!(mdl.model_data.header.radius, 1.5340779);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_invalid() {
|
||||
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
d.push("resources/tests");
|
||||
d.push("random");
|
||||
|
||||
// Feeding it invalid data should not panic
|
||||
MDL::from_existing(&read(d).unwrap());
|
||||
}
|
||||
}
|
|
@ -67,7 +67,7 @@ pub(crate) fn vertex_element_parser(count: u16) -> BinResult<Vec<VertexDeclarati
|
|||
count.into()
|
||||
];
|
||||
for declaration in &mut vertex_declarations {
|
||||
let mut element = VertexElement::read_options(reader, endian, ()).unwrap();
|
||||
let mut element = VertexElement::read_options(reader, endian, ())?;
|
||||
|
||||
loop {
|
||||
declaration.elements.push(element);
|
||||
|
|
Loading…
Add table
Reference in a new issue