noaslr disable aslr for dragonflybsd. (#1364)
This commit is contained in:
parent
1609960244
commit
a95b322b1c
@ -13,4 +13,6 @@ log = { version = "0.4.19", default-features = false }
|
||||
nix = { version = "0.26.2", default-features = false, features = ["process", "personality"] }
|
||||
readonly = { version = "0.2.8", default-features = false }
|
||||
simplelog = { version = "0.12.1", default-features = false }
|
||||
|
||||
[target.'cfg(any(target_os = "freebsd", target_os = "dragonfly"))'.dependencies]
|
||||
libc = "0.2"
|
||||
|
@ -8,6 +8,7 @@ use {
|
||||
nix::unistd::execvp,
|
||||
std::ffi::CString,
|
||||
};
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
use {
|
||||
crate::args::Args,
|
||||
@ -28,7 +29,7 @@ fn disable_aslr() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(any(target_os = "linux", target_os = "android")))]
|
||||
#[cfg(target_os = "freebsd")]
|
||||
fn disable_aslr() -> Result<()> {
|
||||
let mut status = libc::PROC_ASLR_FORCE_DISABLE;
|
||||
let r = unsafe {
|
||||
@ -45,6 +46,27 @@ fn disable_aslr() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(target_os = "dragonfly")]
|
||||
fn disable_aslr() -> Result<()> {
|
||||
unsafe {
|
||||
let disable: i32 = 0;
|
||||
let s = std::mem::size_of::<i32>();
|
||||
let nm = CString::new("vm.randomize_mmap")
|
||||
.map_err(|e| anyhow!("Failed to create sysctl oid: {e:}"))
|
||||
.unwrap();
|
||||
if libc::sysctlbyname(
|
||||
nm.as_ptr(),
|
||||
std::ptr::null_mut(),
|
||||
std::ptr::null_mut(),
|
||||
&disable as *const i32 as _,
|
||||
s,
|
||||
) < 0 {
|
||||
return Err(anyhow!("Failed to disable aslr"));
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let args = Args::parse();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user