Compare commits

...

2 Commits

2 changed files with 11 additions and 13 deletions

View File

@ -69,14 +69,12 @@ pub fn pledge(
pub struct UnveilPerms(CString); pub struct UnveilPerms(CString);
impl UnveilPerms { impl UnveilPerms {
pub fn new(permissions: Vec<char>) -> Self { pub fn new<T: IntoIterator<Item = char>>(permissions: T) -> Self {
if permissions.is_empty() { let perms = CString::new(
return UnveilPerms(CString::new("").unwrap()); permissions.into_iter().collect::<String>()
} ).unwrap();
UnveilPerms( UnveilPerms(perms)
CString::new(permissions.iter().collect::<String>()).unwrap()
)
} }
} }
@ -87,9 +85,9 @@ pub fn unveil(
let path_c = path.map(CString::new).map(Result::unwrap); let path_c = path.map(CString::new).map(Result::unwrap);
let arg1 = path_c.map(|p| p.into_raw() as *const c_char).unwrap_or(null()); let arg1 = path_c.map(|p| p.into_raw() as *const c_char).unwrap_or(null());
let arg2 = permissions let arg2 = permissions.map(|p| {
.map(|p| p.0.into_raw() as *const c_char) p.0.into_raw() as *const c_char
.unwrap_or(null()); }).unwrap_or(null());
unsafe { unsafe {
match openbsd::unveil(arg1, arg2) { match openbsd::unveil(arg1, arg2) {

View File

@ -115,7 +115,7 @@ fn main() -> ExitCode {
#[cfg(target_os="openbsd")] { #[cfg(target_os="openbsd")] {
for input in &ins { for input in &ins {
let perms = UnveilPerms::new(vec!['r']); let perms = UnveilPerms::new(['r']);
if let Err(e) = unveil(Some(&input), Some(perms)) { if let Err(e) = unveil(Some(&input), Some(perms)) {
return err(&argv[0], e, Some(EX_OSERR)); return err(&argv[0], e, Some(EX_OSERR));
@ -123,7 +123,7 @@ fn main() -> ExitCode {
} }
for output in &outs { for output in &outs {
let perms = UnveilPerms::new(vec!['c', 'w']); let perms = UnveilPerms::new(['c', 'w']);
if let Err(e) = unveil(Some(&output), Some(perms)) { if let Err(e) = unveil(Some(&output), Some(perms)) {
return err(&argv[0], e, Some(EX_OSERR)); return err(&argv[0], e, Some(EX_OSERR));