ldb: don't shortcut dn comparison for mismatched special DNs
authorAndrew Tridgell <tridge@samba.org>
Wed, 13 Jul 2011 02:24:25 +0000 (12:24 +1000)
committerAndrew Tridgell <tridge@samba.org>
Wed, 13 Jul 2011 10:51:05 +0000 (12:51 +0200)
DNs that start with @ can't be compared via string comparison with
normal DNs

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

lib/ldb/common/ldb_dn.c

index cd9055da9284315f65e190427c433b0af859dbfe..6b1ef0306f23e00633f015c013a4762a2b9f2349 100644 (file)
@@ -1034,7 +1034,7 @@ int ldb_dn_compare_base(struct ldb_dn *base, struct ldb_dn *dn)
        if ( ! dn || dn->invalid) return -1;
 
        if (( ! base->valid_case) || ( ! dn->valid_case)) {
-               if (base->linearized && dn->linearized) {
+               if (base->linearized && dn->linearized && dn->special == base->special) {
                        /* try with a normal compare first, if we are lucky
                         * we will avoid exploding and casfolding */
                        int dif;