summaryrefslogtreecommitdiff
path: root/src/basic/capability-util.c
diff options
context:
space:
mode:
authorKevin Kuehler <keur@xcf.berkeley.edu>2020-03-27 15:57:02 -0700
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-03-29 21:11:25 +0200
commit7ea4392f1e444388caa706d6bd64fb7b30dc2903 (patch)
tree209e32be4842a8662a82db5f02ca8b99b5ee5cdf /src/basic/capability-util.c
parent3e118d135b99afed85b34476c66abf6d1a3d413a (diff)
downloadsystemd-7ea4392f1e444388caa706d6bd64fb7b30dc2903.tar.gz
basic: Fix capability_ambient_set_apply for kernels < 4.3
https://github.com/systemd/systemd/pull/14133 made capability_ambient_set_apply() acquire capabilities that were explicitly asked for and drop all others. This change means the function is called even with an empty capability set, opening up a code path for users without ambient capabilities to call this function. This function will error with EINVAL out on kernels < 4.3 because PR_CAP_AMBIENT is not understood. This turns capability_ambient_set_apply() into a noop for kernels < 4.3 Fixes https://github.com/systemd/systemd/issues/15225
Diffstat (limited to 'src/basic/capability-util.c')
-rw-r--r--src/basic/capability-util.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/basic/capability-util.c b/src/basic/capability-util.c
index 93237646cc..caffda62af 100644
--- a/src/basic/capability-util.c
+++ b/src/basic/capability-util.c
@@ -107,6 +107,10 @@ int capability_ambient_set_apply(uint64_t set, bool also_inherit) {
unsigned long i;
int r;
+ /* Check that we can use PR_CAP_AMBIENT or quit early. */
+ if (!ambient_capabilities_supported())
+ return 0;
+
/* Add the capabilities to the ambient set. */
if (also_inherit) {