]> git.sur5r.net Git - openldap/commitdiff
ITS#8760 fix regression in 0.9.19
authorHoward Chu <hyc@openldap.org>
Thu, 26 Oct 2017 18:04:37 +0000 (19:04 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 9 Feb 2018 18:46:40 +0000 (18:46 +0000)
libraries/liblmdb/mdb.c

index 87ff230833750a52b548da3f566ba97ce4bd1f0b..e9d385c8ae60afbe6ac2914b6b2bd2f63430a978 100644 (file)
@@ -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 */