コード例 #1
0
ファイル: ppolicy.c プロジェクト: phpor/otpc
int
ldap_create_passwordpolicy_control( LDAP *ld,
                                    LDAPControl **ctrlp )
{
	BerElement *ber;

	assert( ld != NULL );
	assert( LDAP_VALID( ld ) );
	assert( ctrlp != NULL );

	if ((ber = ldap_alloc_ber_with_options(ld)) == NULL) {
		ld->ld_errno = LDAP_NO_MEMORY;
		return(LDAP_NO_MEMORY);
	}

	ld->ld_errno = ldap_create_control( LDAP_CONTROL_PASSWORDPOLICYREQUEST,
		ber, 0, ctrlp);

	ber_free(ber, 1);
	return(ld->ld_errno);
}
コード例 #2
0
ファイル: sortctrl.c プロジェクト: szakats/bzflag_mirror
int
ldap_create_sort_control (
	LDAP *ld,
	LDAPSortKey **keyList,
	int isCritical,
	LDAPControl **ctrlp )
{
	int         i;
	BerElement  *ber;
	ber_tag_t tag;


	if ( (ld == NULL) || (keyList == NULL) || (ctrlp == NULL) ) {
		ld->ld_errno = LDAP_PARAM_ERROR;
		return(ld->ld_errno);
	}

	if ((ber = ldap_alloc_ber_with_options(ld)) == NULL) {
		ld->ld_errno = LDAP_NO_MEMORY;
		return( ld->ld_errno );
	}

	tag = ber_printf(ber, "{" /*}*/);
	if (tag == LBER_ERROR) goto exit;

	for (i = 0; keyList[i] != NULL; i++) {
		tag = ber_printf(ber, "{s" /*}*/, (keyList[i])->attributeType);
		if (tag == LBER_ERROR) goto exit;

		if ((keyList[i])->orderingRule != NULL) {
			tag = ber_printf( ber, "ts",
				LDAP_MATCHRULE_IDENTIFIER,
				(keyList[i])->orderingRule );

			if( tag == LBER_ERROR ) goto exit;
		}

		if ((keyList[i])->reverseOrder) {
			tag = ber_printf(ber, "tb",
				LDAP_REVERSEORDER_IDENTIFIER,
				(keyList[i])->reverseOrder );

			if( tag == LBER_ERROR ) goto exit;
		}

		tag = ber_printf(ber, /*{*/ "N}");
		if( tag == LBER_ERROR ) goto exit;
	}

	tag = ber_printf(ber, /*{*/ "N}");
	if( tag == LBER_ERROR ) goto exit;

	ld->ld_errno = ldap_create_control( LDAP_CONTROL_SORTREQUEST,
		ber, isCritical, ctrlp);

	ber_free(ber, 1);

	return(ld->ld_errno);

exit:
	ber_free(ber, 1);
	ld->ld_errno =  LDAP_ENCODING_ERROR;
	return(ld->ld_errno);
}