r19887: return "" string only if the dn is a valid one
authorSimo Sorce <idra@samba.org>
Sat, 25 Nov 2006 15:42:22 +0000 (15:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:28:32 +0000 (14:28 -0500)
source/lib/ldb/common/ldb_dn.c

index 3f66943ad22e7b4095718eb5af684b0475f38a75..38d9ea3aff44025d0ae39fdc7f99b53127ec3c01 100644 (file)
@@ -630,7 +630,7 @@ const char *ldb_dn_get_casefold(struct ldb_dn *dn)
 
        if (dn->casefold) return dn->casefold;
 
-       if (dn->special) {
+       if (dn->special) { 
                dn->casefold = talloc_strdup(dn, dn->linearized);
                if (!dn->casefold) return NULL;
                dn->valid_case = true;
@@ -642,10 +642,14 @@ const char *ldb_dn_get_casefold(struct ldb_dn *dn)
        }
 
        if (dn->comp_num == 0) {
-               dn->casefold = talloc_strdup(dn, "");
-               if (!dn->casefold) return NULL;
-               dn->valid_case = true;
-               return dn->casefold;
+               if (dn->linearized && dn->linearized[0] == '\0') {
+                       /* hmm a NULL dn, should we faild casefolding ? */
+                       dn->casefold = talloc_strdup(dn, "");
+                       return dn->casefold;
+               }
+               /* A DN must be NULL, special, or have components */
+               dn->invalid = true;
+               return NULL;
        }
 
        /* calculate maximum possible length of DN */