diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-07-01 02:47:11 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-07-01 02:47:11 +0200 |
commit | adb3a45d9a1cebdec30406cc2c04503fc5e735be (patch) | |
tree | 8f3111b078175b6a7281f2533b4974a0cbcaad58 | |
parent | d7550a6752be85f98408a86b7ae23a033e9b2983 (diff) | |
download | systemd-adb3a45d9a1cebdec30406cc2c04503fc5e735be.tar.gz |
scope: properly implement passive validity checking of PIDs field when creating transient scopes
-rw-r--r-- | src/core/dbus-scope.c | 12 |
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; |