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:
parent
305f2d59d8
commit
591d95c79e
13
Xext/xace.c
13
Xext/xace.c
|
@ -129,13 +129,19 @@ int XaceHookScreensaverAccess(ClientPtr client, ScreenPtr screen, Mask access_mo
|
||||||
return rec.status;
|
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.
|
/* Entry point for hook functions. Called by Xserver.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
XaceHook(int hook, ...)
|
XaceHook(int hook, ...)
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
XaceAuthAvailRec auth;
|
|
||||||
XaceKeyAvailRec key;
|
XaceKeyAvailRec key;
|
||||||
} u;
|
} u;
|
||||||
int *prv = NULL; /* points to return value from callback */
|
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)
|
* sets calldata directly to a single argument (with no return result)
|
||||||
*/
|
*/
|
||||||
switch (hook) {
|
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:
|
case XACE_KEY_AVAIL:
|
||||||
u.key.event = va_arg(ap, xEventPtr);
|
u.key.event = va_arg(ap, xEventPtr);
|
||||||
u.key.keybd = va_arg(ap, DeviceIntPtr);
|
u.key.keybd = va_arg(ap, DeviceIntPtr);
|
||||||
|
|
|
@ -93,6 +93,7 @@ int XaceHookExtAccess(ClientPtr client, ExtensionEntry *ext);
|
||||||
int XaceHookServerAccess(ClientPtr client, Mask access_mode);
|
int XaceHookServerAccess(ClientPtr client, Mask access_mode);
|
||||||
int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode);
|
int XaceHookScreenAccess(ClientPtr client, ScreenPtr screen, Mask access_mode);
|
||||||
int XaceHookScreensaverAccess(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.
|
/* Register a callback for a given hook.
|
||||||
|
|
|
@ -579,7 +579,7 @@ ClientAuthorized(ClientPtr client,
|
||||||
XdmcpOpenDisplay(priv->fd);
|
XdmcpOpenDisplay(priv->fd);
|
||||||
#endif /* XDMCP */
|
#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
|
/* At this point, if the client is authorized to change the access control
|
||||||
* list, we should getpeername() information, and add the client to
|
* list, we should getpeername() information, and add the client to
|
||||||
|
|
Loading…
Reference in New Issue