Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20180704233238.GE29590@altlinux.org>
Date: Thu, 5 Jul 2018 02:32:38 +0300
From: "Dmitry V. Levin" <ldv@...linux.org>
To: owl-dev@...ts.openwall.com
Subject: [PATCH 4/5] pam_tcb: sync password expiration messages with Linux-PAM

---
 pam_tcb/pam_unix_acct.c |  5 ++---
 pam_tcb/support.h       | 19 ++++++++++++++-----
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/pam_tcb/pam_unix_acct.c b/pam_tcb/pam_unix_acct.c
index 3ac372d..a69b931 100644
--- a/pam_tcb/pam_unix_acct.c
+++ b/pam_tcb/pam_unix_acct.c
@@ -148,7 +148,7 @@ PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
 		pam_syslog(pamh, LOG_INFO,
 		    "Expired password for %s (root enforced)", user);
 		if (off(UNIX__QUIET))
-			pam_error(pamh, "%s", MESSAGE_PASS_EXPIRED);
+			pam_error(pamh, "%s", MESSAGE_PASS_ENFORCED);
 		D(("need a new password (1)"));
 		return PAM_NEW_AUTHTOK_REQD;
 
@@ -165,8 +165,7 @@ PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
 		    "Password for %s will expire in %d day%s",
 		    user, daysleft, daysleft == 1 ? "" : "s");
 		if (off(UNIX__QUIET))
-			pam_info(pamh, MESSAGE_WARN_EXPIRE,
-			    daysleft, daysleft == 1 ? "" : "s");
+			pam_info(pamh, MESSAGE_WARN_EXPIRE(daysleft));
 		return PAM_SUCCESS;
 
 	default:
diff --git a/pam_tcb/support.h b/pam_tcb/support.h
index 4abf1f1..f576e62 100644
--- a/pam_tcb/support.h
+++ b/pam_tcb/support.h
@@ -15,9 +15,13 @@
 #if defined(ENABLE_NLS) && defined(NLS_PACKAGE)
 #include <libintl.h>
 #define _(msgid) dgettext(NLS_PACKAGE, msgid)
+#define P3_(msgid, msgid_plural, count) \
+	(dngettext(NLS_PACKAGE, (msgid), (msgid_plural), (count)))
 #define N_(msgid) msgid
 #else
 #define _(msgid) (msgid)
+#define P3_(msgid, msgid_plural, count) \
+	((count) == 1 ? (msgid) : (msgid_plural))
 #define N_(msgid) msgid
 #endif /* ENABLE_NLS && NLS_PACKAGE */
 
@@ -30,18 +34,23 @@
 /* Possible messages during account management */
 #define MESSAGE_ACCT_EXPIRED \
 	_("Your account has expired; please contact your system administrator.")
+#define MESSAGE_PASS_ENFORCED \
+	_("You are required to change your password immediately (administrator enforced).")
 #define MESSAGE_PASS_EXPIRED \
-	_("You are required to change your password immediately.")
-#define MESSAGE_WARN_EXPIRE \
-	_("Warning: your password will expire in %d day%s.")
+	_("You are required to change your password immediately (password expired).")
+#define MESSAGE_WARN_EXPIRE(count) \
+	P3_("Warning: your password will expire in %d day.", \
+	    "Warning: your password will expire in %d days.", \
+	    (count)), (count)
+
 
 /* Possible messages during password changes */
 #define MESSAGE_CHANGING \
 	_("Changing password for %s.")
 #define MESSAGE_PASS_SAME \
-	_("Password unchanged.")
+	_("The password has not been changed.")
 #define MESSAGE_PASS_NONE \
-	_("No password supplied.")
+	_("No password has been supplied.")
 #define MESSAGE_TOOSOON \
 	_("You must wait longer to change your password.")
 
-- 
ldv

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.