]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/root_dse.c
Merge remote-tracking branch 'origin/mdb.master'
[openldap] / servers / slapd / root_dse.c
index 8b7322122e6f0cb82155bf9970b410e9aa704c4c..019a530af2b7519b35efef7e4e457ae6f8f3fe31 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2009 The OpenLDAP Foundation.
+ * Copyright 1999-2012 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -401,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 ) {
@@ -421,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;
 
@@ -429,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;
                }
 
@@ -440,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;
                }
 
@@ -463,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;