From: Hallvard Furuseth Date: Tue, 21 May 2013 17:04:52 +0000 (+0200) Subject: ITS#7598 mdb_dbi_open(named DB): Check mainDB flags. X-Git-Tag: OPENLDAP_REL_ENG_2_4_36~36^2~40 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1b6d7ee7e1aae85bfce2794e60038c2b264ad93c;p=openldap ITS#7598 mdb_dbi_open(named DB): Check mainDB flags. Reject attempts to open named databases if the main database has flag MDB_DUPSORT or MDB_INTEGERKEY. DUPSORT would require an xcursor for the DB, INTEGERKEY would expect the DB name to be a binary integer. --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index acf8338ab3..4c85d67ea6 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -7226,6 +7226,10 @@ int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *db if (!unused && txn->mt_numdbs >= txn->mt_env->me_maxdbs) return MDB_DBS_FULL; + /* Cannot mix named databases with some mainDB flags */ + if (txn->mt_dbs[MAIN_DBI].md_flags & (MDB_DUPSORT|MDB_INTEGERKEY)) + return (flags & MDB_CREATE) ? MDB_INCOMPATIBLE : MDB_NOTFOUND; + /* Find the DB info */ dbflag = DB_NEW|DB_VALID; exact = 0;