core: do not allow Delegate= on unsupported unit types
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 18 Apr 2018 18:06:56 +0000 (20:06 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 18 Apr 2018 18:07:00 +0000 (20:07 +0200)
src/core/load-fragment.c

index 403c0af..61e752a 100644 (file)
@@ -3404,8 +3404,17 @@ int config_parse_delegate(
                 void *userdata) {
 
         CGroupContext *c = data;
+        UnitType t;
         int r;
 
+        t = unit_name_to_type(unit);
+        assert(t != _UNIT_TYPE_INVALID);
+
+        if (!unit_vtable[t]->can_delegate) {
+                log_syntax(unit, LOG_ERR, filename, line, 0, "Delegate= setting not supported for this unit type, ignoring.");
+                return 0;
+        }
+
         /* We either accept a boolean value, which may be used to turn on delegation for all controllers, or turn it
          * off for all. Or it takes a list of controller names, in which case we add the specified controllers to the
          * mask to delegate. */