aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/main.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-11-06 17:33:34 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-11-06 17:33:34 +0000
commit7ab4e1278a5b8ac4289c450b2bf85da2aad06ba4 (patch)
treeefe602222ebf45e9e6f716c8795ff1f52faa4163 /main.c
parent3fffa6c6072826f70aebe72863968bffb9d714cc (diff)
downloadmandoc-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.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/main.c b/main.c
index 1267bbfd..2475c085 100644
--- a/main.c
+++ b/main.c
@@ -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;
}