Blame SOURCES/0430-core-fix-CapabilityBoundingSet-merging.patch

17b0f1
From 5c7d92d36bd1b608ccba0adc3fdc5446e6575623 Mon Sep 17 00:00:00 2001
17b0f1
From: Evgeny Vereshchagin <evvers@ya.ru>
17b0f1
Date: Tue, 27 Oct 2015 14:40:28 +0300
17b0f1
Subject: [PATCH] core: fix CapabilityBoundingSet merging
17b0f1
17b0f1
Fixes: #1221
17b0f1
17b0f1
Cherry-picked from: b9d345b
17b0f1
Resolves: #1409586
17b0f1
---
17b0f1
 src/core/load-fragment.c | 8 +++++---
17b0f1
 1 file changed, 5 insertions(+), 3 deletions(-)
17b0f1
17b0f1
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
17b0f1
index 4fecb83142..90d42b002f 100644
17b0f1
--- a/src/core/load-fragment.c
17b0f1
+++ b/src/core/load-fragment.c
17b0f1
@@ -1027,6 +1027,7 @@ int config_parse_bounding_set(const char *unit,
17b0f1
                               void *userdata) {
17b0f1
 
17b0f1
         uint64_t *capability_bounding_set_drop = data;
17b0f1
+        uint64_t capability_bounding_set;
17b0f1
         const char *word, *state;
17b0f1
         size_t l;
17b0f1
         bool invert = false;
17b0f1
@@ -1067,10 +1068,11 @@ int config_parse_bounding_set(const char *unit,
17b0f1
                 log_syntax(unit, LOG_ERR, filename, line, EINVAL,
17b0f1
                            "Trailing garbage, ignoring.");
17b0f1
 
17b0f1
-        if (invert)
17b0f1
-                *capability_bounding_set_drop |= sum;
17b0f1
+        capability_bounding_set = invert ? ~sum : sum;
17b0f1
+        if (*capability_bounding_set_drop)
17b0f1
+                *capability_bounding_set_drop = ~(~*capability_bounding_set_drop | capability_bounding_set);
17b0f1
         else
17b0f1
-                *capability_bounding_set_drop |= ~sum;
17b0f1
+                *capability_bounding_set_drop = ~capability_bounding_set;
17b0f1
 
17b0f1
         return 0;
17b0f1
 }