summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2013-12-02 14:19:09 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-06-02 19:07:57 +0200
commitae0a5011e2644eaa482ea1b9e1451eff05c676b9 (patch)
tree5bd7d3a18835317192c9a05eeae6b3234104a489 /src/util
parent5cd660aaa885bca95ac3dca660bb77e5786d5f8e (diff)
downloadsssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.tar.gz
sssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.tar.xz
sssd-ae0a5011e2644eaa482ea1b9e1451eff05c676b9.zip
NSS: Add option to expand homedir template format
LDAP server can contain template for home directory instead of plain string. This patch adds new expand option "%H", which will be replaced with value from configuration option homedir_substring (from sssd.conf) Resolves: https://fedorahosted.org/sssd/ticket/1853
Diffstat (limited to 'src/util')
-rw-r--r--src/util/domain_info_utils.c1
-rw-r--r--src/util/sss_nss.c11
-rw-r--r--src/util/sss_nss.h1
3 files changed, 13 insertions, 0 deletions
diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c
index fc4287076..a0fb7b2ab 100644
--- a/src/util/domain_info_utils.c
+++ b/src/util/domain_info_utils.c
@@ -281,6 +281,7 @@ struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx,
dom->subdomain_homedir = parent->subdomain_homedir;
dom->override_shell = parent->override_shell;
dom->default_shell = parent->default_shell;
+ dom->homedir_substr = parent->homedir_substr;
if (parent->sysdb == NULL) {
DEBUG(SSSDBG_OP_FAILURE, "Missing sysdb context in parent domain.\n");
diff --git a/src/util/sss_nss.c b/src/util/sss_nss.c
index 25a030c3f..8cc1416d7 100644
--- a/src/util/sss_nss.c
+++ b/src/util/sss_nss.c
@@ -136,6 +136,17 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template,
homedir_ctx->flatname);
break;
+ case 'H':
+ if (homedir_ctx->config_homedir_substr == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "Cannot expand home directory substring template "
+ "substring is empty.\n");
+ goto done;
+ }
+ result = talloc_asprintf_append(result, "%s%s", p,
+ homedir_ctx->config_homedir_substr);
+ 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 771b9ce58..19bf26589 100644
--- a/src/util/sss_nss.h
+++ b/src/util/sss_nss.h
@@ -31,6 +31,7 @@ struct sss_nss_homedir_ctx {
const char *original;
const char *domain;
const char *flatname;
+ const char *config_homedir_substr;
};
char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template,