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

index 216efa69dcdf5bb13120428210ee9fd892edfc2b..1f87aad3d07a7f51c9f04ba3ae6c914816b6bd14 100644 (file)
@@ -55,8 +55,6 @@ 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];
@@ -467,10 +465,13 @@ int mdb_id2entry_delete(
        MDB_dbi dbi = mdb->mi_id2entry;
        MDB_val key;
        MDB_cursor *mvc;
+       char kbuf[sizeof(ID) + sizeof(unsigned short)];
        int rc;
 
-       key.mv_data = &e->e_id;
-       key.mv_size = sizeof(ID);
+       memcpy( kbuf, &e->e_id, sizeof(ID) );
+       memset( kbuf+sizeof(ID), 0, sizeof(unsigned short) );
+       key.mv_data = kbuf;
+       key.mv_size = sizeof(kbuf);
 
        /* delete from database */
        rc = mdb_del( tid, dbi, &key, NULL );