diff options
author | Stefan Metzmacher <metze@samba.org> | 2006-11-25 14:59:59 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:28:32 -0500 |
commit | 6d074bcd4b869b3ff65cb999bf3c10d4affa17f7 (patch) | |
tree | 69bec37f6f04952b00930abbeccb1c6ace45c601 | |
parent | 2ad51046e3becd5257d7bb25c0dc43be13172809 (diff) | |
download | samba-6d074bcd4b869b3ff65cb999bf3c10d4affa17f7.tar.gz samba-6d074bcd4b869b3ff65cb999bf3c10d4affa17f7.tar.bz2 samba-6d074bcd4b869b3ff65cb999bf3c10d4affa17f7.zip |
r19885: special dn's were not casefolded before rev 19831,
act like this again...
also when we already have a casefoled value we should not call ldb_dn_casefold_internal()
metze
(This used to be commit cbf4eb16725992bfdfa5a334e0e5547e6df568e6)
-rw-r--r-- | source4/lib/ldb/common/ldb_dn.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/source4/lib/ldb/common/ldb_dn.c b/source4/lib/ldb/common/ldb_dn.c index 1c535fda33..3f66943ad2 100644 --- a/source4/lib/ldb/common/ldb_dn.c +++ b/source4/lib/ldb/common/ldb_dn.c @@ -628,24 +628,22 @@ const char *ldb_dn_get_casefold(struct ldb_dn *dn) int i, len; char *d, *n; + if (dn->casefold) return dn->casefold; + + if (dn->special) { + dn->casefold = talloc_strdup(dn, dn->linearized); + if (!dn->casefold) return NULL; + dn->valid_case = true; + return dn->casefold; + } + if ( ! ldb_dn_casefold_internal(dn)) { return NULL; } - if (dn->casefold) return dn->casefold; - if (dn->comp_num == 0) { - if (dn->special) { - len = strlen(dn->linearized); - dn->casefold = talloc_array(dn, char, len * 3 + 1); - if ( ! dn->casefold) return NULL; - ldb_dn_escape_internal(dn->casefold, dn->linearized, len); - /* don't waste more memory than necessary */ - dn->casefold = talloc_realloc(dn, dn->casefold, char, strlen(dn->casefold) + 1); - } else { - dn->casefold = talloc_strdup(dn, ""); - if ( ! dn->casefold) return NULL; - } + dn->casefold = talloc_strdup(dn, ""); + if (!dn->casefold) return NULL; dn->valid_case = true; return dn->casefold; } |