login: fix two io.systemd.Login Varlink IDL issues (#40857)
Add missing NoSessionPIDFD error to the interface definition; the error is emitted by vl_method_create_session() when the session leader process does not have a pidfd available, but was never declared in the IDL. Drop SD_JSON_MANDATORY from the ReleaseSession.Id dispatch entry so that omitting the field (which the IDL allows via SD_VARLINK_NULLABLE) resolves to the caller's own session via session_is_self(NULL).
This commit is contained in:
@@ -308,7 +308,7 @@ static int vl_method_release_session(sd_varlink *link, sd_json_variant *paramete
|
||||
} p;
|
||||
|
||||
static const sd_json_dispatch_field dispatch_table[] = {
|
||||
{ "Id", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, voffsetof(p, id), SD_JSON_MANDATORY },
|
||||
{ "Id", SD_JSON_VARIANT_STRING, sd_json_dispatch_const_string, voffsetof(p, id), 0 },
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ static SD_VARLINK_DEFINE_ERROR(AlreadySessionMember);
|
||||
static SD_VARLINK_DEFINE_ERROR(VirtualTerminalAlreadyTaken);
|
||||
static SD_VARLINK_DEFINE_ERROR(TooManySessions);
|
||||
static SD_VARLINK_DEFINE_ERROR(UnitAllocationFailed);
|
||||
static SD_VARLINK_DEFINE_ERROR(NoSessionPIDFD);
|
||||
|
||||
SD_VARLINK_DEFINE_INTERFACE(
|
||||
io_systemd_Login,
|
||||
@@ -120,4 +121,6 @@ SD_VARLINK_DEFINE_INTERFACE(
|
||||
SD_VARLINK_SYMBOL_COMMENT("Maximum number of sessions reached"),
|
||||
&vl_error_TooManySessions,
|
||||
SD_VARLINK_SYMBOL_COMMENT("Failed to allocate a unit for the session"),
|
||||
&vl_error_UnitAllocationFailed);
|
||||
&vl_error_UnitAllocationFailed,
|
||||
SD_VARLINK_SYMBOL_COMMENT("The session leader process does not have a pidfd"),
|
||||
&vl_error_NoSessionPIDFD);
|
||||
|
||||
Reference in New Issue
Block a user