Skip to content
Snippets Groups Projects
Commit 689710e2 authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

Dunno in advance how many controls will be set by a client

parent df5d69df
No related branches found
No related tags found
No related merge requests found
......@@ -640,8 +640,14 @@ tool_bind( LDAP *ld )
void
tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
{
int i = 0, j, crit, err;
LDAPControl c[3], *ctrls[10];
int i = 0, j, crit = 0, err;
LDAPControl c[3], **ctrls;
ctrls = (LDAPControl **)malloc( sizeof(c) + (count + 1)*sizeof(LDAPControl *) );
if ( ctrls == NULL ) {
fprintf( stderr, "No memory\n" );
exit( EXIT_FAILURE );
}
if ( authzid ) {
c[i].ldctl_oid = LDAP_CONTROL_PROXY_AUTHZ;
......@@ -676,14 +682,16 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
err = ldap_set_option( ld, LDAP_OPT_SERVER_CONTROLS, ctrls );
if( err != LDAP_OPT_SUCCESS ) {
for ( j = crit = 0; j < i; j++ )
if ( err != LDAP_OPT_SUCCESS ) {
for ( j = 0; j < i; j++ )
if ( ctrls[j]->ldctl_iscritical )
crit = 1;
fprintf( stderr, "Could not set %scontrols\n",
crit ? "critical " : "" );
if ( crit ) {
exit( EXIT_FAILURE );
}
}
free( ctrls );
if ( crit ) {
exit( EXIT_FAILURE );
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment