Home
add OpenBSD unveil support - stagit-gopher - A git gopher frontend. (mirror) HTML git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 2d17ff69d90329bbbfadbf258f4a22f26358943b DIR parent 44e1ef57a375794bea37555ac1bc417d37156caf HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 22 Dec 2019 12:52:49 +0100 add OpenBSD unveil support The unveil() system call first appeared in OpenBSD 6.4. For stagit-gopher it has the following properties now: - stagit-gopher-index: only read-access to the file-system for the specified directories/repositories. - stagit-gopher: read-access to the specified directory/repository. read-write and creation access to the current directory for the output files. read-write and creation access to the specified cache file Diffstat: M stagit-gopher-index.c | 4 ++++ M stagit-gopher.c | 7 +++++++ 2 files changed, 11 insertions(+), 0 deletions(-) --- DIR diff --git a/stagit-gopher-index.c b/stagit-gopher-index.c @@ -219,6 +219,10 @@ main(int argc, char *argv[]) git_libgit2_init(); #ifdef __OpenBSD__ + for (i = 1; i < argc; i++) + if (unveil(argv[i], "r") == -1) + err(1, "unveil: %s", argv[i]); + if (pledge("stdio rpath", NULL) == -1) err(1, "pledge"); #endif DIR diff --git a/stagit-gopher.c b/stagit-gopher.c @@ -1177,6 +1177,13 @@ main(int argc, char *argv[]) git_libgit2_init(); #ifdef __OpenBSD__ + if (unveil(repodir, "r") == -1) + err(1, "unveil: %s", repodir); + if (unveil(".", "rwc") == -1) + err(1, "unveil: ."); + if (cachefile && unveil(cachefile, "rwc") == -1) + err(1, "unveil: %s", cachefile); + if (cachefile) { if (pledge("stdio rpath wpath cpath fattr", NULL) == -1) err(1, "pledge");