ITS#8845 sc_extendedops is read-only

This commit is contained in:
Ondřej Kuzník 2018-12-18 17:40:14 +01:00
parent 8ccb3d4e1b
commit c29542c418

View file

@ -405,27 +405,18 @@ register_control_exop( const char *controloid, char *exopoid )
return LDAP_PARAM_ERROR;
}
for ( i = 0; sc->sc_extendedops && sc->sc_extendedops[ i ]; i++ ) {
if ( strcmp( exopoid, sc->sc_extendedops[ i ] ) == 0 ) {
for ( i = 0; sc->sc_extendedopsbv && !BER_BVISNULL( &sc->sc_extendedopsbv[ i ] ); i++ ) {
if ( strcmp( exopoid, sc->sc_extendedopsbv[ i ].bv_val ) == 0 ) {
return LDAP_SUCCESS;
}
}
extendedops = ber_memrealloc( sc->sc_extendedops, (i + 2) * sizeof( char * ) );
if ( extendedops == NULL ) {
return LDAP_NO_MEMORY;
}
sc->sc_extendedops = extendedops;
extendedopsbv = ber_memrealloc( sc->sc_extendedopsbv, (i + 2) * sizeof( struct berval ) );
if ( extendedopsbv == NULL ) {
return LDAP_NO_MEMORY;
}
sc->sc_extendedopsbv = extendedopsbv;
extendedops[ i ] = exopoid;
extendedops[ i+1 ] = NULL;
ber_str2bv( exopoid, 0, 1, &extendedopsbv[ i ] );
BER_BVZERO( &extendedopsbv[ i+1 ] );