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); }
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); }