View | Details | Raw Unified | Return to bug 3210
Collapse All | Expand All

(-)a/auth-pam.c (-8 / +7 lines)
Lines 522-531 sshpam_thread(void *ctxtp) Link Here
522
	if (sshpam_err != PAM_SUCCESS)
522
	if (sshpam_err != PAM_SUCCESS)
523
		goto auth_fail;
523
		goto auth_fail;
524
524
525
	if (!do_pam_account()) {
525
	sshpam_err = do_pam_account();
526
		sshpam_err = PAM_ACCT_EXPIRED;
526
	if (sshpam_err != PAM_SUCCESS && sshpam_err != PAM_NEW_AUTHTOK_REQD)
527
		goto auth_fail;
527
		goto auth_fail;
528
	}
528
529
	if (sshpam_authctxt->force_pwchange) {
529
	if (sshpam_authctxt->force_pwchange) {
530
		sshpam_err = pam_chauthtok(sshpam_handle,
530
		sshpam_err = pam_chauthtok(sshpam_handle,
531
		    PAM_CHANGE_EXPIRED_AUTHTOK);
531
		    PAM_CHANGE_EXPIRED_AUTHTOK);
Lines 576-591 sshpam_thread(void *ctxtp) Link Here
576
	pthread_exit(NULL);
576
	pthread_exit(NULL);
577
577
578
 auth_fail:
578
 auth_fail:
579
	debug3("PAM: auth_fail sshpam_err=%d %s", sshpam_err, pam_strerror(sshpam_handle, sshpam_err));
579
	if ((r = sshbuf_put_cstring(buffer,
580
	if ((r = sshbuf_put_cstring(buffer,
580
	    pam_strerror(sshpam_handle, sshpam_err))) != 0)
581
	    pam_strerror(sshpam_handle, sshpam_err))) != 0)
581
		fatal("%s: buffer error: %s", __func__, ssh_err(r));
582
		fatal("%s: buffer error: %s", __func__, ssh_err(r));
582
	/* XXX - can't do much about an error here */
583
	/* XXX - can't do much about an error here */
583
	if (sshpam_err == PAM_ACCT_EXPIRED)
584
	if (sshpam_maxtries_reached)
584
		ssh_msg_send(ctxt->pam_csock, PAM_ACCT_EXPIRED, buffer);
585
	else if (sshpam_maxtries_reached)
586
		ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, buffer);
585
		ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, buffer);
587
	else
586
	else
588
		ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, buffer);
587
		ssh_msg_send(ctxt->pam_csock, sshpam_err, buffer);
589
	sshbuf_free(buffer);
588
	sshbuf_free(buffer);
590
	pthread_exit(NULL);
589
	pthread_exit(NULL);
591
590
Lines 1083-1089 do_pam_account(void) Link Here
1083
		sshpam_password_change_required(1);
1082
		sshpam_password_change_required(1);
1084
1083
1085
	sshpam_account_status = 1;
1084
	sshpam_account_status = 1;
1086
	return (sshpam_account_status);
1085
	return (sshpam_err);
1087
}
1086
}
1088
1087
1089
void
1088
void

Return to bug 3210