Fix crash on negative stat f_type (Rust-port regression)

Fixes #11219
This commit is contained in:
Johannes Altmanninger
2025-03-05 07:58:38 +01:00
parent db4c999272
commit e5852a6100

View File

@@ -707,7 +707,12 @@ fn path_remoteness(path: &wstr) -> DirRemoteness {
// these are in varying headers. Simply hard code them.
// Note that we treat FUSE filesystems as remote, which means we lock less on such filesystems.
// NOTE: The cast is necessary for 32-bit systems because of the 4-byte CIFS_MAGIC_NUMBER
match usize::try_from(buf.f_type).unwrap() {
const _: () = assert!({
use std::mem;
let f_type = unsafe { mem::zeroed::<libc::statfs>() }.f_type;
mem::size_of_val(&f_type) <= mem::size_of::<usize>()
});
match buf.f_type as usize {
0x5346414F | // AFS_SUPER_MAGIC - Andrew File System
0x6B414653 | // AFS_FS_MAGIC - Kernel AFS and AuriStorFS
0x73757245 | // CODA_SUPER_MAGIC - Coda File System