]> git.sur5r.net Git - openldap/commitdiff
ITS#4186 hdb_idl_append() must not alter the tmp input.
authorHoward Chu <hyc@openldap.org>
Sun, 20 Nov 2005 22:02:41 +0000 (22:02 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 20 Nov 2005 22:02:41 +0000 (22:02 +0000)
servers/slapd/back-bdb/idl.c

index d43d210e33b90239c6944c2c777c3e01d205d181..c29d9228ce1200c8c082c619125a8cf0a8353b31 100644 (file)
@@ -1311,7 +1311,7 @@ int bdb_idl_append_one( ID *ids, ID id )
  */
 int bdb_idl_append( ID *a, ID *b )
 {
-       ID ida, idb, tmp;
+       ID ida, idb, tmp, swap = 0;
 
        if ( BDB_IDL_IS_ZERO( b ) ) {
                return 0;
@@ -1333,6 +1333,7 @@ int bdb_idl_append( ID *a, ID *b )
        }
 
        if ( b[0] > 1 && ida > idb ) {
+               swap = idb;
                a[a[0]] = idb;
                b[b[0]] = ida;
        }
@@ -1351,6 +1352,9 @@ int bdb_idl_append( ID *a, ID *b )
                AC_MEMCPY(a+a[0]+1, b+2, i * sizeof(ID));
                a[0] += i;
        }
+       if ( swap ) {
+               b[b[0]] = swap;
+       }
        return 0;
 }