diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/sss_nss.c | 14 | ||||
-rw-r--r-- | src/util/sss_nss.h | 3 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/util/sss_nss.c b/src/util/sss_nss.c index ac36a9ba..2b733832 100644 --- a/src/util/sss_nss.c +++ b/src/util/sss_nss.c @@ -24,7 +24,8 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, const char *username, uint32_t uid, - const char *original, const char *domain) + const char *original, const char *domain, + const char *flatname) { char *copy; char *p; @@ -105,6 +106,7 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, result = talloc_asprintf_append(result, "%s%s@%s", p, username, domain); break; + case 'o': if (original == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, @@ -117,6 +119,16 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, result = talloc_asprintf_append(result, "%s%s", p, orig); break; + case 'F': + if (flatname == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, ("Cannot expand domain name " + "template because domain flat " + "name is empty.\n")); + goto done; + } + result = talloc_asprintf_append(result, "%s%s", p, flatname); + break; + case '%': result = talloc_asprintf_append(result, "%s%%", p); break; diff --git a/src/util/sss_nss.h b/src/util/sss_nss.h index 0520035f..6dcdbaef 100644 --- a/src/util/sss_nss.h +++ b/src/util/sss_nss.h @@ -27,5 +27,6 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, const char *username, uint32_t uid, - const char *original, const char *domain); + const char *original, const char *domain, + const char *flatname); #endif |