diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-11-06 17:33:34 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-11-06 17:33:34 +0000 |
commit | 7ab4e1278a5b8ac4289c450b2bf85da2aad06ba4 (patch) | |
tree | efe602222ebf45e9e6f716c8795ff1f52faa4163 /main.c | |
parent | 3fffa6c6072826f70aebe72863968bffb9d714cc (diff) | |
download | mandoc-7ab4e1278a5b8ac4289c450b2bf85da2aad06ba4.tar.gz mandoc-7ab4e1278a5b8ac4289c450b2bf85da2aad06ba4.tar.zst mandoc-7ab4e1278a5b8ac4289c450b2bf85da2aad06ba4.zip |
merge pledge(2) support from OpenBSD
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.254 2015/11/06 16:30:33 schwarze Exp $ */ +/* $Id: main.c,v 1.255 2015/11/06 17:33:34 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> @@ -149,6 +149,11 @@ main(int argc, char *argv[]) return mandocdb(argc, argv); #endif +#if HAVE_PLEDGE + if (pledge("stdio rpath tmppath proc exec flock", NULL) == -1) + err((int)MANDOCLEVEL_SYSERR, "pledge"); +#endif + /* Search options. */ memset(&conf, 0, sizeof(conf)); @@ -288,6 +293,11 @@ main(int argc, char *argv[]) !isatty(STDOUT_FILENO)) use_pager = 0; +#if HAVE_PLEDGE + if (!use_pager && pledge("stdio rpath flock", NULL) == -1) + err((int)MANDOCLEVEL_SYSERR, "pledge"); +#endif + /* Parse arguments. */ if (argc > 0) { @@ -414,6 +424,12 @@ main(int argc, char *argv[]) /* mandoc(1) */ +#if HAVE_PLEDGE + if (pledge(use_pager ? "stdio rpath tmppath proc exec" : + "stdio rpath", NULL) == -1) + err((int)MANDOCLEVEL_SYSERR, "pledge"); +#endif + if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths)) return (int)MANDOCLEVEL_BADARG; @@ -1004,6 +1020,10 @@ spawn_pager(struct tag_files *tag_files) case 0: break; default: +#if HAVE_PLEDGE + if (pledge("stdio rpath tmppath", NULL) == -1) + err((int)MANDOCLEVEL_SYSERR, "pledge"); +#endif return pager_pid; } |