Add four new XACE hooks: auditing, key event notification, window init
This commit is contained in:
parent
52ba722e4c
commit
13c6713c82
33
Xext/xace.c
33
Xext/xace.c
|
@ -169,6 +169,39 @@ int XaceHook(int hook, ...)
|
|||
calldata = &rec;
|
||||
break;
|
||||
}
|
||||
case XACE_KEY_AVAIL: {
|
||||
XaceKeyAvailRec rec = {
|
||||
va_arg(ap, xEventPtr),
|
||||
va_arg(ap, DeviceIntPtr),
|
||||
va_arg(ap, int)
|
||||
};
|
||||
calldata = &rec;
|
||||
break;
|
||||
}
|
||||
case XACE_WINDOW_INIT: {
|
||||
XaceWindowRec rec = {
|
||||
va_arg(ap, ClientPtr),
|
||||
va_arg(ap, WindowPtr)
|
||||
};
|
||||
calldata = &rec;
|
||||
break;
|
||||
}
|
||||
case XACE_AUDIT_BEGIN: {
|
||||
XaceAuditRec rec = {
|
||||
va_arg(ap, ClientPtr),
|
||||
0
|
||||
};
|
||||
calldata = &rec;
|
||||
break;
|
||||
}
|
||||
case XACE_AUDIT_END: {
|
||||
XaceAuditRec rec = {
|
||||
va_arg(ap, ClientPtr),
|
||||
va_arg(ap, int)
|
||||
};
|
||||
calldata = &rec;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
va_end(ap);
|
||||
return 0; /* unimplemented hook number */
|
||||
|
|
|
@ -46,7 +46,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define XACE_SITE_POLICY 10
|
||||
#define XACE_DECLARE_EXT_SECURE 11
|
||||
#define XACE_AUTH_AVAIL 12
|
||||
#define XACE_NUM_HOOKS 13
|
||||
#define XACE_KEY_AVAIL 13
|
||||
#define XACE_WINDOW_INIT 14
|
||||
#define XACE_AUDIT_BEGIN 15
|
||||
#define XACE_AUDIT_END 16
|
||||
#define XACE_NUM_HOOKS 17
|
||||
|
||||
extern CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
|
||||
|
||||
|
|
|
@ -112,4 +112,24 @@ typedef struct {
|
|||
XID authId;
|
||||
} XaceAuthAvailRec;
|
||||
|
||||
/* XACE_KEY_AVAIL */
|
||||
typedef struct {
|
||||
xEventPtr event;
|
||||
DeviceIntPtr keybd;
|
||||
int count;
|
||||
} XaceKeyAvailRec;
|
||||
|
||||
/* XACE_WINDOW_INIT */
|
||||
typedef struct {
|
||||
ClientPtr client;
|
||||
WindowPtr pWin;
|
||||
} XaceWindowRec;
|
||||
|
||||
/* XACE_AUDIT_BEGIN */
|
||||
/* XACE_AUDIT_END */
|
||||
typedef struct {
|
||||
ClientPtr client;
|
||||
int requestResult;
|
||||
} XaceAuditRec;
|
||||
|
||||
#endif /* _XACESTR_H */
|
||||
|
|
|
@ -451,7 +451,15 @@ Dispatch(void)
|
|||
if (result > (maxBigRequestSize << 2))
|
||||
result = BadLength;
|
||||
else
|
||||
#ifdef XACE
|
||||
{
|
||||
XaceHook(XACE_AUDIT_BEGIN, client);
|
||||
result = (* client->requestVector[MAJOROP])(client);
|
||||
XaceHook(XACE_AUDIT_END, client, result);
|
||||
}
|
||||
#else
|
||||
result = (* client->requestVector[MAJOROP])(client);
|
||||
#endif /* XACE */
|
||||
|
||||
if (result != Success)
|
||||
{
|
||||
|
|
|
@ -2846,6 +2846,10 @@ drawable.id:0;
|
|||
DeliverFocusedEvent(keybd, xE, sprite.win, count);
|
||||
if (deactivateGrab)
|
||||
(*keybd->DeactivateGrab)(keybd);
|
||||
|
||||
#ifdef XACE
|
||||
XaceHook(XACE_KEY_AVAIL, xE, keybd, count);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef XKB
|
||||
|
|
|
@ -530,6 +530,10 @@ InitRootWindow(WindowPtr pWin)
|
|||
/* We SHOULD check for an error value here XXX */
|
||||
(*pScreen->ChangeWindowAttributes)(pWin, backFlag);
|
||||
|
||||
#ifdef XACE
|
||||
XaceHook(XACE_WINDOW_INIT, serverClient, pWin);
|
||||
#endif
|
||||
|
||||
MapWindow(pWin, serverClient);
|
||||
}
|
||||
|
||||
|
@ -762,6 +766,10 @@ CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w,
|
|||
REGION_NULL(pScreen, &pWin->winSize);
|
||||
REGION_NULL(pScreen, &pWin->borderSize);
|
||||
|
||||
#ifdef XACE
|
||||
XaceHook(XACE_WINDOW_INIT, client, pWin);
|
||||
#endif
|
||||
|
||||
pHead = RealChildHead(pParent);
|
||||
if (pHead)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue