ext2: fix panic when encountering invalid UTF-8

This commit is contained in:
Mark Poliakov 2024-12-29 12:51:34 +02:00
parent baff0cd5bd
commit 7844116411

View File

@ -118,7 +118,6 @@ impl<'a> Iterator for DirentIter<'a> {
let dirent: &Dirent = bytemuck::from_bytes(&self.block[self.offset..entry_end]); let dirent: &Dirent = bytemuck::from_bytes(&self.block[self.offset..entry_end]);
if dirent.ino == 0 { if dirent.ino == 0 {
// TODO skip over empty/padding dirents
self.offset += dirent.ent_size as usize; self.offset += dirent.ent_size as usize;
continue; continue;
} }
@ -329,13 +328,14 @@ impl DirectoryNode {
pos += dirent.ent_size as u64; pos += dirent.ent_size as u64;
let name = core::str::from_utf8(name).unwrap(); if let Ok(name) = core::str::from_utf8(name) {
entries[entry_count].write(DirectoryEntry { entries[entry_count].write(DirectoryEntry {
ty: None, ty: None,
name: FixedString::from_str(name)?, name: FixedString::from_str(name)?,
}); });
entry_count += 1; entry_count += 1;
}
} }
Ok((entry_count, pos)) Ok((entry_count, pos))