]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/dbus-manager: only allow Freeze/ThawUnit() if loaded
authorMike Yuan <me@yhndnzj.com>
Thu, 30 May 2024 12:44:58 +0000 (20:44 +0800)
committerMike Yuan <me@yhndnzj.com>
Thu, 30 May 2024 13:51:47 +0000 (21:51 +0800)
src/core/dbus-manager.c

index 2aa433612150d1ef150736bf148367ddde838b69..2515f54adac370e0d1a54c3cf0fdcb82f9c0e2b2 100644 (file)
@@ -834,11 +834,13 @@ static int method_clean_unit(sd_bus_message *message, void *userdata, sd_bus_err
 }
 
 static int method_freeze_unit(sd_bus_message *message, void *userdata, sd_bus_error *error) {
-        return method_generic_unit_operation(message, userdata, error, bus_unit_method_freeze, 0);
+        /* Only active units can be frozen, which must be properly loaded already */
+        return method_generic_unit_operation(message, userdata, error, bus_unit_method_freeze, GENERIC_UNIT_VALIDATE_LOADED);
 }
 
 static int method_thaw_unit(sd_bus_message *message, void *userdata, sd_bus_error *error) {
-        return method_generic_unit_operation(message, userdata, error, bus_unit_method_thaw, 0);
+        /* Same as freeze above */
+        return method_generic_unit_operation(message, userdata, error, bus_unit_method_thaw, GENERIC_UNIT_VALIDATE_LOADED);
 }
 
 static int method_reset_failed_unit(sd_bus_message *message, void *userdata, sd_bus_error *error) {