summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/responder/nss/nsssrv_cmd.c9
-rw-r--r--src/responder/nss/nsssrv_netgroup.c9
-rw-r--r--src/responder/pam/pamsrv_cmd.c4
-rw-r--r--src/util/usertools.c9
-rw-r--r--src/util/util.h4
5 files changed, 24 insertions, 11 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index 0bd2f75e..71c949f1 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 39ba4ff7..1b089f71 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 ced9df06..3b2d509e 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 738ac62d..64e8b103 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 4ff112b7..5428f0af 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);