summaryrefslogtreecommitdiff
path: root/source4/lib/ldb/tools/ldbdel.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/ldb/tools/ldbdel.c')
-rw-r--r--source4/lib/ldb/tools/ldbdel.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source4/lib/ldb/tools/ldbdel.c b/source4/lib/ldb/tools/ldbdel.c
index fdb1f7ef3b..6082931e22 100644
--- a/source4/lib/ldb/tools/ldbdel.c
+++ b/source4/lib/ldb/tools/ldbdel.c
@@ -41,7 +41,7 @@
#include "system/filesys.h"
#endif
-static int ldb_delete_recursive(struct ldb_context *ldb, const char *dn)
+static int ldb_delete_recursive(struct ldb_context *ldb, const struct ldb_dn *dn)
{
int ret, i, total=0;
const char *attrs[] = { "dn", NULL };
@@ -94,7 +94,13 @@ static void usage(void)
}
for (i=0;i<options->argc;i++) {
- const char *dn = options->argv[i];
+ const struct ldb_dn *dn;
+
+ dn = ldb_dn_explode(ldb, options->argv[i]);
+ if (dn == NULL) {
+ printf("Invalid DN format\n");
+ exit(1);
+ }
if (options->recursive) {
ret = ldb_delete_recursive(ldb, dn);
} else {
@@ -104,7 +110,9 @@ static void usage(void)
}
}
if (ret != 0) {
- printf("delete of '%s' failed - %s\n", dn, ldb_errstring(ldb));
+ printf("delete of '%s' failed - %s\n",
+ ldb_dn_linearize(ldb, dn),
+ ldb_errstring(ldb));
}
}