From 10f444431eb643e4c69186fa1d5d1aad0c32a271 Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Tue, 29 Nov 2022 17:04:24 -0700 Subject: [PATCH 1/2] Add more capsicum functions for FreeBSD These have all been available since at least FreeBSD 9.2. --- src/unix/bsd/freebsdlike/freebsd/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs index 4064a3fe4eb1a..9847030f80b52 100644 --- a/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -4292,8 +4292,13 @@ extern "C" { pub fn cpuset_setid(which: cpuwhich_t, id: ::id_t, setid: ::cpusetid_t) -> ::c_int; pub fn cap_enter() -> ::c_int; pub fn cap_getmode(modep: *mut ::c_uint) -> ::c_int; + pub fn cap_fcntls_get(fd: ::c_int, fcntlrightsp: *mut u32) -> ::c_int; + pub fn cap_fcntls_limit(fd: ::c_int, fcntlrights: u32) -> ::c_int; + pub fn cap_ioctls_get(fd: ::c_int, cmds: *mut u_long, maxcmds: usize) -> isize; + pub fn cap_ioctls_limit(fd: ::c_int, cmds: *const u_long, ncmds: usize) -> ::c_int; pub fn __cap_rights_init(version: ::c_int, rights: *mut cap_rights_t, ...) -> *mut cap_rights_t; + pub fn __cap_rights_get(version: ::c_int, fd: ::c_int, rightsp: *mut cap_rights_t) -> ::c_int; pub fn __cap_rights_set(rights: *mut cap_rights_t, ...) -> *mut cap_rights_t; pub fn __cap_rights_clear(rights: *mut cap_rights_t, ...) -> *mut cap_rights_t; pub fn __cap_rights_is_set(rights: *const cap_rights_t, ...) -> bool; @@ -4303,6 +4308,7 @@ extern "C" { pub fn cap_rights_remove(dst: *mut cap_rights_t, src: *const cap_rights_t) -> *mut cap_rights_t; pub fn cap_rights_contains(big: *const cap_rights_t, little: *const cap_rights_t) -> bool; + pub fn cap_sandboxed() -> bool; pub fn reallocarray(ptr: *mut ::c_void, nmemb: ::size_t, size: ::size_t) -> *mut ::c_void; From afb665dbec82369d53916fe2e27ba4e3bcaad6c7 Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Tue, 29 Nov 2022 17:14:34 -0700 Subject: [PATCH 2/2] Add FreeBSD's capsicum functions to semver --- libc-test/semver/freebsd.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libc-test/semver/freebsd.txt b/libc-test/semver/freebsd.txt index 8f73e027afce0..e3a824a874619 100644 --- a/libc-test/semver/freebsd.txt +++ b/libc-test/semver/freebsd.txt @@ -1509,6 +1509,23 @@ bpf_program bpf_stat bpf_version bsearch +cap_enter +cap_getmode +cap_fcntls_get +cap_fcntls_limit +cap_ioctls_get +cap_ioctls_limit +__cap_rights_init +__cap_rights_get +__cap_rights_set +__cap_rights_clear +__cap_rights_is_set +cap_rights_is_valid +cap_rights_limit +cap_rights_merge +cap_rights_remove +cap_rights_contains +cap_sandboxed cfmakesane chflags chflagsat