]> 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)
committerHoward Chu <hyc@openldap.org>
Thu, 26 Oct 2017 18:07:35 +0000 (19:07 +0100)
libraries/liblmdb/mdb.c

index 1bf81ed4c87901991b7cac885b0d8cbc4dd23436..f5f99a59019b79afc632ffbc584e69fbbd42cc53 100644 (file)
@@ -10617,8 +10617,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 */