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/util/sss_nss.c | 43 +++++++++++++++++++++++++------------------ src/util/sss_nss.h | 12 +++++++++--- 2 files changed, 34 insertions(+), 21 deletions(-) (limited to 'src/util') diff --git a/src/util/sss_nss.c b/src/util/sss_nss.c index 406c95cd0..25a030c3f 100644 --- a/src/util/sss_nss.c +++ b/src/util/sss_nss.c @@ -23,9 +23,7 @@ #include "util/sss_nss.h" 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 *flatname) + struct sss_nss_homedir_ctx *homedir_ctx) { char *copy; char *p; @@ -40,6 +38,11 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, return NULL; } + if (homedir_ctx == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "Missing home directory data.\n"); + return NULL; + } + tmp_ctx = talloc_new(NULL); if (!tmp_ctx) return NULL; @@ -66,67 +69,71 @@ char *expand_homedir_template(TALLOC_CTX *mem_ctx, const char *template, } switch( *n ) { case 'u': - if (username == NULL) { - DEBUG(SSSDBG_CRIT_FAILURE, "Cannot expand user name template " - "because user name is empty.\n"); + if (homedir_ctx->username == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, + "Cannot expand user name template because user name " + "is empty.\n"); goto done; } result = talloc_asprintf_append(result, "%s%s", p, - username); + homedir_ctx->username); break; case 'U': - if (uid == 0) { + if (homedir_ctx->uid == 0) { DEBUG(SSSDBG_CRIT_FAILURE, "Cannot expand uid template " "because uid is invalid.\n"); goto done; } result = talloc_asprintf_append(result, "%s%d", p, - uid); + homedir_ctx->uid); break; case 'd': - if (domain == NULL) { + if (homedir_ctx->domain == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Cannot expand domain name " "template because domain name " "is empty.\n"); goto done; } result = talloc_asprintf_append(result, "%s%s", p, - domain); + homedir_ctx->domain); break; case 'f': - if (domain == NULL || username == NULL) { + if (homedir_ctx->domain == NULL + || homedir_ctx->username == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Cannot expand fully qualified " "name template because domain " "or user name is empty.\n"); goto done; } result = talloc_asprintf_append(result, "%s%s@%s", p, - username, domain); + homedir_ctx->username, + homedir_ctx->domain); break; case 'o': - if (original == NULL) { + if (homedir_ctx->original == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Original home directory for %s is not available, " - "using empty string\n", username); + "using empty string\n", homedir_ctx->username); orig = ""; } else { - orig = original; + orig = homedir_ctx->original; } result = talloc_asprintf_append(result, "%s%s", p, orig); break; case 'F': - if (flatname == NULL) { + if (homedir_ctx->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); + result = talloc_asprintf_append(result, "%s%s", p, + homedir_ctx->flatname); break; case '%': diff --git a/src/util/sss_nss.h b/src/util/sss_nss.h index 6dcdbaef3..771b9ce58 100644 --- a/src/util/sss_nss.h +++ b/src/util/sss_nss.h @@ -25,8 +25,14 @@ #include #include +struct sss_nss_homedir_ctx { + const char *username; + uint32_t uid; + const char *original; + const char *domain; + const char *flatname; +}; + 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 *flatname); + struct sss_nss_homedir_ctx *homedir_ctx); #endif -- cgit