X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Froot_dse.c;h=20178f17adf9a4cbe0c1c46898685a86734af54e;hb=ef7f5f5e32e6e0f129aee7fa1626017a7dadcb48;hp=3621b9145a76f481c8316dabef202a1f3ccdb687;hpb=605fdacf514552d6e4db4308e61cee4d3e278b9d;p=openldap diff --git a/servers/slapd/root_dse.c b/servers/slapd/root_dse.c index 3621b9145a..20178f17ad 100644 --- a/servers/slapd/root_dse.c +++ b/servers/slapd/root_dse.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2007 The OpenLDAP Foundation. + * Copyright 1999-2011 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,7 +35,9 @@ static struct berval builtin_supportedFeatures[] = { BER_BVC(LDAP_FEATURE_ABSOLUTE_FILTERS), /* (&) and (|) search filters */ BER_BVC(LDAP_FEATURE_LANGUAGE_TAG_OPTIONS), /* Language Tag Options */ BER_BVC(LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS), /* Language Range Options */ +#ifdef LDAP_DEVEL BER_BVC(LDAP_FEATURE_SUBORDINATE_SCOPE), /* "children" search scope */ +#endif BER_BVNULL }; static struct berval *supportedFeatures; @@ -275,8 +277,7 @@ fail: } for ( j = 0; be->be_suffix[j].bv_val != NULL; j++ ) { if( attr_merge_one( e, ad_namingContexts, - &be->be_suffix[j], - &be->be_nsuffix[0] ) ) + &be->be_suffix[j], NULL ) ) { goto fail; } @@ -400,7 +401,7 @@ int root_dse_read_file( const char *fname ) { struct LDIFFP *fp; - int rc = 0, lineno = 0, lmax = 0; + int rc = 0, lineno = 0, lmax = 0, ldifrc; char *buf = NULL; if ( (fp = ldif_open( fname, "r" )) == NULL ) { @@ -420,7 +421,7 @@ root_dse_read_file( const char *fname ) } usr_attr->e_attrs = NULL; - while( ldif_read_record( fp, &lineno, &buf, &lmax ) ) { + while(( ldifrc = ldif_read_record( fp, &lineno, &buf, &lmax )) > 0 ) { Entry *e = str2entry( buf ); Attribute *a; @@ -428,7 +429,7 @@ root_dse_read_file( const char *fname ) Debug( LDAP_DEBUG_ANY, "root_dse_read_file: " "could not parse entry (file=\"%s\" line=%d)\n", fname, lineno, 0 ); - rc = EXIT_FAILURE; + rc = LDAP_OTHER; break; } @@ -439,7 +440,7 @@ root_dse_read_file( const char *fname ) "- dn=\"%s\" (file=\"%s\" line=%d)\n", e->e_dn, fname, lineno ); entry_free( e ); - rc = EXIT_FAILURE; + rc = LDAP_OTHER; break; } @@ -462,6 +463,9 @@ root_dse_read_file( const char *fname ) if (rc) break; } + if ( ldifrc < 0 ) + rc = LDAP_OTHER; + if (rc) { entry_free( usr_attr ); usr_attr = NULL;