]> git.sur5r.net Git - openldap/commitdiff
Fix d3990eb2f8b2944782604a2ca7bd52e08c58fc3e
authorHoward Chu <hyc@symas.com>
Thu, 4 Apr 2013 01:26:41 +0000 (18:26 -0700)
committerHoward Chu <hyc@symas.com>
Thu, 4 Apr 2013 01:26:41 +0000 (18:26 -0700)
Append mode should *reject* keys that are too small.
Also allow APPENDDUP in mdb_put().

libraries/liblmdb/mdb.c

index 2d06f3b75bd6fbb15bcfb8eefdc4be82bcec659e..513706d83e144887fc6ca739914cbcf0886d1a82 100644 (file)
@@ -4939,7 +4939,8 @@ mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data,
                                        rc = MDB_NOTFOUND;
                                        mc->mc_ki[mc->mc_top]++;
                                } else {
-                                       rc = 0;
+                                       /* new key is <= last key */
+                                       rc = MDB_KEYEXIST;
                                }
                        }
                } else {
@@ -6918,7 +6919,7 @@ mdb_put(MDB_txn *txn, MDB_dbi dbi,
                return EINVAL;
        }
 
-       if ((flags & (MDB_NOOVERWRITE|MDB_NODUPDATA|MDB_RESERVE|MDB_APPEND)) != flags)
+       if ((flags & (MDB_NOOVERWRITE|MDB_NODUPDATA|MDB_RESERVE|MDB_APPEND|MDB_APPENDDUP)) != flags)
                return EINVAL;
 
        mdb_cursor_init(&mc, txn, dbi, &mx);