xace: typesafe hook function for XACE_AUTH_AVAIL

he generic XaceHook() call isn't typesafe (und unnecessarily slow).
Better add an explicit function, just like we already have for others.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1556>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-05-17 15:41:45 +02:00 committed by Marge Bot
parent 305f2d59d8
commit 591d95c79e
3 changed files with 9 additions and 7 deletions

View File

@ -129,13 +129,19 @@ int XaceHookScreensaverAccess(ClientPtr client, ScreenPtr screen, Mask access_mo
return rec.status;
}
int XaceHookAuthAvail(ClientPtr client, XID authId)
{
XaceAuthAvailRec rec = { client, authId };
CallCallbacks(&XaceHooks[XACE_AUTH_AVAIL], &rec);
return Success;
}
/* Entry point for hook functions. Called by Xserver.
*/
int
XaceHook(int hook, ...)
{
union {
XaceAuthAvailRec auth;
XaceKeyAvailRec key;
} u;
int *prv = NULL; /* points to return value from callback */
@ -152,11 +158,6 @@ XaceHook(int hook, ...)
* sets calldata directly to a single argument (with no return result)
*/
switch (hook) {
case XACE_AUTH_AVAIL:
u.auth.client = va_arg(ap, ClientPtr);
u.auth.authId = va_arg(ap, XID);
break;
case XACE_KEY_AVAIL:
u.key.event = va_arg(ap, xEventPtr);
u.key.keybd = va_arg(ap, DeviceIntPtr);

View File

@ -93,6 +93,7 @@ int XaceHookExtAccess(ClientPtr client, ExtensionEntry *ext);
int XaceHookServerAccess(ClientPtr client, Mask access_mode);
int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode);
int XaceHookScreensaverAccess(ClientPtr client, ScreenPtr screen, Mask access_mode);
int XaceHookAuthAvail(ClientPtr client, XID authId);
/* Register a callback for a given hook.

View File

@ -579,7 +579,7 @@ ClientAuthorized(ClientPtr client,
XdmcpOpenDisplay(priv->fd);
#endif /* XDMCP */
XaceHook(XACE_AUTH_AVAIL, client, auth_id);
XaceHookAuthAvail(client, auth_id);
/* At this point, if the client is authorized to change the access control
* list, we should getpeername() information, and add the client to