diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-05-28 21:11:21 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-07 00:14:13 +0200 |
commit | c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3 (patch) | |
tree | 07a9ef7e9cbde7dac5f77393d810a639dcdfb3a9 /src/util | |
parent | ca344fdecdf127c80ad1074047aeba21e1165313 (diff) | |
download | sssd-c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3.tar.gz sssd-c51f7a064b0d7ef86110bdeb6dc09fa6c08be7d3.tar.bz2 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.c | 35 | ||||
-rw-r--r-- | src/util/util.h | 2 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/util/util.c b/src/util/util.c index ba85e0da..63cffe85 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 87a4061e..e55c0b4d 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, |