summaryrefslogtreecommitdiffstats
path: root/src/util/usertools.c
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2016-06-13 17:06:09 +0200
committerJakub Hrozek <jhrozek@redhat.com>2016-07-06 17:32:58 +0200
commit4175bc7a7b8ebc663af47148e5ec9c37828cbec7 (patch)
treebed88e49c751d0add559c50df53bfec47a7effae /src/util/usertools.c
parentc7c1bb2be5224c7d997caf2acf1d615f61cbcb15 (diff)
downloadsssd-4175bc7a7b8ebc663af47148e5ec9c37828cbec7.tar.gz
sssd-4175bc7a7b8ebc663af47148e5ec9c37828cbec7.tar.xz
sssd-4175bc7a7b8ebc663af47148e5ec9c37828cbec7.zip
UTIL: Add a utility function to create a list of qualified names
Adds a convenience wrapper around sss_create_fqname that qualifies a list of names into the format used internally in sssd.
Diffstat (limited to 'src/util/usertools.c')
-rw-r--r--src/util/usertools.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/util/usertools.c b/src/util/usertools.c
index 44a56ed97..ee2e86264 100644
--- a/src/util/usertools.c
+++ b/src/util/usertools.c
@@ -797,3 +797,37 @@ char *sss_create_internal_fqname(TALLOC_CTX *mem_ctx,
done:
return fqname;
}
+
+/* Creates a list of internal fqnames in format shortname@domname.
+ * The domain portion is lowercased. */
+char **sss_create_internal_fqname_list(TALLOC_CTX *mem_ctx,
+ const char * const *shortname_list,
+ const char *dom_name)
+{
+ char **fqname_list = NULL;
+ size_t c;
+
+ if (shortname_list == NULL || dom_name == NULL) {
+ /* Avoid allocating null@null */
+ return NULL;
+ }
+
+ for (c = 0; shortname_list[c] != NULL; c++);
+ fqname_list = talloc_zero_array(mem_ctx, char *, c+1);
+ if (fqname_list == NULL) {
+ talloc_free(fqname_list);
+ return NULL;
+ }
+
+ for (size_t i = 0; shortname_list[i] != NULL; i++) {
+ fqname_list[i] = sss_create_internal_fqname(fqname_list,
+ shortname_list[i],
+ dom_name);
+ if (fqname_list == NULL) {
+ talloc_free(fqname_list);
+ return NULL;
+ }
+ }
+
+ return fqname_list;
+}