]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
(From ITS#8958) allow 2.5 slapcat to read 2.4 DB
authorHoward Chu <hyc@openldap.org>
Fri, 6 Aug 2021 21:50:23 +0000 (22:50 +0100)
committerHoward Chu <hyc@openldap.org>
Fri, 6 Aug 2021 21:50:23 +0000 (22:50 +0100)
servers/slapd/back-mdb/init.c

index 9d9e7ae775d9fccf4d215055f1b74025c43c1791..1b6ac188472dfbd274898f96650f29f20319fdbe 100644 (file)
@@ -215,15 +215,18 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
                        &mdb->mi_dbis[i] );
 
                if ( rc != 0 ) {
-                       snprintf( cr->msg, sizeof(cr->msg), "database \"%s\": "
-                               "mdb_dbi_open(%s/%s) failed: %s (%d).", 
-                               be->be_suffix[0].bv_val, 
-                               mdb->mi_dbenv_home, mdmi_databases[i].bv_val,
-                               mdb_strerror(rc), rc );
-                       Debug( LDAP_DEBUG_ANY,
-                               LDAP_XSTRING(mdb_db_open) ": %s\n",
-                               cr->msg );
-                       goto fail;
+                       /* when read-only, it's ok for ID2VAL or IDXCKP to not exist */
+                       if (( flags & MDB_CREATE ) || ( i < MDB_ID2VAL )) {
+                               snprintf( cr->msg, sizeof(cr->msg), "database \"%s\": "
+                                       "mdb_dbi_open(%s/%s) failed: %s (%d).",
+                                       be->be_suffix[0].bv_val,
+                                       mdb->mi_dbenv_home, mdmi_databases[i].bv_val,
+                                       mdb_strerror(rc), rc );
+                               Debug( LDAP_DEBUG_ANY,
+                                       LDAP_XSTRING(mdb_db_open) ": %s\n",
+                                       cr->msg );
+                               goto fail;
+                       }
                }
 
                if ( i == MDB_ID2ENTRY )