chiark / gitweb /
scope: properly implement passive validity checking of PIDs field when creating trans...
authorLennart Poettering <lennart@poettering.net>
Mon, 1 Jul 2013 00:47:11 +0000 (02:47 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 1 Jul 2013 00:47:11 +0000 (02:47 +0200)
src/core/dbus-scope.c

index 30b9c00335bb740ed1f29a7102008473c110ab99..bddf8f4753ca57332f572922a21a6d7d6462075c 100644 (file)
@@ -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;