mm(1): fixes extra file arguments not being unveil(2)ed

This commit is contained in:
Emma Tebibyte 2024-08-16 18:43:51 -06:00
parent e2c03842a3
commit a4a556a5b6
Signed by: emma
GPG Key ID: 06FA419A1698C270

View File

@ -76,29 +76,11 @@ fn main() -> ExitCode {
Ok("t") => t = false, Ok("t") => t = false,
Ok("i") => { /* add inputs */ Ok("i") => { /* add inputs */
let input = opt.arg().unwrap(); 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); ins.push(input);
mode = Some(In); /* latest argument == -i */ mode = Some(In); /* latest argument == -i */
}, },
Ok("o") => { /* add output */ Ok("o") => { /* add output */
let output = opt.arg().unwrap(); 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); outs.push(output);
mode = Some(Out); /* latest argument == -o */ mode = Some(Out); /* latest argument == -o */
}, },
@ -125,6 +107,25 @@ fn main() -> ExitCode {
} }
if cfg!(target_os="openbsd") { 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) { if let Err(e) = unveil(None, None) {
eprintln!("{}: {}", argv[0], e.strerror()); eprintln!("{}: {}", argv[0], e.strerror());
return ExitCode::from(EX_OSERR as u8); return ExitCode::from(EX_OSERR as u8);