Refuse prepared-lower child mount crossings

This commit is contained in:
ms2k 2026-07-16 21:09:48 +09:00
commit b35582a9e6

View file

@ -693,7 +693,10 @@ fn hex(bytes: &[u8]) -> String {
}
fn secure_resolve() -> ResolveFlags {
ResolveFlags::BENEATH | ResolveFlags::NO_SYMLINKS | ResolveFlags::NO_MAGICLINKS
ResolveFlags::BENEATH
| ResolveFlags::NO_SYMLINKS
| ResolveFlags::NO_MAGICLINKS
| ResolveFlags::NO_XDEV
}
#[cfg(test)]
@ -711,4 +714,9 @@ mod fixed_directory_tests {
std::fs::set_permissions(directory.path(), std::fs::Permissions::from_mode(0o700)).unwrap();
assert!(require_owned_directory(&root).is_ok());
}
#[test]
fn retained_store_resolution_refuses_mount_crossing() {
assert!(secure_resolve().contains(ResolveFlags::NO_XDEV));
}
}