From b97378b3b53876d12a1f9d337f0fdb88594625dd Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 2 Sep 2025 13:29:39 +0200 Subject: [PATCH] Xext: security: inline SProc*()'s No need to have a hole bunch of extra functions, if we can just easily inline the few relevant lines. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/security.c | 82 +++++++++++++------------------------------------ 1 file changed, 22 insertions(+), 60 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index b27eab310c..411b71fef8 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -347,14 +347,19 @@ SecurityStartAuthorizationTimer(SecurityAuthorizationPtr pAuth) static int ProcSecurityQueryVersion(ClientPtr client) { - /* REQUEST(xSecurityQueryVersionReq); */ xSecurityQueryVersionReply reply = { .majorVersion = SERVER_SECURITY_MAJOR_VERSION, .minorVersion = SERVER_SECURITY_MINOR_VERSION }; + REQUEST(xSecurityQueryVersionReq); REQUEST_SIZE_MATCH(xSecurityQueryVersionReq); + if (client->swapped) { + swaps(&stuff->majorVersion); + swaps(&stuff->minorVersion); + } + if (client->swapped) { swaps(&reply.majorVersion); swaps(&reply.minorVersion); @@ -416,6 +421,13 @@ ProcSecurityGenerateAuthorization(ClientPtr client) /* check request length */ REQUEST_AT_LEAST_SIZE(xSecurityGenerateAuthorizationReq); + + if (client->swapped) { + swaps(&stuff->nbytesAuthProto); + swaps(&stuff->nbytesAuthData); + swapl(&stuff->valueMask); + } + len = bytes_to_int32(SIZEOF(xSecurityGenerateAuthorizationReq)); len += bytes_to_int32(stuff->nbytesAuthProto); len += bytes_to_int32(stuff->nbytesAuthData); @@ -424,6 +436,11 @@ ProcSecurityGenerateAuthorization(ClientPtr client) if (client->req_len != len) return BadLength; + if (client->swapped) { + unsigned long nvalues = (((CARD32 *) stuff) + client->req_len) - values; + SwapLongs(values, nvalues); + } + /* check valuemask */ if (stuff->valueMask & ~XSecurityAllAuthorizationAttributes) { client->errorValue = stuff->valueMask; @@ -570,6 +587,9 @@ ProcSecurityRevokeAuthorization(ClientPtr client) int rc; REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq); + if (client->swapped) { + swapl(&stuff->authId); + } rc = dixLookupResourceByType((void **) &pAuth, stuff->authId, SecurityAuthorizationResType, client, @@ -598,64 +618,6 @@ ProcSecurityDispatch(ClientPtr client) } } /* ProcSecurityDispatch */ -static int _X_COLD -SProcSecurityQueryVersion(ClientPtr client) -{ - REQUEST(xSecurityQueryVersionReq); - REQUEST_SIZE_MATCH(xSecurityQueryVersionReq); - swaps(&stuff->majorVersion); - swaps(&stuff->minorVersion); - return ProcSecurityQueryVersion(client); -} /* SProcSecurityQueryVersion */ - -static int _X_COLD -SProcSecurityGenerateAuthorization(ClientPtr client) -{ - REQUEST(xSecurityGenerateAuthorizationReq); - CARD32 *values; - unsigned long nvalues; - int values_offset; - REQUEST_AT_LEAST_SIZE(xSecurityGenerateAuthorizationReq); - swaps(&stuff->nbytesAuthProto); - swaps(&stuff->nbytesAuthData); - swapl(&stuff->valueMask); - values_offset = bytes_to_int32(stuff->nbytesAuthProto) + - bytes_to_int32(stuff->nbytesAuthData); - if (values_offset > - client->req_len - bytes_to_int32(sz_xSecurityGenerateAuthorizationReq)) - return BadLength; - values = (CARD32 *) (&stuff[1]) + values_offset; - nvalues = (((CARD32 *) stuff) + client->req_len) - values; - SwapLongs(values, nvalues); - return ProcSecurityGenerateAuthorization(client); -} /* SProcSecurityGenerateAuthorization */ - -static int _X_COLD -SProcSecurityRevokeAuthorization(ClientPtr client) -{ - REQUEST(xSecurityRevokeAuthorizationReq); - REQUEST_SIZE_MATCH(xSecurityRevokeAuthorizationReq); - swapl(&stuff->authId); - return ProcSecurityRevokeAuthorization(client); -} /* SProcSecurityRevokeAuthorization */ - -static int _X_COLD -SProcSecurityDispatch(ClientPtr client) -{ - REQUEST(xReq); - - switch (stuff->data) { - case X_SecurityQueryVersion: - return SProcSecurityQueryVersion(client); - case X_SecurityGenerateAuthorization: - return SProcSecurityGenerateAuthorization(client); - case X_SecurityRevokeAuthorization: - return SProcSecurityRevokeAuthorization(client); - default: - return BadRequest; - } -} /* SProcSecurityDispatch */ - static void _X_COLD SwapSecurityAuthorizationRevokedEvent(xSecurityAuthorizationRevokedEvent * from, xSecurityAuthorizationRevokedEvent * to) @@ -1067,7 +1029,7 @@ SecurityExtensionInit(void) /* Add extension to server */ extEntry = AddExtension(SECURITY_EXTENSION_NAME, XSecurityNumberEvents, XSecurityNumberErrors, - ProcSecurityDispatch, SProcSecurityDispatch, + ProcSecurityDispatch, ProcSecurityDispatch, SecurityResetProc, StandardMinorOpcode); SecurityErrorBase = extEntry->errorBase;