]> git.sur5r.net Git - openldap/commitdiff
ITS#7496, more for ITS#7483
authorHoward Chu <hyc@openldap.org>
Tue, 22 Jan 2013 12:31:29 +0000 (12:31 +0000)
committerHoward Chu <hyc@openldap.org>
Tue, 22 Jan 2013 12:34:40 +0000 (12:34 +0000)
Missing entries need to be checked at runtime too, not just slapcat.
Apparently some people will still try to run slapd even after slapadd
tells them their DB load was invalid.

servers/slapd/back-mdb/id2entry.c

index b6898d3707c44b303341e43d7f6893d185abf523..05206a96f58ee4c4adbb37f98af4f0e1305f687c 100644 (file)
@@ -121,12 +121,17 @@ int mdb_id2edata(
        MDB_val *data )
 {
        MDB_val key;
+       int rc;
 
        key.mv_data = &id;
        key.mv_size = sizeof(ID);
 
        /* fetch it */
-       return mdb_cursor_get( mc, &key, data, MDB_SET );
+       rc = mdb_cursor_get( mc, &key, data, MDB_SET );
+       /* stubs from missing parents - DB is actually invalid */
+       if ( rc == MDB_SUCCESS && !data->mv_size )
+               rc = MDB_NOTFOUND;
+       return rc;
 }
 
 int mdb_id2entry(
@@ -178,6 +183,9 @@ int mdb_id2entry(
                        return MDB_SUCCESS;
                }
        }
+       /* stubs from missing parents - DB is actually invalid */
+       if ( rc == MDB_SUCCESS && !data.mv_size )
+               rc = MDB_NOTFOUND;
        if ( rc ) return rc;
 
        rc = mdb_entry_decode( op, &data, e );