From: Andrew Bartlett Date: Wed, 19 Nov 2008 21:05:33 +0000 (+1100) Subject: To avoid confusion, create a struct ldb_dn_extended_component X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=d93bb3e93c912845e8c62586def45313ed8328c2;p=abartlet%2Fsamba.git%2F.git To avoid confusion, create a struct ldb_dn_extended_component This is instead of using struct ldb_dn_component and just ignoring the casefolded elements. Andrew Bartlett --- diff --git a/source4/lib/ldb/common/ldb_dn.c b/source4/lib/ldb/common/ldb_dn.c index 58bd92027be..1bed218d172 100644 --- a/source4/lib/ldb/common/ldb_dn.c +++ b/source4/lib/ldb/common/ldb_dn.c @@ -52,6 +52,12 @@ struct ldb_dn_component { struct ldb_val cf_value; }; +struct ldb_dn_extended_component { + + char *name; + struct ldb_val value; +}; + struct ldb_dn { struct ldb_context *ldb; @@ -70,7 +76,7 @@ struct ldb_dn { struct ldb_dn_component *components; unsigned int extended_comp_num; - struct ldb_dn_component *extended_components; + struct ldb_dn_extended_component *extended_components; }; /* strdn may be NULL */ @@ -330,7 +336,7 @@ static bool ldb_dn_explode(struct ldb_dn *dn) dn->extended_components = talloc_realloc(dn, dn->extended_components, - struct ldb_dn_component, + struct ldb_dn_extended_component, dn->extended_comp_num + 1); if ( ! dn->extended_components) { /* ouch ! */ @@ -1059,6 +1065,30 @@ static struct ldb_dn_component ldb_dn_copy_component(void *mem_ctx, struct ldb_d return dst; } +static struct ldb_dn_extended_component ldb_dn_extended_copy_component(void *mem_ctx, struct ldb_dn_extended_component *src) +{ + struct ldb_dn_extended_component dst; + + memset(&dst, 0, sizeof(dst)); + + if (src == NULL) { + return dst; + } + + dst.value = ldb_val_dup(mem_ctx, &(src->value)); + if (dst.value.data == NULL) { + return dst; + } + + dst.name = talloc_strdup(mem_ctx, src->name); + if (dst.name == NULL) { + LDB_FREE(dst.value.data); + return dst; + } + + return dst; +} + struct ldb_dn *ldb_dn_copy(void *mem_ctx, struct ldb_dn *dn) { struct ldb_dn *new_dn; @@ -1095,14 +1125,14 @@ struct ldb_dn *ldb_dn_copy(void *mem_ctx, struct ldb_dn *dn) if (dn->extended_components) { int i; - new_dn->extended_components = talloc_zero_array(new_dn, struct ldb_dn_component, dn->extended_comp_num); + new_dn->extended_components = talloc_zero_array(new_dn, struct ldb_dn_extended_component, dn->extended_comp_num); if ( ! new_dn->extended_components) { talloc_free(new_dn); return NULL; } for (i = 0; i < dn->extended_comp_num; i++) { - new_dn->extended_components[i] = ldb_dn_copy_component(new_dn->extended_components, &dn->extended_components[i]); + new_dn->extended_components[i] = ldb_dn_extended_copy_component(new_dn->extended_components, &dn->extended_components[i]); if ( ! new_dn->extended_components[i].value.data) { talloc_free(new_dn); return NULL; @@ -1663,7 +1693,7 @@ const struct ldb_val *ldb_dn_get_extended_component(struct ldb_dn *dn, const cha int ldb_dn_set_extended_component(struct ldb_dn *dn, const char *name, const struct ldb_val *val) { - struct ldb_dn_component *p; + struct ldb_dn_extended_component *p; int i; if ( ! ldb_dn_validate(dn)) { @@ -1691,7 +1721,7 @@ int ldb_dn_set_extended_component(struct ldb_dn *dn, const char *name, const str dn->extended_components = talloc_realloc(dn, dn->extended_components, - struct ldb_dn_component, + struct ldb_dn_extended_component, dn->extended_comp_num); if (!dn->extended_components) { dn->invalid = true; @@ -1705,7 +1735,7 @@ int ldb_dn_set_extended_component(struct ldb_dn *dn, const char *name, const str p = dn->extended_components = talloc_realloc(dn, dn->extended_components, - struct ldb_dn_component, + struct ldb_dn_extended_component, dn->extended_comp_num + 1); if (!dn->extended_components) { dn->invalid = true;