capability-util: generalize helper to acquire local caps

This generalizes and modernizes the code to acquire set of local caps,
based on the code for this in the condition logic. Uses PidRef, and
acquires the full quintuplet of caps.

This can be considered preparation to one day maybe build without
libcap.
This commit is contained in:
Lennart Poettering
2024-12-17 19:06:54 +01:00
parent 8d08f18b52
commit 1184626a26
4 changed files with 104 additions and 30 deletions
+14
View File
@@ -305,6 +305,18 @@ static void test_capability_get_ambient(void) {
}
}
static void test_pidref_get_capability(void) {
CapabilityQuintet q = CAPABILITY_QUINTET_NULL;
assert_se(pidref_get_capability(&PIDREF_MAKE_FROM_PID(getpid_cached()), &q) >= 0);
assert_se(q.effective != CAP_MASK_UNSET);
assert_se(q.inheritable != CAP_MASK_UNSET);
assert_se(q.permitted != CAP_MASK_UNSET);
assert_se(q.effective != CAP_MASK_UNSET);
assert_se(q.ambient != CAP_MASK_UNSET);
}
int main(int argc, char *argv[]) {
bool run_ambient;
@@ -336,5 +348,7 @@ int main(int argc, char *argv[]) {
test_capability_get_ambient();
test_pidref_get_capability();
return 0;
}