From 1b6d7ee7e1aae85bfce2794e60038c2b264ad93c Mon Sep 17 00:00:00 2001 From: Hallvard Furuseth Date: Tue, 21 May 2013 19:04:52 +0200 Subject: [PATCH] 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. --- libraries/liblmdb/mdb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index acf8338..4c85d67 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;