X-Git-Url: https://git.sur5r.net/?p=openldap;a=blobdiff_plain;f=libraries%2Fliblmdb%2Fmdb.c;h=e9d385c8ae60afbe6ac2914b6b2bd2f63430a978;hp=87ff230833750a52b548da3f566ba97ce4bd1f0b;hb=a4d9a75a1e3b907392f3e00586da4611bbfe09bb;hpb=4ac16b128cec6f01933b31a9dc1579a664be0121 diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 87ff230833..e9d385c8ae 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -9758,8 +9758,11 @@ int mdb_dbi_open(MDB_txn *txn, const char *name, unsigned int flags, MDB_dbi *db MDB_node *node = NODEPTR(mc.mc_pg[mc.mc_top], mc.mc_ki[mc.mc_top]); if ((node->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA) return MDB_INCOMPATIBLE; - } else if (! (rc == MDB_NOTFOUND && (flags & MDB_CREATE))) { - return rc; + } else { + if (rc != MDB_NOTFOUND || !(flags & MDB_CREATE)) + return rc; + if (F_ISSET(txn->mt_flags, MDB_TXN_RDONLY)) + return EACCES; } /* Done here so we cannot fail after creating a new DB */