File pam_ldap-set_pam_user.dif of Package pam_ldap
Index: pam_ldap-180/pam_ldap.c
===================================================================
--- pam_ldap-180.orig/pam_ldap.c
+++ pam_ldap-180/pam_ldap.c
@@ -2682,7 +2682,13 @@ nxt:
return PAM_BUF_ERR;
}
- session->info->username = strdup (user);
+ rc = _get_string_value (session->ld, msg, session->conf->userattr,
+ &session->info->username);
+ if (rc != PAM_SUCCESS)
+ {
+ session->info->username = strdup (user);
+ }
+
if (session->info->username == NULL)
{
ldap_msgfree (res);
@@ -3363,6 +3369,13 @@ pam_sm_authenticate (pam_handle_t * pamh
pam_set_item (pamh, PAM_USER,
(void *) session->info->tmpluser);
}
+ else if (rc == PAM_SUCCESS && session->info->username != NULL)
+ {
+ (void) pam_set_data (pamh, PADL_LDAP_AUTH_DATA,
+ (void *) strdup (session->info->username),
+ _cleanup_data);
+ rc = pam_set_item (pamh, PAM_USER, (void *) session->info->username);
+ }
return rc;
}
}
@@ -3393,6 +3406,13 @@ pam_sm_authenticate (pam_handle_t * pamh
_cleanup_data);
rc = pam_set_item (pamh, PAM_USER, (void *) session->info->tmpluser);
}
+ else if (rc == PAM_SUCCESS && session->info->username != NULL)
+ {
+ (void) pam_set_data (pamh, PADL_LDAP_AUTH_DATA,
+ (void *) strdup (session->info->username),
+ _cleanup_data);
+ rc = pam_set_item (pamh, PAM_USER, (void *) session->info->username);
+ }
return rc;
}