コード例 #1
0
ファイル: auth2.c プロジェクト: schuay/software_security
/*
 * Remove method from the start of a comma-separated list of methods.
 * Returns 0 if the list of methods did not start with that method or 1
 * if it did.
 */
static int
remove_method(char **methods, const char *method)
{
	char *omethods = *methods;
	size_t l = strlen(method);

	if (!list_starts_with(omethods, method))
		return 0;
	*methods = xstrdup(omethods + l + (omethods[l] == ',' ? 1 : 0));
	free(omethods);
	return 1;
}
コード例 #2
0
ファイル: auth2.c プロジェクト: schuay/software_security
/*
 * Checks whether method is allowed by at least one AuthenticationMethods
 * methods list. Returns 1 if allowed, or no methods lists configured.
 * 0 otherwise.
 */
static int
method_allowed(Authctxt *authctxt, const char *method)
{
	u_int i;

	/*
	 * NB. authctxt->num_auth_methods might be zero as a result of
	 * auth2_setup_methods_lists(), so check the configuration.
	 */
	if (options.num_auth_methods == 0)
		return 1;
	for (i = 0; i < authctxt->num_auth_methods; i++) {
		if (list_starts_with(authctxt->auth_methods[i], method))
			return 1;
	}
	return 0;
}
コード例 #3
0
ファイル: auth2.c プロジェクト: ele7enxxh/dtrace-pf
/*
 * Remove method from the start of a comma-separated list of methods.
 * Returns 0 if the list of methods did not start with that method or 1
 * if it did.
 */
static int
remove_method(char **methods, const char *method, const char *submethod)
{
	char *omethods = *methods, *p;
	size_t l = strlen(method);
	int match;

	match = list_starts_with(omethods, method, submethod);
	if (match != MATCH_METHOD && match != MATCH_BOTH)
		return 0;
	p = omethods + l;
	if (submethod && match == MATCH_BOTH)
		p += 1 + strlen(submethod); /* include colon */
	if (*p == ',')
		p++;
	*methods = xstrdup(p);
	free(omethods);
	return 1;
}