From 5cd660aaa885bca95ac3dca660bb77e5786d5f8e Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Mon, 2 Dec 2013 13:03:33 +0100 Subject: NSS: Refactor expand_homedir_template Function expand_homedir_template had lot of parameters. After adding new expand option, all function call should be rewritten, (usually argument NULL will be added) This patch wraps all necessary arguments to structure. --- src/providers/ipa/ipa_s2n_exop.c | 17 ++++++++++------- src/providers/ipa/ipa_subdomains_id.c | 23 ++++++++++++++--------- 2 files changed, 24 insertions(+), 16 deletions(-) (limited to 'src/providers/ipa') diff --git a/src/providers/ipa/ipa_s2n_exop.c b/src/providers/ipa/ipa_s2n_exop.c index 59a99061a..82beb3658 100644 --- a/src/providers/ipa/ipa_s2n_exop.c +++ b/src/providers/ipa/ipa_s2n_exop.c @@ -648,6 +648,7 @@ static void ipa_s2n_get_user_done(struct tevent_req *subreq) struct resp_attrs *simple_attrs = NULL; time_t now; uint64_t timeout = 10*60*60; /* FIXME: find a better timeout ! */ + struct sss_nss_homedir_ctx homedir_ctx; const char *homedir = NULL; struct sysdb_attrs *user_attrs = NULL; struct sysdb_attrs *group_attrs = NULL; @@ -738,13 +739,15 @@ static void ipa_s2n_get_user_done(struct tevent_req *subreq) switch (attrs->response_type) { case RESP_USER: if (state->dom->subdomain_homedir) { - homedir = expand_homedir_template(state, - state->dom->subdomain_homedir, - attrs->a.user.pw_name, - attrs->a.user.pw_uid, - NULL, - state->dom->name, - state->dom->flat_name); + ZERO_STRUCT(homedir_ctx); + homedir_ctx.username = attrs->a.user.pw_name; + homedir_ctx.uid = attrs->a.user.pw_uid; + homedir_ctx.domain = state->dom->name; + homedir_ctx.flatname = state->dom->flat_name; + + homedir = expand_homedir_template(state, + state->dom->subdomain_homedir, + &homedir_ctx); if (homedir == NULL) { ret = ENOMEM; goto done; diff --git a/src/providers/ipa/ipa_subdomains_id.c b/src/providers/ipa/ipa_subdomains_id.c index 21e9f85a1..8657f90fa 100644 --- a/src/providers/ipa/ipa_subdomains_id.c +++ b/src/providers/ipa/ipa_subdomains_id.c @@ -366,10 +366,10 @@ get_subdomain_homedir_of_user(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom, const char **_homedir) { errno_t ret; - char *name; - char *lc_name; + const char *name; const char *homedir; TALLOC_CTX *tmp_ctx; + struct sss_nss_homedir_ctx homedir_ctx; tmp_ctx = talloc_new(mem_ctx); if (tmp_ctx == NULL) { @@ -377,22 +377,27 @@ get_subdomain_homedir_of_user(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom, goto done; } - ret = sss_parse_name(tmp_ctx, dom->names, fqname, NULL, &name); + ZERO_STRUCT(homedir_ctx); + + homedir_ctx.uid = uid; + homedir_ctx.domain = dom->name; + homedir_ctx.flatname = dom->flat_name; + ret = sss_parse_name_const(tmp_ctx, dom->names, fqname, + NULL, &name); if (ret != EOK) { goto done; } /* To be compatible with the old winbind based user lookups and IPA * clients the user name in the home directory path will be lower-case. */ - lc_name = sss_tc_utf8_str_tolower(tmp_ctx, name); - if (lc_name == NULL) { - ret =ENOMEM; + homedir_ctx.username = sss_tc_utf8_str_tolower(tmp_ctx, name); + if (homedir_ctx.username == NULL) { + ret = ENOMEM; goto done; } - homedir = expand_homedir_template(tmp_ctx, dom->subdomain_homedir, lc_name, - uid, NULL, dom->name, dom->flat_name); - + homedir = expand_homedir_template(tmp_ctx, dom->subdomain_homedir, + &homedir_ctx); if (homedir == NULL) { DEBUG(SSSDBG_OP_FAILURE, "expand_homedir_template failed\n"); ret = ENOMEM; -- cgit