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;
|
calldata = &rec;
|
||||||
break;
|
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: {
|
default: {
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return 0; /* unimplemented hook number */
|
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_SITE_POLICY 10
|
||||||
#define XACE_DECLARE_EXT_SECURE 11
|
#define XACE_DECLARE_EXT_SECURE 11
|
||||||
#define XACE_AUTH_AVAIL 12
|
#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];
|
extern CallbackListPtr XaceHooks[XACE_NUM_HOOKS];
|
||||||
|
|
||||||
|
|
|
@ -112,4 +112,24 @@ typedef struct {
|
||||||
XID authId;
|
XID authId;
|
||||||
} XaceAuthAvailRec;
|
} 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 */
|
#endif /* _XACESTR_H */
|
||||||
|
|
|
@ -451,7 +451,15 @@ Dispatch(void)
|
||||||
if (result > (maxBigRequestSize << 2))
|
if (result > (maxBigRequestSize << 2))
|
||||||
result = BadLength;
|
result = BadLength;
|
||||||
else
|
else
|
||||||
|
#ifdef XACE
|
||||||
|
{
|
||||||
|
XaceHook(XACE_AUDIT_BEGIN, client);
|
||||||
result = (* client->requestVector[MAJOROP])(client);
|
result = (* client->requestVector[MAJOROP])(client);
|
||||||
|
XaceHook(XACE_AUDIT_END, client, result);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
result = (* client->requestVector[MAJOROP])(client);
|
||||||
|
#endif /* XACE */
|
||||||
|
|
||||||
if (result != Success)
|
if (result != Success)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2846,6 +2846,10 @@ drawable.id:0;
|
||||||
DeliverFocusedEvent(keybd, xE, sprite.win, count);
|
DeliverFocusedEvent(keybd, xE, sprite.win, count);
|
||||||
if (deactivateGrab)
|
if (deactivateGrab)
|
||||||
(*keybd->DeactivateGrab)(keybd);
|
(*keybd->DeactivateGrab)(keybd);
|
||||||
|
|
||||||
|
#ifdef XACE
|
||||||
|
XaceHook(XACE_KEY_AVAIL, xE, keybd, count);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XKB
|
#ifdef XKB
|
||||||
|
|
|
@ -530,6 +530,10 @@ InitRootWindow(WindowPtr pWin)
|
||||||
/* We SHOULD check for an error value here XXX */
|
/* We SHOULD check for an error value here XXX */
|
||||||
(*pScreen->ChangeWindowAttributes)(pWin, backFlag);
|
(*pScreen->ChangeWindowAttributes)(pWin, backFlag);
|
||||||
|
|
||||||
|
#ifdef XACE
|
||||||
|
XaceHook(XACE_WINDOW_INIT, serverClient, pWin);
|
||||||
|
#endif
|
||||||
|
|
||||||
MapWindow(pWin, serverClient);
|
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->winSize);
|
||||||
REGION_NULL(pScreen, &pWin->borderSize);
|
REGION_NULL(pScreen, &pWin->borderSize);
|
||||||
|
|
||||||
|
#ifdef XACE
|
||||||
|
XaceHook(XACE_WINDOW_INIT, client, pWin);
|
||||||
|
#endif
|
||||||
|
|
||||||
pHead = RealChildHead(pParent);
|
pHead = RealChildHead(pParent);
|
||||||
if (pHead)
|
if (pHead)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue