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"] }
|
nix = { version = "0.26.2", default-features = false, features = ["process", "personality"] }
|
||||||
readonly = { version = "0.2.8", default-features = false }
|
readonly = { version = "0.2.8", default-features = false }
|
||||||
simplelog = { version = "0.12.1", default-features = false }
|
simplelog = { version = "0.12.1", default-features = false }
|
||||||
|
|
||||||
|
[target.'cfg(any(target_os = "freebsd", target_os = "dragonfly"))'.dependencies]
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
@ -8,6 +8,7 @@ use {
|
|||||||
nix::unistd::execvp,
|
nix::unistd::execvp,
|
||||||
std::ffi::CString,
|
std::ffi::CString,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||||
use {
|
use {
|
||||||
crate::args::Args,
|
crate::args::Args,
|
||||||
@ -28,7 +29,7 @@ fn disable_aslr() -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "linux", target_os = "android")))]
|
#[cfg(target_os = "freebsd")]
|
||||||
fn disable_aslr() -> Result<()> {
|
fn disable_aslr() -> Result<()> {
|
||||||
let mut status = libc::PROC_ASLR_FORCE_DISABLE;
|
let mut status = libc::PROC_ASLR_FORCE_DISABLE;
|
||||||
let r = unsafe {
|
let r = unsafe {
|
||||||
@ -45,6 +46,27 @@ fn disable_aslr() -> Result<()> {
|
|||||||
Ok(())
|
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<()> {
|
fn main() -> Result<()> {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user