summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/ldb/common/ldb_explode_dn.c21
-rw-r--r--source4/lib/ldb/include/ldb_explode_dn.h9
2 files changed, 18 insertions, 12 deletions
diff --git a/source4/lib/ldb/common/ldb_explode_dn.c b/source4/lib/ldb/common/ldb_explode_dn.c
index db8e8f2a85..4e71bc70d1 100644
--- a/source4/lib/ldb/common/ldb_explode_dn.c
+++ b/source4/lib/ldb/common/ldb_explode_dn.c
@@ -386,10 +386,9 @@ ldb_explode_dn(void *mem_ctx,
dest++;
}
src = component->attributes[i]->rdn;
- do {
- *(dest++) = *(src++);
- } while(*src);
- *dest = '\0';
+
+ /* we are guaranteed to have enough space in dest */
+ strcpy(dest, src);
}
ldb_debug(mem_ctx,
@@ -434,15 +433,17 @@ ldb_explode_dn(void *mem_ctx,
/* copy the normalized components into the DN */
for (i = 0; i < dn->comp_num; i++) {
+
+ /* add a separator between DN components */
if (i != 0) {
- *dest = ',';
- dest++;
+ *dest++ = ',';
}
+
+ /* point to this component of the DN */
src = dn->components[i]->component;
- do {
- *(dest++) = *(src++);
- } while(*src);
- *dest = '\0';
+
+ /* we are guaranteed to have enough space in dest */
+ strcpy(dest, src);
}
ldb_debug(mem_ctx, LDB_DEBUG_TRACE, "dn: [%s]\n", dn->dn);
diff --git a/source4/lib/ldb/include/ldb_explode_dn.h b/source4/lib/ldb/include/ldb_explode_dn.h
index fb34be8b87..78768ebb80 100644
--- a/source4/lib/ldb/include/ldb_explode_dn.h
+++ b/source4/lib/ldb/include/ldb_explode_dn.h
@@ -32,7 +32,12 @@ struct ldb_dn_component {
};
struct ldb_dn {
- char *dn;
- int comp_num;
+ char * dn;
+ int comp_num;
struct ldb_dn_component ** components;
};
+
+
+extern struct ldb_dn *
+ldb_explode_dn(void *mem_ctx,
+ const char *orig_dn);