FreeBSD: Avoid caph_stream_rights(3)

caph_stream_rights(3) doesn't exist before FreeBSD 13.0 and there's
no good reason to create that dependency. I still run servers on
FreeBSD 12.

This is a partial revert of cbc9545cb3.
master
C. McEnroe 2021-07-13 17:58:14 +00:00
parent dfa9a6427f
commit 54d899196c
3 changed files with 8 additions and 6 deletions

5
chat.c
View File

@ -324,10 +324,11 @@ int main(int argc, char *argv[]) {
#ifdef __FreeBSD__ #ifdef __FreeBSD__
cap_rights_t rights; cap_rights_t rights;
caph_stream_rights(&rights, CAPH_WRITE);
int error = 0 int error = 0
|| caph_limit_stdin() || caph_limit_stdin()
|| caph_rights_limit(STDOUT_FILENO, cap_rights_set(&rights, CAP_IOCTL)) || caph_rights_limit(
STDOUT_FILENO, cap_rights_init(&rights, CAP_WRITE, CAP_IOCTL)
)
|| caph_limit_stderr() || caph_limit_stderr()
|| caph_rights_limit( || caph_rights_limit(
irc, cap_rights_init(&rights, CAP_SEND, CAP_RECV, CAP_EVENT) irc, cap_rights_init(&rights, CAP_SEND, CAP_RECV, CAP_EVENT)

6
log.c
View File

@ -54,8 +54,10 @@ void logOpen(void) {
#ifdef __FreeBSD__ #ifdef __FreeBSD__
cap_rights_t rights; cap_rights_t rights;
caph_stream_rights(&rights, CAPH_WRITE); cap_rights_init(
cap_rights_set(&rights, CAP_MKDIRAT, CAP_CREATE); &rights, CAP_MKDIRAT, CAP_CREATE, CAP_WRITE,
/* for fdopen(3) */ CAP_FCNTL, CAP_FSTAT
);
int error = caph_rights_limit(logDir, &rights); int error = caph_rights_limit(logDir, &rights);
if (error) err(EX_OSERR, "cap_rights_limit"); if (error) err(EX_OSERR, "cap_rights_limit");
#endif #endif

3
ui.c
View File

@ -1192,8 +1192,7 @@ void uiLoad(const char *name) {
#ifdef __FreeBSD__ #ifdef __FreeBSD__
cap_rights_t rights; cap_rights_t rights;
caph_stream_rights(&rights, CAPH_READ | CAPH_WRITE); cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_FLOCK, CAP_FTRUNCATE);
cap_rights_set(&rights, CAP_FLOCK, CAP_FTRUNCATE);
error = caph_rights_limit(fileno(saveFile), &rights); error = caph_rights_limit(fileno(saveFile), &rights);
if (error) err(EX_OSERR, "cap_rights_limit"); if (error) err(EX_OSERR, "cap_rights_limit");
#endif #endif