summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/ldb/common/ldb_msg.c13
-rw-r--r--source4/lib/ldb/include/ldb.h4
2 files changed, 17 insertions, 0 deletions
diff --git a/source4/lib/ldb/common/ldb_msg.c b/source4/lib/ldb/common/ldb_msg.c
index 254775cfbc..2fe9e39e68 100644
--- a/source4/lib/ldb/common/ldb_msg.c
+++ b/source4/lib/ldb/common/ldb_msg.c
@@ -377,6 +377,19 @@ const char *ldb_msg_find_string(const struct ldb_message *msg,
return (const char *)v->data;
}
+struct ldb_dn *ldb_msg_find_dn(void *mem_ctx,
+ const struct ldb_message *msg,
+ const char *attr_name)
+{
+ const struct ldb_val *v;
+
+ v = ldb_msg_find_ldb_val(msg, attr_name);
+ if (!v || !v->data) {
+ return NULL;
+ }
+ return ldb_dn_explode(mem_ctx, (const char *)v->data);
+}
+
/*
sort the elements of a message by name
*/
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index 5a49ae357f..e560068d0c 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -1269,6 +1269,10 @@ const char *ldb_msg_find_string(const struct ldb_message *msg,
const char *attr_name,
const char *default_value);
+struct ldb_dn *ldb_msg_find_dn(void *mem_ctx,
+ const struct ldb_message *msg,
+ const char *attr_name);
+
void ldb_msg_sort_elements(struct ldb_message *msg);
struct ldb_message *ldb_msg_copy_shallow(void *mem_ctx,