dix: Factor out extension availability check

Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2018-04-23 16:19:12 -04:00
parent 9d5af632fd
commit 73a1cb9c92
1 changed files with 11 additions and 3 deletions

View File

@ -210,6 +210,14 @@ CloseDownExtensions(void)
lastError = FirstExtensionError;
}
static Bool
ExtensionAvailable(ClientPtr client, ExtensionEntry *ext)
{
if (XaceHook(XACE_EXT_ACCESS, client, ext) != Success)
return FALSE;
return TRUE;
}
int
ProcQueryExtension(ClientPtr client)
{
@ -231,7 +239,7 @@ ProcQueryExtension(ClientPtr client)
reply.present = xFalse;
else {
i = FindExtension((char *) &stuff[1], stuff->nbytes);
if (i < 0 || XaceHook(XACE_EXT_ACCESS, client, extensions[i]))
if (i < 0 || !ExtensionAvailable(client, extensions[i]))
reply.present = xFalse;
else {
reply.present = xTrue;
@ -266,7 +274,7 @@ ProcListExtensions(ClientPtr client)
for (i = 0; i < NumExtensions; i++) {
/* call callbacks to find out whether to show extension */
if (XaceHook(XACE_EXT_ACCESS, client, extensions[i]) != Success)
if (!ExtensionAvailable(client, extensions[i]))
continue;
total_length += strlen(extensions[i]->name) + 1;
@ -279,7 +287,7 @@ ProcListExtensions(ClientPtr client)
for (i = 0; i < NumExtensions; i++) {
int len;
if (XaceHook(XACE_EXT_ACCESS, client, extensions[i]) != Success)
if (!ExtensionAvailable(client, extensions[i]))
continue;
*bufptr++ = len = strlen(extensions[i]->name);