From a4a556a5b659d6c03d08cb066e2573fc6b225681 Mon Sep 17 00:00:00 2001 From: emma Date: Fri, 16 Aug 2024 18:43:51 -0600 Subject: [PATCH] mm(1): fixes extra file arguments not being unveil(2)ed --- src/mm.rs | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/mm.rs b/src/mm.rs index b99bf9e..d5f1563 100644 --- a/src/mm.rs +++ b/src/mm.rs @@ -76,29 +76,11 @@ fn main() -> ExitCode { Ok("t") => t = false, Ok("i") => { /* add inputs */ let input = opt.arg().unwrap(); - - if cfg!(target_os="openbsd") { - let perms = UnveilPerms::new(vec!['r']); - if let Err(e) = unveil(Some(&input), Some(perms)) { - eprintln!("{}: {}", argv[0], e.strerror()); - return ExitCode::from(EX_OSERR as u8); - } - } - ins.push(input); mode = Some(In); /* latest argument == -i */ }, Ok("o") => { /* add output */ let output = opt.arg().unwrap(); - - if cfg!(target_os="openbsd") { - let perms = UnveilPerms::new(vec!['w', 'c']); - if let Err(e) = unveil(Some(&output), Some(perms)) { - eprintln!("{}: {}", argv[0], e.strerror()); - return ExitCode::from(EX_OSERR as u8); - } - } - outs.push(output); mode = Some(Out); /* latest argument == -o */ }, @@ -125,6 +107,25 @@ fn main() -> ExitCode { } if cfg!(target_os="openbsd") { + + for input in &ins { + let perms = UnveilPerms::new(vec!['r']); + + if let Err(e) = unveil(Some(&input), Some(perms)) { + eprintln!("{}: {}", argv[0], e.strerror()); + return ExitCode::from(EX_OSERR as u8); + } + } + + for output in &outs { + let perms = UnveilPerms::new(vec!['c', 'w']); + + if let Err(e) = unveil(Some(&output), Some(perms)) { + eprintln!("{}: {}", argv[0], e.strerror()); + return ExitCode::from(EX_OSERR as u8); + } + } + if let Err(e) = unveil(None, None) { eprintln!("{}: {}", argv[0], e.strerror()); return ExitCode::from(EX_OSERR as u8);