XACE: Move the selection access hook to its own function.
This commit is contained in:
parent
4be69e41c0
commit
0d492b2166
18
Xext/xace.c
18
Xext/xace.c
|
@ -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 = {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue