xace: Add an access_mode field to the extension structure.

This allows the same callback to be used for both extension hooks.
This commit is contained in:
Eamon Walsh 2007-10-17 13:51:11 -04:00 committed by Eamon Walsh
parent e3a8cbe523
commit db66e66dbf
2 changed files with 14 additions and 2 deletions

View File

@ -67,6 +67,17 @@ int XaceHook(int hook, ...)
prv = &rec.status; prv = &rec.status;
break; break;
} }
case XACE_EXT_DISPATCH: {
XaceExtAccessRec rec = {
va_arg(ap, ClientPtr),
va_arg(ap, ExtensionEntry*),
DixUseAccess,
Success /* default allow */
};
calldata = &rec;
prv = &rec.status;
break;
}
case XACE_RESOURCE_ACCESS: { case XACE_RESOURCE_ACCESS: {
XaceResourceAccessRec rec = { XaceResourceAccessRec rec = {
va_arg(ap, ClientPtr), va_arg(ap, ClientPtr),
@ -141,11 +152,11 @@ int XaceHook(int hook, ...)
prv = &rec.status; prv = &rec.status;
break; break;
} }
case XACE_EXT_DISPATCH:
case XACE_EXT_ACCESS: { case XACE_EXT_ACCESS: {
XaceExtAccessRec rec = { XaceExtAccessRec rec = {
va_arg(ap, ClientPtr), va_arg(ap, ClientPtr),
va_arg(ap, ExtensionEntry*), va_arg(ap, ExtensionEntry*),
DixGetAttrAccess,
Success /* default allow */ Success /* default allow */
}; };
calldata = &rec; calldata = &rec;
@ -228,7 +239,7 @@ int XaceHook(int hook, ...)
/* call callbacks and return result, if any. */ /* call callbacks and return result, if any. */
CallCallbacks(&XaceHooks[hook], calldata); CallCallbacks(&XaceHooks[hook], calldata);
return prv ? *prv : 0; return prv ? *prv : Success;
} }
static int static int

View File

@ -97,6 +97,7 @@ typedef struct {
typedef struct { typedef struct {
ClientPtr client; ClientPtr client;
ExtensionEntry *ext; ExtensionEntry *ext;
Mask access_mode;
int status; int status;
} XaceExtAccessRec; } XaceExtAccessRec;