mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-23 08:09:34 -05:00
plug rootDSE info one-time leak
This commit is contained in:
parent
3de9659781
commit
9edb2d518e
4 changed files with 39 additions and 11 deletions
|
|
@ -1509,7 +1509,7 @@ config_generic(ConfigArgs *c) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CFG_ROOTDSE:
|
case CFG_ROOTDSE:
|
||||||
if(read_root_dse_file(c->argv[1])) {
|
if(root_dse_read_file(c->argv[1])) {
|
||||||
snprintf( c->msg, sizeof( c->msg ), "<%s> could not read file", c->argv[0] );
|
snprintf( c->msg, sizeof( c->msg ), "<%s> could not read file", c->argv[0] );
|
||||||
Debug(LDAP_DEBUG_ANY, "%s: %s %s\n",
|
Debug(LDAP_DEBUG_ANY, "%s: %s %s\n",
|
||||||
c->log, c->msg, c->argv[1] );
|
c->log, c->msg, c->argv[1] );
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ slap_init( int mode, const char *name )
|
||||||
|
|
||||||
switch ( slapMode & SLAP_MODE ) {
|
switch ( slapMode & SLAP_MODE ) {
|
||||||
case SLAP_SERVER_MODE:
|
case SLAP_SERVER_MODE:
|
||||||
|
root_dse_init();
|
||||||
|
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
case SLAP_TOOL_MODE:
|
case SLAP_TOOL_MODE:
|
||||||
|
|
@ -274,10 +275,14 @@ int slap_destroy(void)
|
||||||
|
|
||||||
slap_sasl_destroy();
|
slap_sasl_destroy();
|
||||||
|
|
||||||
|
/* rootdse destroy goes before entry_destroy()
|
||||||
|
* because it may use entry_free() */
|
||||||
|
root_dse_destroy();
|
||||||
entry_destroy();
|
entry_destroy();
|
||||||
|
|
||||||
switch ( slapMode & SLAP_MODE ) {
|
switch ( slapMode & SLAP_MODE ) {
|
||||||
case SLAP_SERVER_MODE:
|
case SLAP_SERVER_MODE:
|
||||||
|
|
||||||
case SLAP_TOOL_MODE:
|
case SLAP_TOOL_MODE:
|
||||||
|
|
||||||
ldap_pvt_thread_mutex_destroy( &slap_counters.sc_sent_mutex );
|
ldap_pvt_thread_mutex_destroy( &slap_counters.sc_sent_mutex );
|
||||||
|
|
|
||||||
|
|
@ -1412,12 +1412,15 @@ LDAP_SLAPD_V( const struct berval ) slap_dummy_bv;
|
||||||
/*
|
/*
|
||||||
* root_dse.c
|
* root_dse.c
|
||||||
*/
|
*/
|
||||||
|
LDAP_SLAPD_F (int) root_dse_init LDAP_P(( void ));
|
||||||
|
LDAP_SLAPD_F (int) root_dse_destroy LDAP_P(( void ));
|
||||||
|
|
||||||
LDAP_SLAPD_F (int) root_dse_info LDAP_P((
|
LDAP_SLAPD_F (int) root_dse_info LDAP_P((
|
||||||
Connection *conn,
|
Connection *conn,
|
||||||
Entry **e,
|
Entry **e,
|
||||||
const char **text ));
|
const char **text ));
|
||||||
|
|
||||||
LDAP_SLAPD_F (int) read_root_dse_file LDAP_P((
|
LDAP_SLAPD_F (int) root_dse_read_file LDAP_P((
|
||||||
const char *file));
|
const char *file));
|
||||||
|
|
||||||
LDAP_SLAPD_F (int) slap_discover_feature LDAP_P((
|
LDAP_SLAPD_F (int) slap_discover_feature LDAP_P((
|
||||||
|
|
|
||||||
|
|
@ -375,13 +375,31 @@ fail:
|
||||||
return LDAP_SUCCESS;
|
return LDAP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
root_dse_init( void )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
root_dse_destroy( void )
|
||||||
|
{
|
||||||
|
if ( usr_attr ) {
|
||||||
|
entry_free( usr_attr );
|
||||||
|
usr_attr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read the entries specified in fname and merge the attributes
|
* Read the entries specified in fname and merge the attributes
|
||||||
* to the user defined rootDSE. Note thaat if we find any errors
|
* to the user defined rootDSE. Note thaat if we find any errors
|
||||||
* what so ever, we will discard the entire entries, print an
|
* what so ever, we will discard the entire entries, print an
|
||||||
* error message and return.
|
* error message and return.
|
||||||
*/
|
*/
|
||||||
int read_root_dse_file( const char *fname )
|
int
|
||||||
|
root_dse_read_file( const char *fname )
|
||||||
{
|
{
|
||||||
struct LDIFFP *fp;
|
struct LDIFFP *fp;
|
||||||
int rc = 0, lineno = 0, lmax = 0;
|
int rc = 0, lineno = 0, lmax = 0;
|
||||||
|
|
@ -389,7 +407,7 @@ int read_root_dse_file( const char *fname )
|
||||||
|
|
||||||
if ( (fp = ldif_open( fname, "r" )) == NULL ) {
|
if ( (fp = ldif_open( fname, "r" )) == NULL ) {
|
||||||
Debug( LDAP_DEBUG_ANY,
|
Debug( LDAP_DEBUG_ANY,
|
||||||
"could not open rootdse attr file \"%s\" - absolute path?\n",
|
"root_dse_read_file: could not open rootdse attr file \"%s\" - absolute path?\n",
|
||||||
fname, 0, 0 );
|
fname, 0, 0 );
|
||||||
perror( fname );
|
perror( fname );
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
@ -398,7 +416,7 @@ int read_root_dse_file( const char *fname )
|
||||||
usr_attr = entry_alloc();
|
usr_attr = entry_alloc();
|
||||||
if( usr_attr == NULL ) {
|
if( usr_attr == NULL ) {
|
||||||
Debug( LDAP_DEBUG_ANY,
|
Debug( LDAP_DEBUG_ANY,
|
||||||
"read_root_dse_file: entry_alloc failed", 0, 0, 0 );
|
"root_dse_read_file: entry_alloc failed", 0, 0, 0 );
|
||||||
ldif_close( fp );
|
ldif_close( fp );
|
||||||
return LDAP_OTHER;
|
return LDAP_OTHER;
|
||||||
}
|
}
|
||||||
|
|
@ -409,17 +427,19 @@ int read_root_dse_file( const char *fname )
|
||||||
Attribute *a;
|
Attribute *a;
|
||||||
|
|
||||||
if( e == NULL ) {
|
if( e == NULL ) {
|
||||||
fprintf( stderr, "root_dse: could not parse entry (line=%d)\n",
|
Debug( LDAP_DEBUG_ANY, "root_dse_read_file: "
|
||||||
lineno );
|
"could not parse entry (file=\"%s\" line=%d)\n",
|
||||||
|
fname, lineno, 0 );
|
||||||
rc = EXIT_FAILURE;
|
rc = EXIT_FAILURE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* make sure the DN is the empty DN */
|
/* make sure the DN is the empty DN */
|
||||||
if( e->e_nname.bv_len ) {
|
if( e->e_nname.bv_len ) {
|
||||||
fprintf( stderr,
|
Debug( LDAP_DEBUG_ANY,
|
||||||
"root_dse: invalid rootDSE - dn=\"%s\" (line=%d)\n",
|
"root_dse_read_file: invalid rootDSE "
|
||||||
e->e_dn, lineno );
|
"- dn=\"%s\" (file=\"%s\" line=%d)\n",
|
||||||
|
e->e_dn, fname, lineno );
|
||||||
entry_free( e );
|
entry_free( e );
|
||||||
rc = EXIT_FAILURE;
|
rc = EXIT_FAILURE;
|
||||||
break;
|
break;
|
||||||
|
|
@ -453,7 +473,7 @@ int read_root_dse_file( const char *fname )
|
||||||
|
|
||||||
ldif_close( fp );
|
ldif_close( fp );
|
||||||
|
|
||||||
Debug(LDAP_DEBUG_CONFIG, "rootDSE file %s read.\n", fname, 0, 0);
|
Debug(LDAP_DEBUG_CONFIG, "rootDSE file=\"%s\" read.\n", fname, 0, 0);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue