nPolicies = *policy++;
nPolicies = (CARD8) *policy++;
AuthCheckSitePolicy(data_lengthP, dataP, client, reason)    unsigned short *data_lengthP;    char	**dataP;    ClientPtr	client;    char	**reason;{    char	*policy = *dataP;    int		length;    Bool	permit;    int		nPolicies;    char	**sitePolicies;    int		nSitePolicies;    Bool	found = FALSE;    if ((length = *data_lengthP) < 2) {	*reason = InvalidPolicyReason;	return FALSE;    }    permit = (*policy++ == 0);    nPolicies = *policy++;    length -= 2;    sitePolicies = SecurityGetSitePolicyStrings(&nSitePolicies);    while (nPolicies > 0) {	int strLen, sitePolicy;	if (length == 0) {	    *reason = InvalidPolicyReason;	    return FALSE;	}	strLen = *policy++;	if (--length < strLen) {	    *reason = InvalidPolicyReason;	    return FALSE;	}	if (!found)	{	    for (sitePolicy = 0; sitePolicy < nSitePolicies; sitePolicy++)	    {		char *testPolicy = sitePolicies[sitePolicy];		if ((strLen == strlen(testPolicy)) &&		    (strncmp(policy, testPolicy, strLen) == 0))		{		    found = TRUE; /* need to continue parsing the policy... */		    break;		}	    }	}	policy += strLen;	length -= strLen;	nPolicies--;    }    if (found != permit)    {	*reason = PolicyViolationReason;	return FALSE;    }    *data_lengthP = length;    *dataP = policy;    return TRUE;}