mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-15 02:10:35 +01:00
xace: typesafe hook function for XACE_EXT_ACCESS
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>
(cherry picked from commit 0f6bb23bc2)
This commit is contained in:
parent
9ca09ba08e
commit
65c3afbb61
3 changed files with 10 additions and 10 deletions
16
Xext/xace.c
16
Xext/xace.c
|
|
@ -102,13 +102,19 @@ int XaceHookClientAccess(ClientPtr client, ClientPtr target, Mask access_mode)
|
|||
return rec.status;
|
||||
}
|
||||
|
||||
int XaceHookExtAccess(ClientPtr client, ExtensionEntry *ext)
|
||||
{
|
||||
XaceExtAccessRec rec = { client, ext, DixGetAttrAccess, Success };
|
||||
CallCallbacks(&XaceHooks[XACE_EXT_ACCESS], &rec);
|
||||
return rec.status;
|
||||
}
|
||||
|
||||
/* Entry point for hook functions. Called by Xserver.
|
||||
*/
|
||||
int
|
||||
XaceHook(int hook, ...)
|
||||
{
|
||||
union {
|
||||
XaceExtAccessRec ext;
|
||||
XaceServerAccessRec server;
|
||||
XaceScreenAccessRec screen;
|
||||
XaceAuthAvailRec auth;
|
||||
|
|
@ -128,14 +134,6 @@ XaceHook(int hook, ...)
|
|||
* sets calldata directly to a single argument (with no return result)
|
||||
*/
|
||||
switch (hook) {
|
||||
case XACE_EXT_ACCESS:
|
||||
u.ext.client = va_arg(ap, ClientPtr);
|
||||
|
||||
u.ext.ext = va_arg(ap, ExtensionEntry *);
|
||||
u.ext.access_mode = DixGetAttrAccess;
|
||||
u.ext.status = Success; /* default allow */
|
||||
prv = &u.ext.status;
|
||||
break;
|
||||
case XACE_SERVER_ACCESS:
|
||||
u.server.client = va_arg(ap, ClientPtr);
|
||||
u.server.access_mode = va_arg(ap, Mask);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define XACE_MAJOR_VERSION 2
|
||||
#define XACE_MINOR_VERSION 0
|
||||
|
||||
#include "extnsionst.h"
|
||||
#include "pixmap.h"
|
||||
#include "region.h"
|
||||
#include "window.h"
|
||||
|
|
@ -90,6 +91,7 @@ int XaceHookSendAccess(ClientPtr client, DeviceIntPtr dev, WindowPtr win,
|
|||
xEventPtr ev, int count);
|
||||
int XaceHookReceiveAccess(ClientPtr client, WindowPtr win, xEventPtr ev, int count);
|
||||
int XaceHookClientAccess(ClientPtr client, ClientPtr target, Mask access_mode);
|
||||
int XaceHookExtAccess(ClientPtr client, ExtensionEntry *ext);
|
||||
|
||||
|
||||
/* Register a callback for a given hook.
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ CloseDownExtensions(void)
|
|||
static Bool
|
||||
ExtensionAvailable(ClientPtr client, ExtensionEntry *ext)
|
||||
{
|
||||
if (XaceHook(XACE_EXT_ACCESS, client, ext) != Success)
|
||||
if (XaceHookExtAccess(client, ext) != Success)
|
||||
return FALSE;
|
||||
if (!ext->base)
|
||||
return FALSE;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue