diff options
Diffstat (limited to 'src/providers/proxy/proxy_child.c')
-rw-r--r-- | src/providers/proxy/proxy_child.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c index c52d482e2..efd304d5a 100644 --- a/src/providers/proxy/proxy_child.c +++ b/src/providers/proxy/proxy_child.c @@ -195,6 +195,7 @@ static errno_t call_pam_stack(const char *pam_target, struct pam_data *pd) pam_handle_t *pamh=NULL; struct authtok_conv *auth_data; struct pam_conv conv; + char *shortname; if (pd->cmd == SSS_PAM_CHAUTHTOK) { conv.conv=proxy_chauthtok_conv; @@ -222,7 +223,12 @@ static errno_t call_pam_stack(const char *pam_target, struct pam_data *pd) conv.appdata_ptr=auth_data; - ret = pam_start(pam_target, pd->user, &conv, &pamh); + ret = sss_parse_internal_fqname(auth_data, pd->user, &shortname, NULL); + if (ret != EOK) { + goto fail; + } + + ret = pam_start(pam_target, shortname, &conv, &pamh); if (ret == PAM_SUCCESS) { DEBUG(SSSDBG_TRACE_LIBS, "Pam transaction started with service name [%s].\n", |