From c29542c41885b56066c66046ca1f690251265c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Tue, 18 Dec 2018 17:40:14 +0100 Subject: [PATCH] ITS#8845 sc_extendedops is read-only --- servers/slapd/controls.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/servers/slapd/controls.c b/servers/slapd/controls.c index 73f3acf9fd..c3cf6a732e 100644 --- a/servers/slapd/controls.c +++ b/servers/slapd/controls.c @@ -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 ] );