summaryrefslogtreecommitdiff
path: root/src/db
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2011-12-05 15:51:35 +0100
committerStephen Gallagher <sgallagh@redhat.com>2011-12-16 14:46:17 -0500
commit75a43c7f91fcb27dee75976cc7c094dd5fa589f6 (patch)
treea1c05b7934e12f3bf8a561eae2d33a1f7b09e97e /src/db
parent4e9631a9f1ae87317eef53145622099c46196b56 (diff)
downloadsssd-75a43c7f91fcb27dee75976cc7c094dd5fa589f6.tar.gz
sssd-75a43c7f91fcb27dee75976cc7c094dd5fa589f6.tar.bz2
sssd-75a43c7f91fcb27dee75976cc7c094dd5fa589f6.zip
Export the function to convert ldb_result to sysdb_attrs
It will be reused later in the sudo responder
Diffstat (limited to 'src/db')
-rw-r--r--src/db/sysdb.c29
-rw-r--r--src/db/sysdb.h4
2 files changed, 33 insertions, 0 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c
index 034e5da0..8ca4c17f 100644
--- a/src/db/sysdb.c
+++ b/src/db/sysdb.c
@@ -1765,3 +1765,32 @@ done:
talloc_free(tmp_ctx);
return ret;
}
+
+errno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count,
+ struct ldb_message **msgs,
+ struct sysdb_attrs ***attrs)
+{
+ int i;
+ struct sysdb_attrs **a;
+
+ a = talloc_array(mem_ctx, struct sysdb_attrs *, count);
+ if (a == NULL) {
+ DEBUG(1, ("talloc_array failed.\n"));
+ return ENOMEM;
+ }
+
+ for (i = 0; i < count; i++) {
+ a[i] = talloc(a, struct sysdb_attrs);
+ if (a[i] == NULL) {
+ DEBUG(1, ("talloc_array failed.\n"));
+ talloc_free(a);
+ return ENOMEM;
+ }
+ a[i]->num = msgs[i]->num_elements;
+ a[i]->a = talloc_steal(a[i], msgs[i]->elements);
+ }
+
+ *attrs = a;
+
+ return EOK;
+}
diff --git a/src/db/sysdb.h b/src/db/sysdb.h
index 6094a4aa..3d2a7682 100644
--- a/src/db/sysdb.h
+++ b/src/db/sysdb.h
@@ -254,6 +254,10 @@ errno_t sysdb_get_real_name(TALLOC_CTX *mem_ctx,
const char *name,
const char **_cname);
+errno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count,
+ struct ldb_message **msgs,
+ struct sysdb_attrs ***attrs);
+
/* convert an ldb error into an errno error */
int sysdb_error_to_errno(int ldberr);