diff options
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -28,6 +28,10 @@ | |||
28 | #include <libutil.h> | 28 | #include <libutil.h> |
29 | #endif | 29 | #endif |
30 | 30 | ||
31 | #ifndef __OpenBSD__ | ||
32 | #define pledge(a,b) 0 | ||
33 | #endif | ||
34 | |||
31 | /* Arbitrary sizes */ | 35 | /* Arbitrary sizes */ |
32 | #define UTF_INVALID 0xFFFD | 36 | #define UTF_INVALID 0xFFFD |
33 | #define UTF_SIZ 4 | 37 | #define UTF_SIZ 4 |
@@ -806,9 +810,13 @@ ttynew(char *line, char *cmd, char *out, char **args) | |||
806 | die("ioctl TIOCSCTTY failed: %s\n", strerror(errno)); | 810 | die("ioctl TIOCSCTTY failed: %s\n", strerror(errno)); |
807 | close(s); | 811 | close(s); |
808 | close(m); | 812 | close(m); |
813 | if (pledge("stdio getpw proc exec", NULL) == -1) | ||
814 | die("pledge\n"); | ||
809 | execsh(cmd, args); | 815 | execsh(cmd, args); |
810 | break; | 816 | break; |
811 | default: | 817 | default: |
818 | if (pledge("stdio rpath tty proc", NULL) == -1) | ||
819 | die("pledge\n"); | ||
812 | close(s); | 820 | close(s); |
813 | cmdfd = m; | 821 | cmdfd = m; |
814 | signal(SIGCHLD, sigchld); | 822 | signal(SIGCHLD, sigchld); |