diff --git a/dix/dispatch.c b/dix/dispatch.c index c651c3d88..92be773e6 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -3766,14 +3766,11 @@ int ProcEstablishConnection(ClientPtr client) { const char *reason; - char *auth_proto, *auth_string; xConnClientPrefix *prefix; REQUEST(xReq); prefix = (xConnClientPrefix *) ((char *) stuff + sz_xReq); - auth_proto = (char *) prefix + sz_xConnClientPrefix; - auth_string = auth_proto + pad_to_int32(prefix->nbytesAuthProto); if ((client->req_len << 2) != sz_xReq + sz_xConnClientPrefix + pad_to_int32(prefix->nbytesAuthProto) + @@ -3782,12 +3779,15 @@ ProcEstablishConnection(ClientPtr client) else if ((prefix->majorVersion != X_PROTOCOL) || (prefix->minorVersion != X_PROTOCOL_REVISION)) reason = "Protocol version mismatch"; - else + else { + char *auth_proto = (char *) prefix + sz_xConnClientPrefix; + char *auth_string = auth_proto + pad_to_int32(prefix->nbytesAuthProto); reason = ClientAuthorized(client, (unsigned short) prefix->nbytesAuthProto, auth_proto, (unsigned short) prefix->nbytesAuthString, auth_string); + } return (SendConnSetup(client, reason)); }