Merge pull request #62 from rust-windowing/seal-shrink
wayland: Seal memfd to prevent shrinking
This commit is contained in:
commit
ee3e6e8870
1 changed files with 14 additions and 3 deletions
|
|
@ -16,11 +16,22 @@ use super::State;
|
|||
|
||||
#[cfg(any(target_os = "linux", target_os = "freebsd"))]
|
||||
fn create_memfile() -> File {
|
||||
use nix::sys::memfd::{memfd_create, MemFdCreateFlag};
|
||||
use nix::{
|
||||
fcntl::{fcntl, FcntlArg, SealFlag},
|
||||
sys::memfd::{memfd_create, MemFdCreateFlag},
|
||||
};
|
||||
|
||||
let name = unsafe { CStr::from_bytes_with_nul_unchecked("softbuffer\0".as_bytes()) };
|
||||
let fd = memfd_create(name, MemFdCreateFlag::MFD_CLOEXEC)
|
||||
.expect("Failed to create memfd to store buffer.");
|
||||
let fd = memfd_create(
|
||||
name,
|
||||
MemFdCreateFlag::MFD_CLOEXEC | MemFdCreateFlag::MFD_ALLOW_SEALING,
|
||||
)
|
||||
.expect("Failed to create memfd to store buffer.");
|
||||
let _ = fcntl(
|
||||
fd,
|
||||
FcntlArg::F_ADD_SEALS(SealFlag::F_SEAL_SHRINK | SealFlag::F_SEAL_SEAL),
|
||||
)
|
||||
.expect("Failed to seal memfd.");
|
||||
unsafe { File::from_raw_fd(fd) }
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue