XACE: Move the selection access hook to its own function.

This commit is contained in:
Eamon Walsh 2008-02-12 19:59:10 -05:00 committed by Eamon Walsh
parent 4be69e41c0
commit 0d492b2166
3 changed files with 15 additions and 17 deletions

View File

@ -63,6 +63,13 @@ int XaceHookPropertyAccess(ClientPtr client, WindowPtr pWin,
return rec.status; return rec.status;
} }
int XaceHookSelectionAccess(ClientPtr client, Atom name, Mask access_mode)
{
XaceSelectionAccessRec rec = { client, name, access_mode, Success };
CallCallbacks(&XaceHooks[XACE_SELECTION_ACCESS], &rec);
return rec.status;
}
void XaceHookAuditEnd(ClientPtr ptr, int result) void XaceHookAuditEnd(ClientPtr ptr, int result)
{ {
XaceAuditRec rec = { ptr, result }; XaceAuditRec rec = { ptr, result };
@ -169,17 +176,6 @@ int XaceHook(int hook, ...)
prv = &rec.status; prv = &rec.status;
break; break;
} }
case XACE_SELECTION_ACCESS: {
XaceSelectionAccessRec rec = {
va_arg(ap, ClientPtr),
va_arg(ap, Atom),
va_arg(ap, Mask),
Success /* default allow */
};
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_SCREEN_ACCESS: case XACE_SCREEN_ACCESS:
case XACE_SCREENSAVER_ACCESS: { case XACE_SCREENSAVER_ACCESS: {
XaceScreenAccessRec rec = { XaceScreenAccessRec rec = {

View File

@ -69,6 +69,8 @@ extern int XaceHook(
extern int XaceHookDispatch(ClientPtr ptr, int major); extern int XaceHookDispatch(ClientPtr ptr, int major);
extern int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin, extern int XaceHookPropertyAccess(ClientPtr ptr, WindowPtr pWin,
PropertyPtr pProp, Mask access_mode); PropertyPtr pProp, Mask access_mode);
extern int XaceHookSelectionAccess(ClientPtr ptr, Atom name,
Mask access_mode);
extern void XaceHookAuditEnd(ClientPtr ptr, int result); extern void XaceHookAuditEnd(ClientPtr ptr, int result);
/* Register a callback for a given hook. /* Register a callback for a given hook.
@ -106,12 +108,14 @@ extern void XaceCensorImage(
#define XaceHook(args...) Success #define XaceHook(args...) Success
#define XaceHookDispatch(args...) Success #define XaceHookDispatch(args...) Success
#define XaceHookPropertyAccess(args...) Success #define XaceHookPropertyAccess(args...) Success
#define XaceHookSelectionAccess(args...) Success
#define XaceHookAuditEnd(args...) { ; } #define XaceHookAuditEnd(args...) { ; }
#define XaceCensorImage(args...) { ; } #define XaceCensorImage(args...) { ; }
#else #else
#define XaceHook(...) Success #define XaceHook(...) Success
#define XaceHookDispatch(...) Success #define XaceHookDispatch(...) Success
#define XaceHookPropertyAccess(...) Success #define XaceHookPropertyAccess(...) Success
#define XaceHookSelectionAccess(...) Success
#define XaceHookAuditEnd(...) { ; } #define XaceHookAuditEnd(...) { ; }
#define XaceCensorImage(...) { ; } #define XaceCensorImage(...) { ; }
#endif #endif

View File

@ -995,8 +995,8 @@ ProcSetSelectionOwner(ClientPtr client)
{ {
int i = 0; int i = 0;
rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->selection, rc = XaceHookSelectionAccess(client, stuff->selection,
DixSetAttrAccess); DixSetAttrAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
@ -1081,8 +1081,7 @@ ProcGetSelectionOwner(ClientPtr client)
int rc, i; int rc, i;
xGetSelectionOwnerReply reply; xGetSelectionOwnerReply reply;
rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->id, rc = XaceHookSelectionAccess(client, stuff->id, DixGetAttrAccess);
DixGetAttrAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
@ -1127,8 +1126,7 @@ ProcConvertSelection(ClientPtr client)
rc = dixLookupWindow(&pWin, stuff->requestor, client, DixSetAttrAccess); rc = dixLookupWindow(&pWin, stuff->requestor, client, DixSetAttrAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;
rc = XaceHook(XACE_SELECTION_ACCESS, client, stuff->selection, rc = XaceHookSelectionAccess(client, stuff->selection, DixReadAccess);
DixReadAccess);
if (rc != Success) if (rc != Success)
return rc; return rc;