X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fdbus-unit.c;h=266fb39be20e1e8ca0babc3f0b4cc941a4e9744b;hb=189583d7e4e0a74e96df12f00013eef8543ac96f;hp=ad8e9a1aef2090c472f05c423c373d9fa6d81a57;hpb=bfebab7f69cb23f3a488f02bc2be9c8309808221;p=elogind.git diff --git a/src/dbus-unit.c b/src/dbus-unit.c index ad8e9a1ae..266fb39be 100644 --- a/src/dbus-unit.c +++ b/src/dbus-unit.c @@ -372,10 +372,23 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn DBUS_TYPE_INVALID)) return bus_send_error_reply(connection, message, &error, -EINVAL); - if ((mode = kill_mode_from_string(smode)) < 0 || - (who = kill_who_from_string(swho)) < 0 || - signo <= 0 || - signo >= _NSIG) + if (isempty(swho)) + who = KILL_ALL; + else { + who = kill_who_from_string(swho); + if (who < 0) + return bus_send_error_reply(connection, message, &error, -EINVAL); + } + + if (isempty(smode)) + mode = KILL_CONTROL_GROUP; + else { + mode = kill_mode_from_string(smode); + if (mode < 0) + return bus_send_error_reply(connection, message, &error, -EINVAL); + } + + if (signo <= 0 || signo >= _NSIG) return bus_send_error_reply(connection, message, &error, -EINVAL); if ((r = unit_kill(u, who, mode, signo, &error)) < 0)