summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-05-28 21:11:21 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-06-07 00:14:13 +0200
commitc51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3 (patch)
tree07a9ef7e9cbde7dac5f77393d810a639dcdfb3a9 /src/util
parentca344fdecdf127c80ad1074047aeba21e1165313 (diff)
downloadsssd-c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3.tar.gz
sssd-c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3.tar.xz
sssd-c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3.zip
Move domain_to_basedn outside IPA subtree
The utility function will be reused to guess search base from the base DN of AD trusted domains.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/util.c35
-rw-r--r--src/util/util.h2
2 files changed, 37 insertions, 0 deletions
diff --git a/src/util/util.c b/src/util/util.c
index ba85e0da2..63cffe85e 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -688,3 +688,38 @@ void safezero(void *data, size_t size)
*p++ = 0;
}
}
+
+int domain_to_basedn(TALLOC_CTX *memctx, const char *domain, char **basedn)
+{
+ const char *s;
+ char *dn;
+ char *p;
+ int l;
+
+ if (!domain || !basedn) {
+ return EINVAL;
+ }
+
+ s = domain;
+ dn = talloc_strdup(memctx, "dc=");
+
+ while ((p = strchr(s, '.'))) {
+ l = p - s;
+ dn = talloc_asprintf_append_buffer(dn, "%.*s,dc=", l, s);
+ if (!dn) {
+ return ENOMEM;
+ }
+ s = p + 1;
+ }
+ dn = talloc_strdup_append_buffer(dn, s);
+ if (!dn) {
+ return ENOMEM;
+ }
+
+ for (p=dn; *p; ++p) {
+ *p = tolower(*p);
+ }
+
+ *basedn = dn;
+ return EOK;
+}
diff --git a/src/util/util.h b/src/util/util.h
index 87a4061e6..e55c0b4d3 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -516,6 +516,8 @@ bool string_in_list(const char *string, char **list, bool case_sensitive);
*/
void safezero(void *data, size_t size);
+int domain_to_basedn(TALLOC_CTX *memctx, const char *domain, char **basedn);
+
/* from nscd.c */
enum nscd_db {
NSCD_DB_PASSWD,