]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic: Fix capability_ambient_set_apply for kernels < 4.3
authorKevin Kuehler <keur@xcf.berkeley.edu>
Fri, 27 Mar 2020 22:57:02 +0000 (15:57 -0700)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 29 Mar 2020 19:11:25 +0000 (21:11 +0200)
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

src/basic/capability-util.c

index 93237646cc919b4e6d038c4d52ff16fc31b5e5ea..caffda62af870b5d3e627b83a83e950b25dd1d34 100644 (file)
@@ -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) {