summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-07-01 02:47:11 +0200
committerLennart Poettering <lennart@poettering.net>2013-07-01 02:47:11 +0200
commitadb3a45d9a1cebdec30406cc2c04503fc5e735be (patch)
tree8f3111b078175b6a7281f2533b4974a0cbcaad58
parentd7550a6752be85f98408a86b7ae23a033e9b2983 (diff)
downloadsystemd-adb3a45d9a1cebdec30406cc2c04503fc5e735be.tar.gz
scope: properly implement passive validity checking of PIDs field when creating transient scopes
-rw-r--r--src/core/dbus-scope.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
index 30b9c00335..bddf8f4753 100644
--- a/src/core/dbus-scope.c
+++ b/src/core/dbus-scope.c
@@ -93,6 +93,7 @@ static int bus_scope_set_transient_property(
if (streq(name, "PIDs")) {
DBusMessageIter sub;
+ unsigned n;
if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_ARRAY ||
dbus_message_iter_get_element_type(i) != DBUS_TYPE_UINT32)
@@ -111,14 +112,17 @@ static int bus_scope_set_transient_property(
if (pid <= 1)
return -EINVAL;
- r = set_put(s->pids, LONG_TO_PTR(pid));
- if (r < 0 && r != -EEXIST)
- return r;
+ if (mode != UNIT_CHECK) {
+ r = set_put(s->pids, LONG_TO_PTR(pid));
+ if (r < 0 && r != -EEXIST)
+ return r;
+ }
dbus_message_iter_next(&sub);
+ n++;
}
- if (set_size(s->pids) <= 0)
+ if (n <= 0)
return -EINVAL;
return 1;