Pledge on OpenBSD - st - simple terminal (HTM) git clone https://git.parazyd.org/st (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 30ce2cc002585409b36c630512c6ca4db8f88f15 (DIR) parent 041912a791e8c2f4d5d2415b16210d29d7e701c5 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 25 May 2018 11:59:28 +0200 Pledge on OpenBSD Diffstat: M config.mk | 6 ++++++ M st.c | 8 ++++++++ 2 files changed, 14 insertions(+), 0 deletions(-) --- (DIR) diff --git a/config.mk b/config.mk @@ -23,6 +23,12 @@ CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 STCFLAGS = $(INCS) $(CPPFLAGS) $(CFLAGS) STLDFLAGS = $(LIBS) $(LDFLAGS) +# OpenBSD: +#CPPFLAGS = -DVERSION=\"$(VERSION)\" -D_XOPEN_SOURCE=600 -D_BSD_SOURCE +#LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \ +# `pkg-config --libs fontconfig` \ +# `pkg-config --libs freetype2` + # compiler and linker # CC = c99 (DIR) diff --git a/st.c b/st.c @@ -28,6 +28,10 @@ #include <libutil.h> #endif +#ifndef __OpenBSD__ +#define pledge(a,b) 0 +#endif + /* Arbitrary sizes */ #define UTF_INVALID 0xFFFD #define UTF_SIZ 4 @@ -806,9 +810,13 @@ ttynew(char *line, char *cmd, char *out, char **args) die("ioctl TIOCSCTTY failed: %s\n", strerror(errno)); close(s); close(m); + if (pledge("stdio getpw proc exec", NULL) == -1) + die("pledge\n"); execsh(cmd, args); break; default: + if (pledge("stdio rpath tty proc", NULL) == -1) + die("pledge\n"); close(s); cmdfd = m; signal(SIGCHLD, sigchld);