Refactor unveil calls so errors can be reported properly
This commit is contained in:
parent
5b1a5f2876
commit
b7ebd38698
28
daemon.c
28
daemon.c
@ -216,19 +216,23 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
#ifdef __OpenBSD__
|
||||
if (pidPath) {
|
||||
error = unveil(pidPath, "cw");
|
||||
if (error) err(EX_OSERR, "unveil");
|
||||
struct {
|
||||
const char *path;
|
||||
const char *mode;
|
||||
} paths[] = {
|
||||
{ fifoPath, "crw" },
|
||||
{ configPath, "r" },
|
||||
{ "/", "r" },
|
||||
{ "/dev/null", "rw" },
|
||||
{ serviceDir, "r" },
|
||||
{ _PATH_BSHELL, "x" },
|
||||
{ pidPath, "cw" },
|
||||
{ NULL, NULL },
|
||||
};
|
||||
for (size_t i = 0; paths[i].path; ++i) {
|
||||
error = unveil(paths[i].path, paths[i].mode);
|
||||
if (error) err(EX_CANTCREAT, "%s", paths[i].path);
|
||||
}
|
||||
error = unveil(fifoPath, "crw")
|
||||
|| unveil(configPath, "r")
|
||||
|| unveil("/", "r")
|
||||
|| unveil("/dev/null", "rw")
|
||||
|| unveil(serviceDir, "r")
|
||||
|| unveil(_PATH_BSHELL, "x")
|
||||
|| unveil(NULL, NULL);
|
||||
if (error) err(EX_OSERR, "unveil");
|
||||
|
||||
error = pledge(
|
||||
"stdio cpath dpath rpath wpath flock getpw proc exec id", NULL
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user