]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9712 back-mdb: fix multival delete
authorHoward Chu <hyc@openldap.org>
Thu, 7 Oct 2021 00:21:47 +0000 (01:21 +0100)
committerHoward Chu <hyc@openldap.org>
Thu, 7 Oct 2021 00:22:34 +0000 (01:22 +0100)
servers/slapd/back-mdb/id2entry.c

index 0f3b60a3b309e8e7f38e541bfb2243b5c3f01e74..216efa69dcdf5bb13120428210ee9fd892edfc2b 100644 (file)
@@ -55,6 +55,8 @@ mdb_id2v_compare(
                return -1;
        if (ui > ci)
                return 1;
+       if (usrkey->mv_size < curkey->mv_size)
+               return 0;
        uv = usrkey->mv_data;
        cv = curkey->mv_data;
        return uv[sizeof(ID)/2] - cv[sizeof(ID)/2];
@@ -490,7 +492,8 @@ int mdb_id2entry_delete(
                        return rc;
                rc = mdb_cursor_get( mvc, &key, NULL, MDB_GET_CURRENT );
                if (rc) {
-                       if (rc == MDB_NOTFOUND)
+                       /* no record or DB is empty */
+                       if (rc == MDB_NOTFOUND || rc == EINVAL)
                                rc = MDB_SUCCESS;
                        break;
                }