diff options
Diffstat (limited to 'pam_regex/pam_regex.c')
-rw-r--r-- | pam_regex/pam_regex.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/pam_regex/pam_regex.c b/pam_regex/pam_regex.c index 95324c0..0c3737b 100644 --- a/pam_regex/pam_regex.c +++ b/pam_regex/pam_regex.c @@ -114,3 +114,2 @@ pam_sm_authenticate(pam_handle_t *pamh, - gray_pam_init(PAM_AUTHINFO_UNAVAIL); @@ -131,10 +130,19 @@ pam_sm_authenticate(pam_handle_t *pamh, - gray_set_transform_expr(transform); + retval = gray_set_transform_expr(transform); + if (retval != PAM_SUCCESS) + return retval; slist = gray_slist_create(); - gray_transform_name_to_slist(slist, name, &newname); - DEBUG(90,("new name: %s", newname)); - MAKE_STR(pamh, newname, name); - retval = pam_set_item(pamh, PAM_USER, name); - gray_slist_free(&slist); - gray_free_transform_expr(); + if (!slist) + retval = errno_to_pam(errno); + else { + retval = gray_transform_name_to_slist(slist, name, + &newname); + if (retval == PAM_SUCCESS) { + DEBUG(90,("new name: %s", newname)); + MAKE_STR(pamh, newname, name); + retval = pam_set_item(pamh, PAM_USER, name); + gray_slist_free(&slist); + } + gray_free_transform_expr(); + } if (retval != PAM_SUCCESS) { @@ -147,3 +155,3 @@ pam_sm_authenticate(pam_handle_t *pamh, for (;;) { - if (rc = regcomp(&rx, regex, regex_flags)) { + if ((rc = regcomp(&rx, regex, regex_flags)) != 0) { char errbuf[512]; |