summaryrefslogtreecommitdiff
path: root/src/core/dbus-cgroup.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-02-24 02:59:57 +0100
committerLennart Poettering <lennart@poettering.net>2014-02-24 03:38:58 +0100
commit9c96019d3183ef93e243416f4c17334ee9108b47 (patch)
treea1e0c2607920a7e99e23cce641250d4620f113a7 /src/core/dbus-cgroup.c
parent55dab2ed837c17236b7df12decaffbc4388d1dff (diff)
cgroup: parse array cgroup properties correctly when they aren't at the end of the message
Diffstat (limited to 'src/core/dbus-cgroup.c')
-rw-r--r--src/core/dbus-cgroup.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
index b8a77254d..775825bee 100644
--- a/src/core/dbus-cgroup.c
+++ b/src/core/dbus-cgroup.c
@@ -278,6 +278,10 @@ int bus_cgroup_set_property(
if (r < 0)
return r;
+ r = sd_bus_message_exit_container(message);
+ if (r < 0)
+ return r;
+
if (mode != UNIT_CHECK) {
CGroupBlockIODeviceBandwidth *a, *next;
_cleanup_free_ char *buf = NULL;
@@ -356,6 +360,10 @@ int bus_cgroup_set_property(
n++;
}
+ r = sd_bus_message_exit_container(message);
+ if (r < 0)
+ return r;
+
if (mode != UNIT_CHECK) {
_cleanup_free_ char *buf = NULL;
_cleanup_fclose_ FILE *f = NULL;
@@ -481,7 +489,6 @@ int bus_cgroup_set_property(
a->r = !!strchr(rwm, 'r');
a->w = !!strchr(rwm, 'w');
a->m = !!strchr(rwm, 'm');
-
}
n++;
@@ -489,6 +496,10 @@ int bus_cgroup_set_property(
if (r < 0)
return r;
+ r = sd_bus_message_exit_container(message);
+ if (r < 0)
+ return r;
+
if (mode != UNIT_CHECK) {
_cleanup_free_ char *buf = NULL;
_cleanup_fclose_ FILE *f = NULL;