summaryrefslogtreecommitdiffstats
path: root/server/db/sysdb.c
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2009-08-14 13:51:02 -0400
committerSimo Sorce <ssorce@redhat.com>2009-08-27 09:35:53 -0400
commit3a87621a3eeb76ce6ac3b18877874141c2dc102e (patch)
tree4a484a2d22e87b784ce407870601a79500f528ff /server/db/sysdb.c
parenta2b19835fb7562ccf8f204b770dfbd23bc29aa24 (diff)
downloadsssd-3a87621a3eeb76ce6ac3b18877874141c2dc102e.tar.gz
sssd-3a87621a3eeb76ce6ac3b18877874141c2dc102e.tar.xz
sssd-3a87621a3eeb76ce6ac3b18877874141c2dc102e.zip
Always save using member/memberOf
First pass to remove the legacy option and make it just a property of the provider
Diffstat (limited to 'server/db/sysdb.c')
-rw-r--r--server/db/sysdb.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/server/db/sysdb.c b/server/db/sysdb.c
index 0cac339ed..00657f0b8 100644
--- a/server/db/sysdb.c
+++ b/server/db/sysdb.c
@@ -121,6 +121,30 @@ int sysdb_attrs_add_string(struct sysdb_attrs *attrs,
return sysdb_attrs_add_val(attrs, name, &v);
}
+int sysdb_attrs_steal_string(struct sysdb_attrs *attrs,
+ const char *name, char *str)
+{
+ struct ldb_message_element *el = NULL;
+ struct ldb_val *vals;
+ int ret;
+
+ ret = sysdb_attrs_get_el(attrs, name, &el);
+
+ vals = talloc_realloc(attrs->a, el->values,
+ struct ldb_val, el->num_values+1);
+ if (!vals) return ENOMEM;
+ el->values = vals;
+
+ /* now steal and assign the string */
+ talloc_steal(el->values, str);
+
+ el->values[el->num_values].data = (uint8_t *)str;
+ el->values[el->num_values].length = strlen(str);
+ el->num_values++;
+
+ return EOK;
+}
+
int sysdb_attrs_add_long(struct sysdb_attrs *attrs,
const char *name, long value)
{