Switch to the C locale before sending messages to syslog. The messages

sent by shadow were not translated, but error messages from PAM returned
by pam_strerror() were translated in the users's locale.
This commit is contained in:
nekral-guest 2008-02-03 17:53:21 +00:00
parent 4e01ea6c33
commit 6e9078f16c
3 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2008-02-03 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, lib/defines.h: Switch to the C locale before sending
messages to syslog. The messages sent by shadow were not
translated, but error messages from PAM returned by pam_strerror()
were translated in the users's locale.
2008-02-03 Nicolas François <nicolas.francois@centraliens.net>
* NEWS: newusers will behave more like useradd.

3
NEWS
View File

@ -9,6 +9,9 @@ shadow-4.1.0 -> shadow-4.1.1 UNRELEASED
generated in the same second.
- packaging
* Do not install the shadow library per default.
- general
* Do not translate the messages sent to syslog. This avoids logging
PAM error messages in the users's locale.
- chage
* Fix bug which forbid to set the aging information of an account with a
passwd entry, but no shadow entry.

View File

@ -142,13 +142,15 @@ char *strchr (), *strrchr (), *strtok ();
syslogd should log the current system time for each event, and not
trust the formatted time received from the unix domain (or worse,
UDP) socket. -MM */
/* Avoid translated PAM error messages: Set LC_ALL to "C".
* --Nekral */
#define SYSLOG(x) \
do { \
char *saved_locale = setlocale(LC_ALL, NULL); \
if (saved_locale) \
saved_locale = strdup(saved_locale); \
if (saved_locale) \
setlocale(LC_TIME, "C"); \
setlocale(LC_ALL, "C"); \
syslog x ; \
if (saved_locale) { \
setlocale(LC_ALL, saved_locale); \