From 2fdd65fdc1213547830da1ca416edbc877161599 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Wed, 21 Dec 2011 18:00:25 +0100 Subject: [PATCH 1/3] sss_get_cased_name utility function --- src/responder/nss/nsssrv_cmd.c | 9 +++------ src/responder/nss/nsssrv_netgroup.c | 9 ++++++--- src/responder/pam/pamsrv_cmd.c | 4 ++-- src/util/usertools.c | 9 +++++++++ src/util/util.h | 4 ++++ 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 0bd2f75ee32a10acbaa44709f05b5a7017811f3c..71c949f1d41a64782c8f1da8f3d4b2b2375c15bb 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -741,8 +741,7 @@ static int nss_cmd_getpwnam_search(struct nss_dom_ctx *dctx) dctx->domain = dom; talloc_free(name); - name = dom->case_sensitive ? talloc_strdup(dctx, cmdctx->name) : - sss_tc_utf8_str_tolower(dctx, cmdctx->name); + name = sss_get_cased_name(dctx, cmdctx->name, dom->case_sensitive); if (!name) return ENOMEM; /* verify this user has not yet been negatively cached, @@ -2033,8 +2032,7 @@ static int nss_cmd_getgrnam_search(struct nss_dom_ctx *dctx) dctx->domain = dom; talloc_free(name); - name = dom->case_sensitive ? talloc_strdup(dctx, cmdctx->name) : - sss_tc_utf8_str_tolower(dctx, cmdctx->name); + name = sss_get_cased_name(dctx, cmdctx->name, dom->case_sensitive); if (!name) return ENOMEM; /* verify this group has not yet been negatively cached, @@ -3104,8 +3102,7 @@ static int nss_cmd_initgroups_search(struct nss_dom_ctx *dctx) dctx->domain = dom; talloc_free(name); - name = dom->case_sensitive ? talloc_strdup(dctx, cmdctx->name) : - sss_tc_utf8_str_tolower(dctx, cmdctx->name); + name = sss_get_cased_name(dctx, cmdctx->name, dom->case_sensitive); if (!name) return ENOMEM; /* verify this user has not yet been negatively cached, diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 39ba4ff7a3ca8d48a88edea2e857df53a61e501c..1b089f71908e878ae72f20d975218c2a50d45cbb 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -402,9 +402,12 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx) step_ctx->dctx->domain = dom; talloc_free(name); - name = dom->case_sensitive ? \ - talloc_strdup(step_ctx, step_ctx->name) : - sss_tc_utf8_str_tolower(step_ctx, step_ctx->name); + name = sss_get_cased_name(step_ctx, step_ctx->name, + dom->case_sensitive); + if (!name) { + DEBUG(SSSDBG_CRIT_FAILURE, ("sss_get_cased_name failed\n")); + return ENOMEM; + } DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name)); diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c index ced9df0634459fc0b4a4d229183ef5300073f86f..3b2d509e237b12516e1234a34a8542ae09752c43 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -859,8 +859,8 @@ static int pam_check_user_search(struct pam_auth_req *preq) preq->domain = dom; talloc_free(name); - name = dom->case_sensitive ? talloc_strdup(preq, preq->pd->user) : - sss_tc_utf8_str_tolower(preq, preq->pd->user); + name = sss_get_cased_name(preq, preq->pd->user, + dom->case_sensitive); if (!name) { return ENOMEM; } diff --git a/src/util/usertools.c b/src/util/usertools.c index 738ac62d78ea1cee409aa2d228060c75025a87e7..64e8b1037fca322492e2d7c55152a7b07592df85 100644 --- a/src/util/usertools.c +++ b/src/util/usertools.c @@ -173,3 +173,12 @@ int sss_parse_name(TALLOC_CTX *memctx, return EOK; } + +char * +sss_get_cased_name(TALLOC_CTX *mem_ctx, + const char *orig_name, + bool case_sensitive) +{ + return case_sensitive ? talloc_strdup(mem_ctx, orig_name) : + sss_tc_utf8_str_tolower(mem_ctx, orig_name); +} diff --git a/src/util/util.h b/src/util/util.h index 4ff112b7556a6634961c41edaf6d95d42f29c5d4..5428f0af60d17e066dd098aa1026287f0dc89be8 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -401,6 +401,10 @@ int sss_parse_name(TALLOC_CTX *memctx, struct sss_names_ctx *snctx, const char *orig, char **domain, char **name); +char * +sss_get_cased_name(TALLOC_CTX *mem_ctx, const char *orig_name, + bool case_sensitive); + /* from backup-file.c */ int backup_file(const char *src, int dbglvl); -- 1.7.6.4