summaryrefslogtreecommitdiffstats
path: root/src/responder/pam
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2012-09-21 18:30:30 +0200
committerJakub Hrozek <jhrozek@redhat.com>2012-10-01 21:45:21 +0200
commit1542b85f13d72329685bdd97aa879c36d11f81be (patch)
treef8623dd7d926741197ec488d5a5ff047c57e2222 /src/responder/pam
parent00516601e579f2ae4a287332966860cb0af152f9 (diff)
downloadsssd-1542b85f13d72329685bdd97aa879c36d11f81be.tar.gz
sssd-1542b85f13d72329685bdd97aa879c36d11f81be.tar.xz
sssd-1542b85f13d72329685bdd97aa879c36d11f81be.zip
Add new option default_domain_suffix
Diffstat (limited to 'src/responder/pam')
-rw-r--r--src/responder/pam/pamsrv_cmd.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c
index 07fa96ab8..2b20544d1 100644
--- a/src/responder/pam/pamsrv_cmd.c
+++ b/src/responder/pam/pamsrv_cmd.c
@@ -119,8 +119,9 @@ static int pd_set_primary_name(const struct ldb_message *msg,struct pam_data *pd
}
static int pam_parse_in_data_v2(struct sss_domain_info *domains,
- struct pam_data *pd,
- uint8_t *body, size_t blen)
+ const char *default_domain,
+ struct pam_data *pd,
+ uint8_t *body, size_t blen)
{
size_t c;
uint32_t type;
@@ -156,7 +157,8 @@ static int pam_parse_in_data_v2(struct sss_domain_info *domains,
ret = extract_string(&pam_user, size, body, blen, &c);
if (ret != EOK) return ret;
- ret = sss_parse_name_for_domains(pd, domains, pam_user,
+ ret = sss_parse_name_for_domains(pd, domains,
+ default_domain, pam_user,
&pd->domain, &pd->user);
if (ret != EOK) return ret;
break;
@@ -209,12 +211,13 @@ static int pam_parse_in_data_v2(struct sss_domain_info *domains,
}
static int pam_parse_in_data_v3(struct sss_domain_info *domains,
- struct pam_data *pd,
- uint8_t *body, size_t blen)
+ const char *default_domain,
+ struct pam_data *pd,
+ uint8_t *body, size_t blen)
{
int ret;
- ret = pam_parse_in_data_v2(domains, pd, body, blen);
+ ret = pam_parse_in_data_v2(domains, default_domain, pd, body, blen);
if (ret != EOK) {
DEBUG(1, ("pam_parse_in_data_v2 failed.\n"));
return ret;
@@ -229,6 +232,7 @@ static int pam_parse_in_data_v3(struct sss_domain_info *domains,
}
static int pam_parse_in_data(struct sss_domain_info *domains,
+ const char *default_domain,
struct pam_data *pd,
uint8_t *body, size_t blen)
{
@@ -244,7 +248,8 @@ static int pam_parse_in_data(struct sss_domain_info *domains,
for (start = end; end < last; end++) if (body[end] == '\0') break;
if (body[end++] != '\0') return EINVAL;
- ret = sss_parse_name_for_domains(pd, domains, (char *)&body[start], &pd->domain, &pd->user);
+ ret = sss_parse_name_for_domains(pd, domains, default_domain,
+ (char *)&body[start], &pd->domain, &pd->user);
if (ret != EOK) return ret;
for (start = end; end < last; end++) if (body[end] == '\0') break;
@@ -997,13 +1002,19 @@ errno_t pam_forwarder_parse_data(struct cli_ctx *cctx, struct pam_data *pd)
switch (cctx->cli_protocol_version->version) {
case 1:
- ret = pam_parse_in_data(cctx->rctx->domains, pd, body, blen);
+ ret = pam_parse_in_data(cctx->rctx->domains,
+ cctx->rctx->default_domain, pd,
+ body, blen);
break;
case 2:
- ret = pam_parse_in_data_v2(cctx->rctx->domains, pd, body, blen);
+ ret = pam_parse_in_data_v2(cctx->rctx->domains,
+ cctx->rctx->default_domain, pd,
+ body, blen);
break;
case 3:
- ret = pam_parse_in_data_v3(cctx->rctx->domains, pd, body, blen);
+ ret = pam_parse_in_data_v3(cctx->rctx->domains,
+ cctx->rctx->default_domain, pd,
+ body, blen);
break;
default:
DEBUG(1, ("Illegal protocol version [%d].\n",