1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use libc::{self, rlimit64};
use nix::errno;
#[cfg(target_family = "unix")]
use nix::sys::mman::{mlockall, MlockAllFlags};
pub fn attempt_to_lock_memory() -> bool {
if cfg!(target_family = "unix") {
mlockall(MlockAllFlags::all()).is_ok()
} else {
false
}
}
pub fn disable_core_dump() -> Result<(), nix::Error> {
let rlim = rlimit64 {
rlim_cur: 0,
rlim_max: 0,
};
let res = unsafe { libc::setrlimit64(libc::RLIMIT_CORE, &rlim as *const _) };
errno::Errno::result(res).map(drop)?;
const SUID_DUMP_DISABLE: i32 = 0;
let res = unsafe { libc::prctl(libc::PR_SET_DUMPABLE, SUID_DUMP_DISABLE) };
errno::Errno::result(res).map(drop)
}