2009-03-13 Nicolas François * src/newusers.c: Make sure the SHA related variables are not compiled when disabled at configuration time. * src/newusers.c: Added FIXME 2009-03-13 Nicolas François * src/gpasswd.c: Remove the documentation of options from the main() documentation. It will always be outdated here. 2009-03-13 Nicolas François * src/lastlog.c: lastlog variable renamed to ll to avoid name clash with the structure. * src/lastlog.c: check the offset in print_one() so that it is used for the display of one entry or a set of entries. * src/lastlog.c: Do not loop over the whole user database when -u is used with a single user. * src/lastlog.c: Check the size of the lastlog file so that we can identify failures to read. 2009-03-13 Mike Frysinger * libmisc/salt.c: Removed l64a prototype. The libc declaration is non static, but the internal definition is static. 2009-03-09 Nicolas François * src/gpasswd.c: log_gpasswd_success_gshadow only exists ifdef SHADOWGRP. 2009-03-08 Nicolas François * libmisc/getlong.c: Make sure the getlong argument is not empty. * libmisc/get_gid.c, libmisc/get_uid.c, libmisc/Makefile.am, lib/prototypes.h: Added get_uid() and get_gid() to parse user and group IDs. * NEWS, src/grpck.c, src/pwck.c: Issue a warning if an ID is set to -1. * NEWS, src/newusers.c, src/usermod.c, src/useradd.c, src/groupmod.c, src/groupadd.c: Make sure no user or group are created with an ID set to -1. 2009-03-07 Nicolas François * contrib/adduser-old.c, contrib/adduser.c: Do not use the target of snprintf in one of the format's parameters. 2009-03-07 Nicolas François * man/groupmems.8.xml: groupmems does not create new user. 2009-03-03 Nicolas François * NEWS, po/LINGUAS, po/kk.po: Added Kazakh translation. Thanks to Timur Birsh . 2009-02-22 Nicolas François * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Avoid calling getgrent()/getpwent() after they return NULL. This caused LDAP to return at the beginning of the group/user entries. 2009-01-27 Nicolas François * man/nologin.8.xml: Fix typo (HYSTORY -> HISTORY). 2009-01-26 Nicolas François * NEWS, src/gpasswd.c: Only report success to audit and syslog when the changes are committed to the system. Do not log failure for on-memory changes to audit or syslog. Make sure failures and inconsistencies will be reported in case of unexpected failures (e.g. malloc failures). Only specify an audit message if it is not implicitly implied by the type argument. Removed fail_exit (replaced by atexit(do_cleanups)). Log failures in case of permission denied. 2009-01-19 Nicolas François * man/login.defs.d/UMASK.xml: Indicate how UMASK is used and limitations. * man/limits.5.xml: Remove space before an end of tag. * man/useradd.8.xml, man/login.defs.d/CREATE_HOME.xml, man/login.defs.5.xml: Document the CREATE_HOME variable. * etc/login.defs: Improve the documentation of UMASK. 2009-01-06 Sebastian Rick Rijkers * NEWS, src/su.c: Preserve COLORTERM in addition to TERM when su is called with the -l option. 2008-12-23 Nicolas François * libmisc/chkname.c: Use a bool when possible instead of integers. * libmisc/chkname.c: Add brackets and parenthesis. 2008-12-23 Nicolas François * man/groupadd.8.xml, configure.in, man/config.xml.in: Use the real group name length limit in the documentation. 2008-12-23 Nicolas François * src/Makefile.am: Only link with the needed library. When compiled with PAM support, chfn, chsh, login, newgrp, passwd, and su do not need the libcrypt library. 2008-12-23 Nicolas François * libmisc/cleanup_group.c: Fix compilation when compiled without shadow group support. 2008-12-23 Nicolas François * src/groupdel.c: Remove the fail_exit () declaration. 2008-12-22 Nicolas François * src/gpasswd.c: Fix the support for usernames with arbitrary length. 2008-12-22 Nicolas François * src/groupadd.c, src/groupdel.c, src/groupmod.c: Re-indent. * src/groupmod.c: Do not add the command synopsis to the main () documentation. This avoids outdated information. * libmisc/chkname.c: Remove outdated comments. 2008-12-22 Nicolas François * libmisc/audit_help.c: Added audit_logger_message() to log messages not related to an account. * lib/prototypes.h, libmisc/cleanup.c, libmisc/cleanup_group.c, libmisc/cleanup_user.c, libmisc/Makefile.am: Added stack of cleanup functions to be executed on exit. * NEWS, src/groupadd.c, src/groupdel.c, src/groupmod.c: Only report success to audit and syslog when the changes are committed to the system. Do not log failure for on-memory changes to audit or syslog. Make sure failures and inconsistencies will be reported in case of unexpected failures (e.g. malloc failures). Only specify an audit message if it is not implicitly implied by the type argument. Removed fail_exit (replaced by atexit(do_cleanups)). 2008-12-15 Nicolas François * NEWS, src/gpasswd.c: Added support usernames with arbitrary length. 2008-11-27 Mike Frysinger * configure.in: Fix the "$enable_acct_tools_setuid" = "yes" test. 2008-11-27 Mike Frysinger * NEWS, configure.in, libmisc/chkname.c: make group max length a configure option. The configure behavior encoded is: -> default of 16 (like today); --with-group-name-max-length -> default of 16; --without-group-name-max-length -> no max length; --with-group-name-max-length=n > max is set to n. 2008-11-23 Nicolas François * src/su.c: (!USE_PAM) Provide visible information indicating that su was denied. 2008-11-23 Nicolas François * man/su.1.xml: Fix the su synopsis. username is referenced in the manpage, not LOGIN. * man/ja/login.1: Fix the path of the utmp and wtmp files. 2008-11-23 Nicolas François * libmisc/chowntty.c: Improve the logs for fchown and fchmod failures. * libmisc/chowntty.c: Only closelog() when failure cause an exit. 2008-11-23 Nicolas François * NEWS, libmisc/chowntty.c: Fix a race condition that could lead to gaining ownership or changing mode of arbitrary files. * NEWS, libmisc/chowntty.c, libmisc/utmp.c: is_my_tty() moved from utmp.c to chowntty.c. checkutmp() now only uses an existing utmp entry if the pid matches and ut_line matches with the current tty. This fixes a possible DOS when entries can be forged in the utmp file. * libmisc/chowntty.c, src/login.c, lib/prototypes.h: Remove the tty argument from chown_tty. chown_tty always changes stdin and does not need this argument anymore. 2008-10-11 Nicolas François * man/gshadow.5.xml, man/shadow.5.xml, man/passwd.5.xml, man/grpck.8.xml: Sorted SEE ALSO references. * man/gshadow.5.xml: Added reference to grpck(8) and grpconv(8). * man/pwck.8.xml: Added reference to grpck(8). * man/shadow.5.xml: Added reference to pwck(8). * man/passwd.5.xml: Added reference to pwck(8). * man/grpck.8.xml: Added reference to pwck(8). 2008-10-11 Nicolas François * man/*.xml, man/login.defs.d/*.xml: Added copyright and licence header. 2008-09-20 Nicolas François * src/login.c: Always check the return value of the pam_* APIs. 2008-09-20 Nicolas François * src/login.c: Use a dynamic buffer for usernames. * src/login.c: Copy the name of the user authenticated by PAM to username. This simplify later logging (avoid USE_PAM conditional). * src/login.c: Check that no username is specified with -r. * src/login.c: Make sure a username is specified with -f. * src/login.c: Explicitly tag the end of the #ifdef RLOGIN sections. * src/login.c: Erase the username later since it it used for the fake password check (in case of empty password). * src/login.c, man/login.1.xml: the username is not an optional parameter of -f. Fix the getopt optstring, remove the parsing of username in the -f processing block, and remove unnecessary checks (username cannot be parsed twice anymore), better documentation of the synopsis. 2008-09-20 Nicolas François * src/login.c: Existence of pam_user was already checked. pwd was already copied to pwent. Remove duplicated code. 2008-09-20 Nicolas François * src/login.c: check_flags() renamed process_flags(). All flag processing blocs moved to process_flags(). 2008-09-20 Nicolas François * src/logoutd.c, src/userdel.c: Re-indent. This helps pmccabe. 2008-09-20 Nicolas François * src/login.c: Add missing closing }. This was probably never noticed because UT_ADDR is never defined. * src/login.c: Re-indent. 2008-09-20 Nicolas François * src/login.c: Do not mix USE_PAM and !USE_PAM code. 2008-09-20 Nicolas François * src/login.c: Use failent_user to log to audit. username is the caller, not the user login tries to authenticate. * src/login.c: Use pwd->pw_name instead of pwd->pw_uid. This might be more precise (name must be unique, uid might not be). 2008-09-20 Nicolas François * man/passwd.1.xml: passwd cannot change the full name of the user, the user's login shell; but it can change the account or password validity period. Thanks to Reuben Thomas. 2008-09-14 Nicolas François * src/useradd.c: Added missing declaration of Mflg. * src/pwck.c: Only unlock files if they were locked before (e.g. not in read-only mode). * src/pwck.c: Quote the username in error messages (harmonization with other messages). * libmisc/find_new_gid.c: Fixed typo (s/grp->gr_gid/group_id/). * libmisc/find_new_gid.c: Likewise. 2008-09-13 Nicolas François * libmisc/setugid.c, src/login_nopam.c, src/suauth.c, lib/getdef.c: Replace the %m format string by strerror(). This avoids errno to be reset between the system call error and the report function. 2008-09-13 Nicolas François * lib/commonio.c: Ignore the return value of umask() when the mask is set to the old value. 2008-09-11 Nicolas François * NEWS, etc/login.defs: New CREATE_HOME variable to tell useradd to create a home directory for new users. * src/useradd.c, man/useradd.8.xml: New -M/--no-create-home option and CREATE_HOME usage. System accounts are not impacted by CREATE_HOME. * man/useradd.8.xml: Indicate that a new group is created by default. * src/useradd.c: Removed TODO item (moved to the TODO file). 2008-09-11 Miroslav Kuře * po/cs.po: Updated Czech translation. 2008-09-11 Nicolas François * man/login.defs.d/USERGROUPS_ENAB.xml: Fix typo: new tag before the previous one is closed. This caused a missng explanation for USERGROUPS_ENAB. 2008-09-11 Nicolas François * man/groupadd.8.xml: Remove the list of (short) options from the SYNOPSIS. Replaced with [options] for consistency with other tools and maintainability. 2008-09-07 Nicolas François From RedHat's patch shadow-4.1.2-sysAccountDownhill.patch Thanks to Peter Vrabec. * NEWS, libmisc/find_new_gid.c, libmisc/find_new_uid.c: Build an index of used IDs to avoid a database request for each id in the allowed range (when the highest allowed ID is already used). This speedups the addition of users or groups when the highest allowed ID is already used. The additional memory usage of the tools should be acceptable when UID_MAX/SYS_UID_MAX are set to a reasonable number. 2008-09-07 Nicolas François * configure.in: Fix the dependency of ACCT_TOOLS_SETUID on USE_PAM. Build failed with --without-libpam. 2008-09-07 Nicolas François * libmisc/copydir.c, configure.in: Check for the presence of st_mtim and st_mtimensec, as for st_atim and st_atimensec. * libmisc/copydir.c: Call utimes() after closing the file. 2008-09-07 Nicolas François * src/gpasswd.c: Document the long options in the usage. 2008-09-06 Nicolas François * NEWS: Added configure --enable-account-tools-setuid (default) / --disable-account-tools-setuid options. This permits to disable the PAM authentication of the caller for chage, chgpasswd, chpasswd, groupadd, groupdel, groupmod, newusers, useradd, userdel, and usermod. This authentication is not necessary when these tools are not installed setuid root. * configure.in: Added option --enable-account-tools-setuid to enable/disable the usage of PAM to authenticate the callers of account management tools: chage, chgpasswd, chpasswd, groupadd, groupdel, groupmod, useradd, userdel, usermod. * src/Makefile.am: Do not link the above tools with libpam if account-tools-setuid is disabled. * src/userdel.c, src/newusers.c, src/chpasswd.c, src/usermod.c, src/groupdel.c, src/chgpasswd.c, src/useradd.c, src/groupmod.c, src/groupadd.c, src/chage.c: Implement ACCT_TOOLS_SETUID (--enable-account-tools-setuid). * etc/pam.d/Makefile.am: Install the pam service file for the above tools only when needed. 2008-09-06 Nicolas François * libmisc/tz.c: tz() is only used when USE_PAM is not defined. * lib/prototypes.h: Indicate functions whose presence depends on the USE_PAM flag. 2008-09-06 Nicolas François * src/groupmems.c: Call open_files() and close_files(). * src/groupmems.c: Always call check_perms(), which takes care of checking if --list is used. 2008-09-06 Nicolas François * libmisc/obscure.c: Compare characters to '\0', not NULL. 2008-09-06 Nicolas François * lib/defines.h: Do not include . This complicate undefining some configuration macros when the file is included multiple times. * libmisc/xgetXXbyYY.c, libmisc/xgetpwnam.c, libmisc/xgetpwuid.c, libmisc/xgetgrgid.c, libmisc/xgetgrnam.c, libmisc/xgetspnam.c: Include from teh compiled C file, not the included getXXbyYY.c. 2008-09-06 Nicolas François * src/userdel.c, src/newusers.c, src/chpasswd.c, src/chfn.c, src/groupmems.c, src/usermod.c, src/groupdel.c, src/chgpasswd.c, src/useradd.c, src/groupmod.c, src/groupadd.c, src/chage.c, src/chsh.c: Simplify the PAM error handling. Do not keep the pamh handle, but terminate the PAM transaction as soon as possible if there are no PAM session opened. If the username cannot be determined, report it as such (not a PAM authentication failure). * src/useradd.c, src/userdel.c, src/usermod.c: It is no more needed to initialize retval to PAM_SUCCESS. 2008-09-06 Nicolas François * src/newgrp.c, src/userdel.c, src/grpck.c, src/gpasswd.c, src/newusers.c, src/pwconv.c, src/chpasswd.c, src/logoutd.c, src/chfn.c, src/groupmems.c, src/usermod.c, src/pwunconv.c, src/expiry.c, src/groupdel.c, src/chgpasswd.c, src/useradd.c, src/su.c, src/groupmod.c, src/passwd.c, src/pwck.c, src/groupadd.c, src/chage.c, src/login.c, src/grpconv.c, src/groups.c, src/grpunconv.c, src/chsh.c: Prog is now global (not static to the file) so that it can be used by the helper functions of libmisc. * lib/prototypes.h: Added extern char *Prog. * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Indicate the program name with the warning. 2008-09-05 Nicolas François * configure.in: Check if AUDIT_ADD_USER, AUDIT_DEL_USER, AUDIT_ADD_GROUP, and AUDIT_DEL_GROUP are defined in . 2008-09-04 Nicolas François * src/useradd.c: Fix comment of lflg: it is also used for faillog. 2008-09-04 Nicolas François * NEWS, src/groupmems.c, man/groupmems.8.xml: Document the long options. 2008-09-03 Nicolas François * lib/prototypes.h, libmisc/audit_help.c: Define new type shadow_audit_result for the result argument of audit_logger(). This permits stronger type checking and a better readability of the results (SHADOW_AUDIT_FAILURE/SHADOW_AUDIT_SUCCESS constants). * src/groupadd.c, src/groupdel.c, src/useradd.c, src/userdel.c: Use the SHADOW_AUDIT_FAILURE/SHADOW_AUDIT_SUCCESS results instead of 0 or 1 in audit_logger(). 2008-09-03 Nicolas François * src/userdel.c: Log failures to remove the mailbox to syslog and audit. * src/userdel.c: Log successful removal of home directory to audit only in case of success. * src/userdel.c: Move the audit log of failure to remove the home directory before the call to function that may exit. * src/userdel.c: Document that errors is only used to count errors during the removal of the home directory. 2008-09-03 Nicolas François * src/useradd.c: Log errors to syslog in grp_update() since changes have started to be reported to syslog. * src/userdel.c: Fix some result parameters sent to audit_logger(). 2008-09-02 Nicolas François * NEWS: Following changes from a patch contributed by Steve Grubb * src/groupadd.c: Log to audit with type AUDIT_ADD_GROUP instead of AUDIT_USER_CHAUTHTOK. * src/groupdel.c: Log to audit with type AUDIT_DEL_GROUP instead of AUDIT_USER_CHAUTHTOK. * src/useradd.c: Log to audit with type AUDIT_ADD_USER / AUDIT_ADD_GROUP / AUDIT_USYS_CONFIG instead of AUDIT_USER_CHAUTHTOK. * src/useradd.c: Add missing logs to audit. * src/userdel.c: Log to audit with type AUDIT_DEL_USER / AUDIT_DEL_GROUP instead of AUDIT_USER_CHAUTHTOK. * src/userdel.c: Add missing logs to audit. 2008-08-31 Nicolas François * src/groupmems.c: Remove duplicated gr_open(). 2008-08-30 Nicolas François * man/useradd.8.xml: Document the /etc/default/useradd variables. * man/useradd.8.xml: Fix the documentation of the GROUP variable (and -g/--gid option). * man/useradd.8.xml: Document that -o is only valid with -u 2008-08-29 Nicolas François * shadow.spec.in: Fix the source (new FTP). 2008-08-29 Nicolas François * src/su.c: Add brackets and parenthesis. * src/su.c: Avoid implicit conversion of pointers to booleans. 2008-08-29 Nicolas François * libmisc/list.c: Remove historical comment. * libmisc/list.c: Added assertions for non NULL parameters. 2008-08-29 Nicolas François * src/pwconv.c, src/pwunconv.c: Fail if unexpected parameters are provided. 2008-08-29 Nicolas François * src/passwd.c: Add brackets and parenthesis. * src/passwd.c: Avoid implicit conversion of pointers to booleans. * src/passwd.c: Avoid assignments in comparisons. 2008-08-29 Nicolas François * NEWS, src/groupmems.c, man/groupmems.8.xml: Added support for shadow groups. * src/groupmems.c: Use fail_exit() instead of exit(). 2008-08-29 Nicolas François * src/groupmems.c: The grp structure returned by gr_locate is a const. Duplicate this structure before working on it. * src/groupmems.c: Do not fail and do not display warnings if a close failure happens with the --list option. (Files are opened read-only). * src/groupmems.c: Avoid mixed declarations and code. 2008-08-29 Nicolas François * src/gpasswd.c: Replace the 'valid' variable by is_valid to avoid clashes with the valid() function. 2008-08-29 Nicolas François * libmisc/obscure.c: Add brackets and parenthesis. * libmisc/obscure.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/obscure.c: Simplify the list of if. 2008-08-28 Nicolas François * src/passwd.c: Fix a typo in the Usage string. 2008-08-28 Nicolas François * src/grpconv.c, src/groups.c: Name the parameters in the prototypes of the static functions. * src/grpconv.c, src/grpunconv.c, src/logoutd.c: Fail if unexpected parameters are provided. * src/grpconv.c, src/grpunconv.c: Indicate that argc is not used in the no SHADOWGRP version. 2008-08-28 Nicolas François * src/chgpasswd.c, src/chpasswd.c: Removed variable ok, which is no more used. 2008-08-28 Nicolas François * src/chage.c: Fix the format for long integers (from %ul to %lu). 2008-08-28 Nicolas François * libmisc/utmp.c: Mark the line and host arguments of setutmp() as not used in the __linux__ version. 2008-08-28 Nicolas François * lib/nscd.c: Avoid redefinition of _GNU_SOURCE. 2008-08-28 Nicolas François * configure.in: Indentation fix. * configure.in, src/login.c: Do not use HAVE_PAM_FAIL_DELAY, but HAS_PAM_FAIL_DELAY, to avoid a redefinition with Linux PAM. 2008-08-27 Nicolas François * src/groupmems.c: Added functions add_user(), remove_user(), and purge_members() to ease the support of gshadow. 2008-08-27 Nicolas François * src/expiry.c: Use Basename for Prog. * src/expiry.c: Added missing OPENLOG. 2008-08-27 Nicolas François * lib/nscd.c: Make sure the file is not empty when configured without nscd support. 2008-08-27 Nicolas François * configure.in: Remove the USE_NSCD AM_CONDITIONAL (USE_NSCD is not used in any Makefile.am). * configure.in: Make sure posix_spawn is present when configured with nscd support. 2008-08-26 Nicolas François * lib/groupmem.c, lib/pwmem.c, lib/shadowmem.c: Added brackets and parenthesis. * lib/groupmem.c, lib/pwmem.c, lib/shadowmem.c: Avoid assignments in comparisons. 2008-08-26 Nicolas François * libmisc/mail.c: Added brackets and parenthesis. * libmisc/mail.c: Avoid assignments in comparisons. 2008-08-26 Tobias Poschwatta * NEWS: Added support for uclibc. * configure.in, libmisc/copydir.c: futimes() and lutimes() are not standard. Check if they are implemented before using them. Do not set the time of links if lutimes() does not exist, and use utimes() as a replacement for futimes(). * configure.in, lib/nscd.h, lib/nscd.c: Added --with-nscd and --without-nscd flags to support systems without nscd. * lib/groupio.h, lib/prototypes.h, lib/pwio.h, lib/sgetgrent.c: Include before and . It is necessary for the definition of uid_t and gid_t. * lib/pwmem.c: do not include , "pwio.h" is sufficient here. * configure.in: Check if the stat structure has a st_atim or st_atimensec field. * libmisc/copydir.c: Conditionally use the stat's st_atim and st_atimensec fields. 2008-08-26 Nicolas François * src/groupmems.c: Handle the options alphabetically. 2008-08-26 Nicolas François * src/groupmems.c: When removing an user, check if deluser is on the list, not adduser. This fixes a segmentation fault for every call of groupmems -d. * libmisc/list.c: Add assertions to help identifying these issues. * libmisc/list.c: Avoid implicit conversion of pointers to booleans. 2008-08-26 Nicolas François * NEWS, src/groupmems.c: Use the "groupmems" PAM service name instead of "groupmod". 2008-08-26 Nicolas François * src/chfn.c: Merge some translated messages. * src/groupmems.c, src/groupadd.c, src/gpasswd.c, src/chsh.c, src/chfn.c: Harmonize *_update() failure messages. * src/groupmems.c: Harmonize gr_close() failure messages. * src/newgrp.c: Harmonize "unknown GID" messages. * src/newusers.c: Move the pwd declaration to a inner block scope. 2008-08-26 Nicolas François * src/useradd.c: Harmonize some error messages. * src/userdel.c: Add log to syslog when the mail file could not be removed. * src/userdel.c: Give more context an error message (merge with perror()). * src/usermod.c: Harmonize some error messages. 2008-08-25 Nicolas François * src/groupmems.c: Check the return value of gr_update(). * src/chage.c, src/chfn.c, src/chgpasswd.c, src/chpasswd.c, src/chsh.c, src/gpasswd.c, src/groupadd.c, src/groupmems.c, src/groupmod.c, src/grpck.c, src/grpconv.c, src/grpunconv.c, src/passwd.c, src/pwck.c, src/pwconv.c, src/pwunconv.c, src/useradd.c, src/userdel.c, src/usermod.c: Harmonize the error message sent to stderr in case of *_update () failure. * src/chage.c, src/chsh.c, src/groupadd.c, src/passwd.c: Do not log to syslog when pw_update() or spw_update() fail. * src/newusers.c: Do not log specific error message to stderr when sgr_update() fails. * src/pwconv.c: Remove duplicated definition of Prog. 2008-08-25 Nicolas François * src/chfn.c, src/chsh.c, src/expiry.c, src/gpasswd.c, src/newgrp.c, src/passwd.c, src/su.c: Use the same stderr and syslog warnings when the username cannot be determined. * src/newgrp.c: Reuse the same stderr message for groups which do not exist in the system. 2008-08-21 Nicolas François * src/usermod.c: Log errors while *_close to syslog. 2008-08-21 Nicolas François * src/grpconv.c: Use Basename for the definition of Prog. Prog needs a file visibility. * src/grpunconv.c: Likewise. 2008-08-20 Nicolas François * src/chfn.c: Do not exit on pw_unlock failures. * src/grpconv.c, src/grpunconv.c, src/pwconv.c, src/pwunconv.c, src/vipw.c: Open syslog with the right identification name. * src/vipw.c: Log unlock errors to syslog. * src/vipw.c: Log edits to syslog. * src/chage.c, src/chfn.c, src/chsh.c, src/gpasswd.c, src/groupadd.c, src/groupdel.c, src/groupmod.c, src/grpconv.c, src/grpunconv.c, src/passwd.c, src/pwck.c, src/pwunconv.c, src/useradd.c, src/usermod.c: Harmonize the syslog levels. Failure to close or unlock are errors. Failure to open files are warnings. 2008-08-20 Nicolas François * src/newusers.c: Open syslog with the right identification name. * src/newusers.c: Mark the files as locked only if they are really locked (i.e. if shadow is not enabled, the files are not locked). 2008-08-20 Nicolas François * NEWS, src/gpasswd.c: Use getopt_long instead of getopt. Added support for long options --add (-a), --delete (-d), --remove-password (-r), --restrict (-R), --administrators (-A), and --members (-M) * man/gpasswd.1.xml: Document the new long options. * src/gpasswd.c: The sgrp structure is only used if SHADOWGRP is defined. 2008-08-18 Nicolas François * src/grpck.c: Added function fail_exit(). Check failure to unlock files. Report errors to stderr and syslog, but continue. * src/grpconv.c: Check failure to unlock files. Report errors to stderr and syslog, but continue. 2008-08-18 Nicolas François * src/passwd.c: Check failure to unlock files. Report errors to stderr and syslog, but continue. 2008-08-17 Nicolas François * src/chfn.c, src/chgpasswd.c, src/chpasswd.c, src/gpasswd.c, src/groupadd.c, src/groupdel.c, src/groupmems.c, src/groupmod.c, src/grpconv.c, src/grpunconv.c, src/newusers.c, src/pwconv.c, src/pwunconv.c, src/useradd.c, src/userdel.c: Harmonize the name of the variables keeping the lock status, to match the shadow library prefixes. 2008-08-17 Nicolas François * src/chage.c, src/chgpasswd.c, src/chpasswd.c, src/chsh.c, src/gpasswd.c, src/groupadd.c, src/groupdel.c, src/groupmems.c, src/groupmod.c, src/grpck.c, src/grpconv.c, src/grpunconv.c, src/newusers.c, src/passwd.c, src/pwck.c, src/pwconv.c, src/pwunconv.c, src/useradd.c, src/userdel.c, src/usermod.c: In case of a lock failure, indicate to the user that she can try again later. Do not log to syslog. 2008-08-17 Nicolas François * NEWS, src/passwd.c: For compatibility with other passwd version, the --lock an --unlock options do not lock or unlock the user account anymore. They only lock or unlock the user's password. * man/passwd.1.xml: Document above change. Document how an account can be locked and what a password lock means. 2008-08-15 Nicolas François * man/groupadd.8.xml: Fix the regular expression for group policy. The final $ character is optional. * man/groupadd.8.xml: Likewise. * man/groupadd.8.xml: Indicate the maximum size of usernames. 2008-08-15 Nicolas François * man/po/pl.po: Fix typo in the Polish translation (see http://bugs.debian.org/491460) 2008-08-13 Nicolas François * man/pl/Makefile.am: Do not build the Polish translation of login.1 and su.1 (not enough translated). See http://bugs.debian.org/491460 2008-08-13 Nicolas François * man/shadow.5.xml: Fix typo. The password must be changed before the maximum number of days, not after. 2008-08-09 Nicolas François * src/groupmems.c: Harmonize the unlock failure messages. 2008-08-07 Nicolas François * src/pwck.c: Added fail_exit(). * src/pwck.c: Report failure to unlock files to stderr and syslog. * src/pwck.c: Report failure to sort to stderr, and exit with E_CANTSORT. * man/pwck.8.xml: Document return code 6 (E_CANTSORT). 2008-08-07 Nicolas François * src/vipw.c: Report failures to remove files to stderr. * src/vipw.c: Report failures to unlock files to stderr. 2008-08-07 Nicolas François * NEWS, src/groupmems.c: Added syslog support. * src/groupmems.c: members() renamed display_members() to avoid name clash with its members argument. * src/groupmems.c: Report failure to unlock to syslog. * src/groupmems.c: Harmonize error messages. * src/groupmems.c: Report failures to write the new group file to syslog (gr_close() failure). * src/groupmems.c: Don't use fail_exit for non-failure exit. 2008-08-07 Nicolas François * src/chsh.c: Added fail_exit(). * src/chsh.c: Use fail_exit() instead of exit(), this avoid calling closelog() every times. * src/chsh.c: Ignore the return value or pam_end(). * src/chsh.c: Simplify the PAM error handling. * src/chsh.c: Report failure to unlock files to stderr and syslog. 2008-08-07 Nicolas François * src/chpasswd.c: Added fail_exit(). * src/chpasswd.c: Added support for syslog. * src/chpasswd.c: Report failure to unlock files to stderr and syslog. * src/chpasswd.c: Simplify the PAM error handling. * src/chpasswd.c: Report failure during *_close() to syslog. * src/chpasswd.c: Ignore the return value or pam_end(). 2008-08-07 Nicolas François * src/chgpasswd.c: Added fail_exit(). * src/chgpasswd.c: Added support for syslog. * src/chgpasswd.c: Report failure to unlock files to stderr and syslog. * src/chgpasswd.c: Simplify the PAM error handling. * src/chgpasswd.c: Report failure during *_close() to syslog. * src/chgpasswd.c: Ignore the return value or pam_end(). 2008-08-07 Nicolas François * src/userdel.c: Report failure to remove entries from group or gshadow to stderr. * src/userdel.c: Fail in case of failure during the write of a user or group database. Report errors to syslog. * src/userdel.c: Do not unlock non locked files. * src/userdel.c: Report failure to unlock the passwd or shadow file to stderr and syslog. 2008-08-07 Nicolas François * src/pwunconv.c: Report failure to unlock the passwd or shadow file to stderr and syslog. 2008-08-07 Nicolas François * src/usermod.c: Report failure to unlock files to stderr and syslog. 2008-08-07 Nicolas François * src/newusers.c: Report failure to unlock files to stderr and syslog. * src/newusers.c: In case of error when files are open or closed, indicate the failing file. * src/newusers.c: Do not try to unlock the files manually since this is done in fail_exit. 2008-08-06 Nicolas François * src/chage.c: Report failure to unlock the passwd or shadow file to stderr and syslog. 2008-08-06 Nicolas François * src/pwconv.c: Report failure to unlock the passwd or shadow file to stderr and syslog. * src/pwconv.c: Report failure to chmod the backup file. 2008-08-06 Nicolas François * src/grpunconv.c: Report failure to unlock the group or gshadow files to stderr and syslog. 2008-08-06 Nicolas François * src/chfn.c: Added fail_exit(). Check if the passwd file is locked. Report failures to unlock to stderr and syslog. * src/chfn.c: Is case of failure, use fail_exit() rather than exit(). * src/chfn.c: Ignore the return value of pam_end(). 2008-08-06 Nicolas François * lib/groupio.c, lib/groupio.h, lib/pwio.c, lib/pwio.h, lib/sgroupio.c, lib/sgroupio.h, lib/shadowio.c, lib/shadowio.h: Added *_dbname() functions to retrieve the name of the databases. * lib/groupio.c, lib/groupio.h, lib/pwio.c, lib/pwio.h, lib/sgroupio.c, lib/sgroupio.h, lib/shadowio.c, lib/shadowio.h: *_name() functions renamed *setname(). * src/grpck.c, src/pwck.c: Likewise. * lib/groupio.h, lib/pwio.h, lib/sgroupio.h, lib/shadowio.h: Added the name of the arguments to the prototypes. * src/chage, src/chfn.c, src/chgpasswd.c, src/chpasswd.c, src/chsh.c, src/gpasswd.c, src/groupadd.c, src/groupdel.c, src/groupmod.c, src/grpck.c, src/grpconv.c, src/grpunconv.c, src/newusers.c, src/passwd.c, src/pwck.c, src/pwconv.c, src/pwunconv.c, src/useradd.c, src/userdel.c, src/usermod.c: Harmonize the erro & syslog messages in case of failure of the *_lock(), *_open(), *_close(), *_unlock(), *_remove() functions. * src/chgpasswd.c, src/chpasswd.c, src/usermod.c: Avoid capitalized messages. * src/chpasswd.c, src/useradd.c, src/usermod.c: Harmonize messages in case of inexistent entries. * src/usermod.c: Harmonize messages in case of already existing entries. * src/newusers.c, src/useradd.c: Simplify PAM error handling. * src/useradd.c: Report failures to unlock files (stderr, syslog, and audit). But do not fail (continue). * src/useradd.c (open_files): Do not report to syslog & audit failures to lock or open the databases. This might be harmless, and the logs were not already informed that a change was requested. * src/usermod.c: It's not the account which is unlocked, but its password. 2008-08-02 Nicolas François * src/groupadd.c: Harmonize error & syslog messages. * src/groupadd.c: Add logging to syslog & audit on lock/unlock failures. * src/groupadd.c: Only call gr_unlock() and sgr_unlock() in the group or gshadow files were previously locked. * src/groupadd.c: Make sure failures are reported to syslog/audit after the change is mentioned. * src/groupmod.c: Harmonize error & syslog messages. * src/groupmod.c: Add logging to syslog & audit on lock/unlock failures. * src/groupmod.c: Make sure issues are reported to syslog or audit after the change is mentioned. * src/groupdel.c: Harmonize error & syslog messages. * src/groupdel.c: Add logging to syslog & audit on lock/unlock failures. * src/groupdel.c: Only call gr_unlock() and sgr_unlock() in the group or gshadow files were previously locked. * src/groupdel.c: Simplify the handling of PAM errors. 2008-08-01 Nicolas François * src/gpasswd.c: Harmonize error & syslog messages. * src/gpasswd.c: Warn and log to syslog and audit when group or gshadow cannot be unlocked, but do not fail. 2008-08-01 Nicolas François * src/chfn.c, src/chsh.c, src/groupdel.c, src/groupmems.c, src/groupmod.c, src/grpck.c, src/login.c, src/logoutd.c, src/newgrp.c, src/newusers.c, src/passwd.c, src/pwck.c, src/suauth.c, src/useradd.c, src/userdel.c, src/usermod.c, src/vipw.c: Complete the switch from the `' quotation style to ''. Do it also in SYSLOG messages. Quote some parameters. All this permits to merge some messages. 2008-07-30 Lukáš Kuklínek * src/groupmems.c: Only check if the adduser user exists when an user is specified with -a. 2008-07-30 Nicolas François * src/groupmems.c: Fix the groupmems' usage message. The -D option is in fact -p. 2008-07-27 Nicolas François * src/groupmems.c: Replace an if test by an else. 2008-07-27 Nicolas François * src/groupmems.c: Ignore the return value of fputs(). 2008-07-27 Nicolas François * src/groupmems.c (whoami): Make sure usr and grp are not NULL before dereferencing them. 2008-07-27 Nicolas François * src/groupmems.c: Use xstrdup() rather than strdup(). 2008-07-27 Nicolas François * src/groupmems.c: Add parenthesis. * src/groupmems.c: Avoid implicit conversion of pointers / chars to booleans. 2008-07-27 Nicolas François * NEWS, src/groupmems.c: Allow everybody to list the users of a group. This information is publicly available in /etc/group. * NEWS, src/groupmems.c: Open /etc/group read only for the -l option. 2008-07-27 Nicolas François * man/groupmems.8.xml: Sort options alphabetically. 2008-07-27 Nicolas François * src/groupmems.c (check_perms): Simplify. Always call pam_end() at the end of the authentication. 2008-07-27 Nicolas François * src/groupmems.c: Add fail_exit() to remove the group lock file in case of failure. Replace the calls to exit() by fail_exit(). 2008-07-27 Nicolas François * src/groupmems.c: Reduce the number of checks. Isolate the parameters setting and permissions checking. 2008-07-27 Nicolas François * src/groupmems.c: Add functions process_flags() and check_perms() from code of main(). * src/groupmems.c: Harmonize the failure message in case of PAM failure with the other programs. 2008-07-27 Nicolas François * src/groupmems.c: Remove isgroup(), which always returns TRUE. 2008-07-27 Nicolas François * src/groupmems.c: Reuse the functions from libmisc/list.c to deal with user lists. addtogroup() was broken when realloc() move the memory area. * src/groupmems.c: Report failures with the name of the program. 2008-07-27 Nicolas François * src/groupmems.c: EXIT_READ_GROUP changed to EXIT_INVALID_GROUP. * src/groupmems.c: EXIT_INVALID_USERNAME changed to EXIT_INVALID_USER. 2008-07-26 Nicolas François * src/groupmems.c: Really use booleans. * src/groupmems.c: Change isroot() to a macro that returns a boolean. 2008-07-26 Nicolas François * lib/defines.h: Make sure the booleans are defined before using them. 2008-07-26 Nicolas François * src/groupmems.c: Added Prog global variable to indicate the name of the program in error messages. 2008-07-22 Lukáš Kuklínek * NEWS, src/groupmems.c: Check if the user added to group actually exist. RedHat bug #455603 * NEWS, src/groupmems.c: Check if the group exists in the group local database (/etc/group). RedHat bug #456088 2008-07-22 Nicolas François * lib/prototypes.h: Fix getrange prototype. 2008-07-21 Seraphim Mellos * README, NEWS, configure.in, lib/pam_defs.h, src/login.c: Add support for OpenPAM. 2008-07-12 Nicolas François * src/chage.c: Ignore the return value of pam_end() before exiting. * src/chage.c: Ignore return values of strftime(), snprintf(), puts(), printf(), and fputs(). * src/chage.c: Check the return value of asctime(). 2008-07-12 Nicolas François * lib/gshadow.c: Avoid assignments in comparison. 2008-07-12 Nicolas François * ChangeLog, NEWS, src/login.c: Re-inject the changes from 4.1.2.1. 2008-07-11 Nicolas François * src/usermod.c: Do not call usr_update() if it will have no effects. This avoid checking if the user exists in the local passwd file if not necessary, and thus allow to add LDAP users to local groups. (The user is already checked against the system configuration with getpwnam()). Thanks to Dan Kopecek. 2008-07-11 Nicolas François * src/usermod.c: Split update_files() into update_lastlog() and update_faillog(). Report errors (but don't fail) if the file exist, but open(), lseek(), read(), write(), or close() fails. * src/usermod.c: Add brackets and parenthesis. * src/usermod.c: Ignore the return value of pam_end() before exiting. * src/usermod.c: Ignore the return value of strftime(), snprintf(), and puts(). * src/usermod.c: Check the return value of gmtime() and asctime(), and output the raw time_t on failures. 2008-07-11 Nicolas François * libmisc/setugid.c: Add brackets. 2008-06-17 Nicolas François * libmisc/env.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/env.c: Add brackets and parenthesis. * libmisc/env.c: Ignore the return value of puts() and fputs(). * libmisc/env.c: Avoid multi-statements lines. 2008-06-17 Nicolas François * libmisc/utmp.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/utmp.c: Add brackets and parenthesis. * libmisc/utmp.c: Exit with the EXIT_FAILURE status code in case of failure. * libmisc/utmp.c: Avoid assignments in comparisons. * lib/prototypes.h, libmisc/utmp.c: Change setutmp()'s prototype to return an int because pututline() and pututxline() may fail. 2008-06-17 Nicolas François * libmisc/audit_help.c: Added one string for translation. * po/POTFILES.in: Added libmisc/audit_help.c, libmisc/find_new_gid.c, libmisc/find_new_uid.c, libmisc/getlong.c, libmisc/getrange.c, libmisc/xgetXXbyYY.c, and libmisc/yesno.c. Removed libmisc/find_new_ids.c 2008-06-16 Nicolas François * src/useradd.c: If the faillog file exist, warn in case of failure when open(), lssek(), write() or close() fails when the new user's faillog entry is reset. * src/useradd.c: Ditto for the lastlog entry. 2008-06-15 Nicolas François * libmisc/limits.c: Add brackets and parenthesis. * libmisc/limits.c: Avoid implicit conversion of pointers / integers to booleans. * libmisc/limits.c: Ignore the return value of umask(). We will never return to the original umask. * libmisc/limits.c: Avoid multi-statements lines. * libmisc/limits.c: Added default to a switch(). Report invalid limit strings to syslog. * libmisc/limits.c: Ignore the return value of fclose(). /etc/limits is open read-only. * libmisc/limits.c: Ignore the return value of fputs() and sleep(). * libmisc/limits.c: Check the return value of nice() and set_filesize_limit(), and report errors to syslog. 2008-06-15 Nicolas François * libmisc/ulimit.c, lib/prototypes.h: Return failures of set_filesize_limit(). Change the prototype to return an int instead of void. 2008-06-15 Nicolas François * libmisc/failure.c: Try to close the open file if a failure occured during lseek(), read() or write(). 2008-06-15 Nicolas François * libmisc/log.c: Check return values. If lseek() failed, avoid reading or writing at an unspecified location. Log to syslog in case of failure. * libmisc/log.c: Use the right casts. 2008-06-15 Nicolas François * libmisc/find_new_ids.c, libmisc/find_new_gid.c, libmisc/find_new_uid.c, libmisc/Makefile.am, lib/prototypes.h: Split find_new_ids.c into find_new_gid.c and find_new_uid.c to ease the description of login.defs variables in the different tools. 2008-06-15 Nicolas François * libmisc/failure.c: Ignore the return value of strftime() and printf(). * libmisc/failure.c: Fix syslog call. The UID is not available. User the username specified in the utmp/utmpx entry. 2008-06-15 Nicolas François * lib/defines.h: Avoid implicit conversion of pointers to booleans. * lib/defines.h: Ignore return values of setlocale() except the first call. * lib/defines.h: Fix a splint observer warning by using an intermediate variable (old_locale). 2008-06-15 Nicolas François * libmisc/failure.c: Check return values. If lseek() failed, avoid reading or writing at an unspecified location. Log to syslog in case of failure when reading a faillog entry or writing in faillog or btmp. * libmisc/failure.c: Check if the file exist before opening it. * libmisc/failure.c: Log failures of open() and close() when necessary. 2008-06-14 Nicolas François * lib/prototypes.h: Add the getrange() prototype. * lib/prototypes.h: Fix the valid_field() prototype (does not return an bool). * lib/prototypes.h: Fix the valid() prototype (it does return a bool). 2008-06-14 Nicolas François * lib/getdef.c: Fix the getdef_ulong() prototype. * lib/getdef.h: Fix the getdef_ulong() prototype. 2008-06-14 Nicolas François * src/lastlog.c: Use getrange to parse the range of users. * src/lastlog.c: umin and umax do not need to be signed long. Use an unsigned long which might be needed to parse a GID or UID. Add the has_umin and has_umax to replace the -1 values. * src/lastlog.c: Cast dates to time_t. * src/lastlog.c: Prefix lastlog errors with "lastlog: ". 2008-06-14 Nicolas François * libmisc/getlong.c: Reset errno before calling strtol(). Otherwise, errno could be already set to ERANGE. 2008-06-14 Nicolas François * libmisc/Makefile.am, libmisc/getrange.c: Added function to parse a range (useful for lastlog). 2008-06-14 Nicolas François * src/chsh.c: is not needed. 2008-06-13 Nicolas François * lib/prototypes.h: Define AUDIT_NO_ID to (unsigned int) -1. This value should be used when the ID should not be considered. * lib/prototypes.h: Fix the prototype of do_rlogin() according to earlier changes. 2008-06-13 Nicolas François * lib/shadow.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spwd.sp_flag. * lib/shadow.c: Add brackets. * lib/shadow.c: Avoid implicit conversion of pointers to booleans. * lib/shadow.c: The size argument of fgets is an int, not a size_t. 2008-06-13 Nicolas François * lib/commonio.c: len should be typed ssize_t as it is the return of read(), and is compared to 0. Cast to size_t when necessary. 2008-06-13 Nicolas François * libmisc/find_new_ids.c: Use getdef_ulong to retrieve UIDs/GIDs from login.defs. Type constants to long integers. 2008-06-13 Nicolas François * lib/gshadow.c: Use a bool when possible instead of int integers. * lib/gshadow.c: Remove __setsgNIS() -never used). * lib/gshadow.c: Avoid multi-statements lines. * lib/gshadow.c: Avoid assignments in comparisons. * lib/gshadow.c: ptr[nelem] is a string. Initialize it to NULL instead of '\0'. * lib/gshadow.c: Add brackets and parenthesis. * lib/gshadow.c: The size argument of strncpy is a size_t and the size argument of fgets is an int. 2008-06-13 Nicolas François * lib/groupio.c: Add brackets. * lib/groupio.c: Make sure malloc receives a size_t. * lib/groupio.c: Avoid multi-statements lines. 2008-06-13 Nicolas François * lib/sgetspent.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spwd.sp_flag. 2008-06-13 Nicolas François * lib/getdef.h, lib/getdef.c: Add getdef_ulong(). * lib/getdef.c: Added TODOs because of lack of error checking. * lib/getdef.c: The size argument of fgets is an int, not a size_t. * lib/getdef.c: Avoid multi-statements lines. 2008-06-13 Nicolas François * src/id.c: Make sure malloc receives a size_t. * src/id.c: Use a %lu format and cast group and user IDs to unsigned long integers. 2008-06-13 Nicolas François * src/sulogin.c: Ignore the return value of signal(). 2008-06-13 Nicolas François * src/groups.c: sys_ngroups is only used when HAVE_GETGROUPS is defined. 2008-06-13 Nicolas François * src/faillog.c: Ignore return value of time() when use with a non NULL argument. * src/faillog.c: Use a %lu format and cast number of days to unsigned long integers. * src/faillog.c: Cast dates to time_t. 2008-06-13 Nicolas François * src/login.c: Ignore the return value of signal(). * src/login.c: Use a %lu format and cast group and user IDs to unsigned long integers. * src/login.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-13 Nicolas François * src/chage.c: Add the arguments' names in the functions prototypes. * src/chage.c: The ID argument of audit_logger is an unsigned int. Use AUDIT_NO_ID instead of -1. * src/chage.c: print_date() received a time_t. * src/chage.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spwent.sp_flag. 2008-06-13 Nicolas François * src/groupadd.c: The ID argument of audit_logger is an unsigned int. Use AUDIT_NO_ID instead of -1. * src/groupadd.c: Cast the parsed GID/UID to a gid_t/uid_t. 2008-06-13 Nicolas François * src/pwck.c: Use a %lu format and cast group and user IDs to unsigned long integers. * src/pwck.c: Cast number of days to a long integer. * src/pwck.c: Use the SCALE macro instead of (24L * 3600L) for the values to be set in /etc/shadow. * src/pwck.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spent.sp_flag. 2008-06-13 Nicolas François * src/passwd.c: Ignore return value of time() when use with a non NULL argument. * src/passwd.c: Cast number of days to a long integer. 2008-06-13 Nicolas François * src/groupmod.c: The ID argument of audit_logger is an unsigned int. Use AUDIT_NO_ID instead of -1. * src/groupmod.c: Use a %lu format and cast group and user IDs to unsigned long integers. * src/groupmod.c: Cast the parsed GID/UID to a gid_t/uid_t. 2008-06-13 Nicolas François * src/useradd.c: The ID argument of audit_logger is an unsigned int. Use AUDIT_NO_ID instead of -1. * src/useradd.c: Cast the parsed GID/UID to a gid_t/uid_t. * src/useradd.c: The size argument of fgets is an int, not a size_t. * src/useradd.c: Cast number of days to a long integer. * src/useradd.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spent.sp_flag. * src/useradd.c: Use a %lu format and cast group and user IDs to unsigned long integers. 2008-06-13 Nicolas François * src/su.c: fork() and waitpid() return a pid_t, not an int. * src/su.c: Add brackets and parenthesis. * src/su.c: Ignore the return value of signal(). 2008-06-13 Nicolas François * src/groupdel.c: The ID argument of audit_logger is an unsigned int. Use AUDIT_NO_ID instead of -1. 2008-06-13 Nicolas François * src/expiry.c: Ignore the return value of signal(). 2008-06-13 Nicolas François * src/newusers.c: Fix the check for GID/UID validity. * src/newusers.c: Comment why we use both getgrgid() and gr_locate_gid(). * src/newusers.c: Cast the parsed GID/UID to a gid_t/uid_t. * src/newusers.c: Cast the number of days to a long integer. * src/newusers.c: Use SHADOW_SP_FLAG_UNSET for the initial value of spent.sp_flag. * src/newusers.c: The size argument of fgets is an int, not a size_t. 2008-06-13 Nicolas François * src/usermod.c: Cast dates to time_t, and number of days to a long integer. * src/usermod.c: Cast UIDs and GIDs to uid_t and gid_t after checking the ranges. * src/usermod.c: The ID argument of audit_logger is an unsigned int. * src/usermod.c: read() returns a ssize_t. * src/usermod.c: Cast the return value of malloc and make sure it receives a size_t. 2008-06-13 Nicolas François * src/logoutd.c: Ignore return value of time() when use with a non NULL argument. 2008-06-13 Nicolas François * src/pwconv.c: Use SHADOW_SP_FLAG_UNSET for the initial value of sp.sp_flag. * src/pwconv.c: Cast number of days to a long integer. 2008-06-13 Nicolas François * src/gpasswd.c: The ID argument of audit_logger is an unsigned int. * src/gpasswd.c: Ignore the return value of signal(). The signal handlers are only changed for the last steps of gpasswd, and there is no need to restore them. 2008-06-13 Nicolas François * src/userdel.c: The ID argument of audit_logger is an unsigned int. * src/userdel.c: fork() and wait() return a pid_t, not an int. 2008-06-13 Nicolas François * src/newgrp.c: Use a %lu format and cast group and user IDs to unsigned long integers. * src/newgrp.c: The ID argument of audit_logger is an unsigned int. * src/newgrp.c: Ignore the return value of signal() (the signal handlers are assumed to be the default one and are restored later). * src/newgrp.c: Do not checl if a pid_t is < 0, check if equal to (pid_t)-1. 2008-06-13 Nicolas François * libmisc/isexpired.c: Cast number of days to a long integer. * libmisc/isexpired.c: Add brackets and parenthesis. 2008-06-13 Nicolas François * libmisc/copydir.c: Do not specify a size of arrays in the prototypes. * libmisc/copydir.c: Use a size_t for the length of strings. * libmisc/copydir.c: Cast the return value of malloc(). * libmisc/copydir.c: The size argument of write() is a size_t. 2008-06-13 Nicolas François * libmisc/pwd2spwd.c: Cast number of days to a long integer. * libmisc/pwd2spwd.c: Use SHADOW_SP_FLAG_UNSET for the initial value of sp.sp_flag. 2008-06-13 Nicolas François * lib/defines.h: Include since it uses the macro that might be defined in this header file. * lib/defines.h: Prefer checking if HAVE_LOCALE_H or ENABLE_NLS are defined (rather than set to non 0). * lib/defines.h: The dummy implementations of bindtextdomain() and textdomain() should return a pointer. Return NULL instead of /* empty */ * lib/defines.h: Define SHADOW_SP_FLAG_UNSET, to be used for the initialization of sp_flag field of the shadow structures. * lib/defines.h: Define LC_ALL, needed even if HAVE_LOCALE_H is not defined. 2008-06-13 Nicolas François * libmisc/sulog.c: Ignore the return value of umask() when the mask is restored. * libmisc/sulog.c: Add brackets. * libmisc/sulog.c: Ignore return value of time() when use with a non NULL argument. 2008-06-13 Nicolas François * libmisc/log.c: Avoid assignments in comparisons. * libmisc/log.c: Add brackets and parenthesis. * libmisc/log.c: read() returns a ssize_t (note size_t). * libmisc/log.c: Avoid implicit conversion of pointers to booleans. * libmisc/log.c: Ignore return value of time() when use with a non NULL argument. 2008-06-13 Nicolas François * libmisc/strtoday.c: Avoid implicit conversion of pointers to booleans. * libmisc/strtoday.c: Add brackets and parenthesis. 2008-06-13 Nicolas François * libmisc/salt.c: Use a size_t for the size of strings instead of unsigned int. * libmisc/salt.c: Add brackets and parenthesis. * libmisc/salt.c: Avoid assignments in comparisons. 2008-06-13 Nicolas François * libmisc/age.c: fork() and wait() return a pid_t, not an int. * libmisc/age.c: Avoid implicit conversion of pointers to booleans. * libmisc/age.c: Avoid assignments in comparisons. * libmisc/age.c: Ignore the return value of printf(), puts(), fputs() and fflush(). * libmisc/age.c: Add brackets and parenthesis. * libmisc/age.c: Cast the return value of time() to long and converted to a date. 2008-06-13 Nicolas François * libmisc/rlogin.c: The size argument of read() is a size_t. Propagate this time to the callers (the get_remote_string() and do_rlogin() functions). * libmisc/rlogin.c: Add brackets and parenthesis. * libmisc/rlogin.c: Avoid multi-statements lines. * libmisc/rlogin.c: Avoid assignments in comparisons. * libmisc/rlogin.c: Avoid implicit conversion of pointers to booleans. 2008-06-13 Nicolas François * libmisc/failure.c: Avoid assignments in comparisons. * libmisc/failure.c: read() returns a ssize_t. * libmisc/failure.c: Add brackets and parenthesis. * libmisc/failure.c: Ignore return value of time() when use with a non NULL argument. 2008-06-13 Nicolas François * libmisc/chowntty.c: Avoid assignments in comparisons. * libmisc/chowntty.c: Avoid implicit conversion of pointers to booleans. * libmisc/chowntty.c: Add brackets and parenthesis. 2008-06-13 Nicolas François * libmisc/audit_help.c: Add brackets. 2008-06-13 Nicolas François * libmisc/addgrps.c: Avoid implicit conversion of pointers to booleans. * libmisc/addgrps.c: Add brackets. 2008-06-13 Nicolas François * libmisc/utmp.c: Avoid implicit conversion of pointers to booleans. 2008-06-13 Nicolas François * libmisc/console.c, libmisc/hushed.c, libmisc/yesno.c, libmisc/loginprompt.c, libmisc/ttytype.c, libmisc/tz.c, src/login_nopam.c, src/chpasswd.c, src/chgpasswd.c, lib/port.c: The size argument of fgets is an int, not a size_t. * libmisc/loginprompt.c: Ignore the return value from signal() when the signal handlers are restored. * src/chpasswd.c: Cast the return value of time() to a long integer. * src/chpasswd.c: Use the SCALE macro instead of (24L * 3600L) for the values to be set in /etc/shadow. 2008-06-10 Nicolas François * src/pwck.c: Use a bool when possible instead of int integers. * src/pwck.c: Avoid implicit conversion of integers to booleans. 2008-06-10 Nicolas François * src/su.c: Use a bool when possible instead of int integers. * src/su.c: Add brackets and parenthesis. * src/su.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/su.c: Ignore the return value of pam_end() before exiting. * src/su.c: Avoid assignments in comparisons. * src/su.c: Avoid multi-statements lines. 2008-06-10 Nicolas François * lib/prototypes.h, libmisc/valid.c: Change the prototype of valid() to return a bool. * libmisc/valid.c: Add parenthesis. 2008-06-10 Nicolas François * lib/commonio.c: Add brackets and parenthesis. * lib/commonio.c: Check the result of fgets(). * lib/commonio.c: Avoid implicit conversion of pointers to booleans. 2008-06-10 Nicolas François * lib/prototypes.h: Fix the prototypes to match earlier changes. 2008-06-10 Nicolas François * lib/nscd.c: Include defines.h. * lib/nscd.c: Always warn when the nscd cache cannot be flushed. * lib/nscd.c: Avoid assignments in comparisons. * lib/nscd.c: Ignore the return value of fputs() when printing errors. 2008-06-10 Nicolas François * lib/port.c: Add brackets and parenthesis. * lib/port.c: Change isttytime() prototype to return a bool. * lib/port.c: Ignore the return value of fclose () (file open read-only). * lib/port.c: Avoid multi-statements lines. 2008-06-10 Nicolas François * src/id.c: Ignore the return value of fputs(), puts(), putchar(), and printf(). * src/id.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/id.c: Add brackets and parenthesis. * src/id.c: Avoid implicit conversion of pointers / integers to booleans. 2008-06-10 Nicolas François * src/chsh.c: Use a bool when possible instead of int integers. * src/chsh.c: restricted_shell() renamed is_restricted_shell(). check_shell() renamed shell_is_listed(). * src/chsh.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/chsh.c: Avoid implicit conversion of pointers / integers to booleans. * src/chsh.c: Ignore the return value of pam_end() before exiting. 2008-06-10 Nicolas François * src/grpunconv.c: Use a bool when possible instead of int integers. * src/grpunconv.c: Add brackets and parenthesis. * src/grpunconv.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/grpunconv.c: Avoid implicit conversion of pointers / integers to booleans. 2008-06-10 Nicolas François * src/sulogin.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/sulogin.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/sulogin.c: Avoid assignments in comparisons. * src/sulogin.c: Ignore the return value of alarm(). 2008-06-10 Nicolas François * src/groups.c: Use a bool when possible instead of int integers. * src/groups.c: Add brackets and parenthesis. * src/groups.c: Avoid implicit conversion of pointers / integers to booleans. * src/groups.c: Avoid assignments in comparisons. * src/groups.c: Ignore the return value of putchar(), printf() * src/groups.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-10 Nicolas François * src/grpconv.c: Use a bool when possible instead of int integers. * src/grpconv.c: Add brackets and parenthesis. * src/grpconv.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/grpconv.c: Avoid implicit conversion of pointers / integers to booleans. 2008-06-10 Nicolas François * src/faillog.c: Use a bool when possible instead of int integers. * src/faillog.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/faillog.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/faillog.c: Add brackets and parenthesis. 2008-06-10 Nicolas François * src/login.c: Avoid multi-statements lines. * src/login.c: Ignore the return value of pam_end() before exiting. * src/login.c: Use a bool when possible instead of int integers. * src/login.c: Add brackets and parenthesis. * src/login.c: Ignore the return values of fflush(), putchar(), puts(). * src/login.c: Ignore the return value of fclose() for read-only files. * src/login.c: Avoid assignments in comparisons. * src/login.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/login.c: Avoid implicit conversion of pointers / integers / chars to booleans. 2008-06-10 Nicolas François * src/chage.c: Use a bool when possible instead of int integers. * src/chage.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-10 Nicolas François * src/groupadd.c: Use a bool when possible instead of int integers. * src/groupadd.c: Add brackets and parenthesis. * src/groupadd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/groupadd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/groupadd.c: Ignore the return value of pam_end() before exiting. 2008-06-10 Nicolas François * src/pwck.c: Use a bool when possible instead of int integers. * src/pwck.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-10 Nicolas François * src/passwd.c: Use a bool when possible instead of int integers. * src/passwd.c: Avoid assignments in comparisons. * src/passwd.c: Add brackets and parenthesis. * src/passwd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/passwd.c: Move the "context_t c" declaration at the beginning check_selinux_access. * src/passwd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-10 Nicolas François * src/groupmod.c: Use a bool when possible instead of int integers. * src/groupmod.c: Avoid assignments in comparisons. * src/groupmod.c: Add brackets and parenthesis. * src/groupmod.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/groupmod.c: Use a %lu format to print GIDs, and cast the GID to (unsigned long int). * src/groupmod.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/groupmod.c: Ignore the return value of pam_end() before exiting. 2008-06-09 Nicolas François * src/su.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/useradd.c: Use a bool when possible instead of int integers. * src/useradd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/useradd.c: Add brackets and parenthesis. * src/useradd.c: Avoid assignments in comparisons. * src/useradd.c: Ignore the return value of fclose() for read-only files. * src/useradd.c: Ignore the return value of fflush() before closing the files. * src/useradd.c: Avoid multi-statements lines. * src/useradd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/useradd.c: Ignore the return value of pam_end() before exiting. 2008-06-09 Nicolas François * src/vipw.c: Use a bool when possible instead of int integers. * src/vipw.c: Ignore the return value of umask(), when the mask is set again to the old value. * src/vipw.c: Avoid implicit conversion of pointers / integers to booleans. * src/vipw.c: Add brackets and parenthesis. * src/vipw.c: Avoid assignments in comparisons. * src/vipw.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/vipw.c: Add missing termination of the longopts parameter for getopt_long(). 2008-06-09 Nicolas François * src/chgpasswd.c: Use a bool when possible instead of int integers. * src/chgpasswd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/chgpasswd.c: Avoid implicit conversion of integers to booleans. 2008-06-09 Nicolas François * src/groupdel.c: Use a bool when possible instead of int integers. * src/groupdel.c: Avoid implicit conversion of pointers / integers to booleans. * src/groupdel.c: Avoid assignments in comparisons. * src/groupdel.c: Ignore the return value of pam_end() before exiting. * src/groupdel.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/expiry.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/expiry.c: Add brackets and parenthesis. * src/expiry.c: Avoid assignments in comparisons. * src/expiry.c: Avoid implicit conversion of pointers to booleans. 2008-06-09 Nicolas François * src/pwunconv.c: Use a bool when possible instead of int integers. * src/pwunconv.c: Add brackets and parenthesis. * src/pwunconv.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/pwunconv.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/pwunconv.c: Avoid assignments in comparisons. 2008-06-09 Nicolas François * src/usermod.c: Use a bool when possible instead of int integers. * src/usermod.c: Add brackets and parenthesis. * src/usermod.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/usermod.c: Avoid assignments in comparisons. * src/usermod.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/usermod.c: Ignore the return value of pam_end() before exiting. 2008-06-09 Nicolas François * src/groupmems.c: Move the declaration of option_index and long_options before the blocks of code. * src/groupmems.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/groupmems.c: Ignore the return value of pam_end() before exiting. 2008-06-09 Nicolas François * src/chfn.c: Use a bool when possible instead of int integers. * src/chfn.c: Avoid implicit conversion of integers / chars to booleans. * src/chfn.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/logoutd.c: Use a bool when possible instead of int integers. * src/logoutd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/logoutd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/logoutd.c: Add brackets and parenthesis. 2008-06-09 Nicolas François * src/chpasswd.c: Use a bool when possible instead of int integers. * src/chpasswd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/chpasswd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/pwconv.c: Use a bool when possible instead of int integers. * src/pwconv.c: Add brackets and parenthesis. * src/pwconv.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/pwconv.c: Avoid implicit conversion of pointers / integers / chars to booleans. 2008-06-09 Nicolas François * NEWS, src/newusers.c: Implement the -r, --system option. * src/newusers.c: Use a bool when possible instead of int integers. * src/newusers.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/newusers.c: Ignore the return value of pam_end() before exiting. * src/newusers.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/newusers.c: Avoid multi-statements lines. * src/newusers.c: Add brackets and parenthesis. 2008-06-09 Nicolas François * src/gpasswd.c: Use a bool when possible instead of int integers. * src/gpasswd.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/gpasswd.c: Ignore the return value of putchar() and fflush() before exiting. * src/gpasswd.c: check_list() renamed is_valid_user_list(), and return a bool. * src/gpasswd.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/grpck.c: Use a bool when possible instead of int integers. * src/grpck.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/lastlog.c: Use a bool when possible instead of int integers. * src/lastlog.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/lastlog.c: Add brackets and parenthesis. * src/lastlog.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). 2008-06-09 Nicolas François * src/userdel.c: Use a bool for the is_shadow_pwd, is_shadow_grp, deleted_user_group, was_member, was_admin, and the options' flags. * src/userdel.c: Change path_prefix() prototype to return a bool. * src/userdel.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/userdel.c: Ignore the return value from pam_end() since we are exiting anyway just afterwards. * src/userdel.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/userdel.c: Add brackets and parenthesis. * src/userdel.c: Avoid assignments in comparisons. * src/userdel.c: Do not ignore the return value of the *_unlock() functions. 2008-06-09 Nicolas François * src/login_nopam.c: Do not use the YES and NO macros. Use the booleans true and false instead. Change the prototypes of list_match(), user_match(), from_match(), and string_match() accordingly. Also use booleans internally. * src/login_nopam.c: Add brackets and parenthesis. * src/login_nopam.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/login_nopam.c: Avoid assignments in comparisons. 2008-06-09 Nicolas François * src/newgrp.c: Use a bool for is_newgrp, notfound, needspasswd, initflag, and cflag. * src/newgrp.c: Add brackets and parenthesis. * src/newgrp.c: Avoid implicit conversion of pointers / integers / chars to booleans. * src/newgrp.c: Avoid multi-statements lines. * src/newgrp.c: Ignore return value of setlocale(), bindtextdomain(), and textdomain(). * src/newgrp.c: Avoid assignments in comparisons. 2008-06-09 Nicolas François * libmisc/list.c: Change is_on_list() prototype to return a bool. 2008-06-09 Nicolas François * libmisc/find_new_ids.c: Change find_new_uid() and find_new_gid() prototypes to use a bool for their first argument (sys_user / sys_group). 2008-06-09 Nicolas François * libmisc/console.c: Change is_listed() prototype to return a bool. The default parameter should also be a bool. * libmisc/console.c: Add brackets and parenthesis. * libmisc/console.c: Avoid assignments in comparisons. * libmisc/console.c: Change console() prototype to return a bool. 2008-05-26 Nicolas François * lib/sgetspent.c: Add brackets and parenthesis. * lib/sgetspent.c: Avoid assignments in comparisons. * lib/sgetspent.c: Avoid implicit conversion of pointers / chars to booleans. * lib/sgetspent.c: Avoid multi-statements lines. 2008-05-26 Nicolas François * lib/sgetpwent.c: Avoid implicit conversion of pointers / chars to booleans. * lib/sgetpwent.c: Add brackets and parenthesis. * lib/sgetpwent.c: Return NULL instead of 0. * lib/sgetpwent.c: Do not check twice if fields[2] and fields[3] are not empty. * lib/sgetpwent.c: Avoid assignments in comparisons. 2008-05-26 Nicolas François * libmisc/getdate.y: abbrev is a bool. * libmisc/getdate.y: Avoid implicit conversion of pointers / chars / integers to booleans. 2008-05-26 Nicolas François * lib/prototypes.h: Fix prototypes according to earlier changes (usage of the bool type). * lib/prototypes.h: Add the arguments' name to the prototypes. 2008-05-26 Nicolas François * lib/groupio.h: Add protection against multiple inclusions. 2008-05-26 Nicolas François * lib/pwio.h: Add protection against multiple inclusions. * lib/pwio.c: The changed, isopen, locked, and readonly fields of the db are booleans. 2008-05-26 Nicolas François * lib/shadowio.h, lib/shadowio.c: spw_file_present returns a bool. * lib/shadowio.h: Add protection against multiple inclusions. * lib/shadowio.c: The changed, isopen, locked, and readonly fields of the db are booleans. 2008-05-26 Nicolas François * lib/sgroupio.c: Avoid assignments in comparisons. * lib/sgroupio.c: Add brackets. * lib/sgroupio.c: Avoid implicit conversion of pointers / integers to booleans. * lib/sgroupio.c: The changed, isopen, locked, and readonly fields of the db are booleans. * lib/sgroupio.h, lib/sgroupio.c: sgr_file_present returns a bool. * lib/sgroupio.h: Add protection against multiple inclusions. 2008-05-26 Nicolas François * lib/gshadow.c: nis_used and nis_bound are booleans. * lib/gshadow.c: Avoid implicit conversion of pointers / integers to booleans. * lib/gshadow.c: Avoid assignments in comparisons. * lib/gshadow.c: Add brackets. 2008-05-26 Nicolas François * lib/groupio.c: The changed, isopen, locked, and readonly fields of the db are booleans. * lib/groupio.h: Add protection against multiple inclusion. 2008-05-26 Nicolas François * lib/sgetgrent.c: Avoid implicit conversion of pointers / chars to booleans. * lib/sgetgrent.c: Avoid assignments in comparisons. * lib/sgetgrent.c: Add brackets. 2008-05-26 Nicolas François * lib/encrypt.c: Avoid implicit conversion of pointers to booleans. * lib/encrypt.c: Add parenthesis. 2008-05-26 Nicolas François * lib/port.c: Avoid implicit conversion of pointers / integers / chars to booleans. * lib/port.c: Avoid multiple statement on the same line. * lib/port.c: Add brackets and parenthesis. * lib/port.c: Avoid assignments in comparisons. * lib/port.c: Fix typo comparision -> comparison (in comment). 2008-05-26 Nicolas François * lib/fputsx.c: Add brackets. * lib/fputsx.c: Avoid assignments in comparisons. * lib/fputsx.c: Avoid implicit conversion of pointers / integers / chars to booleans. 2008-05-26 Nicolas François * lib/commonio.h: commonio_entry.changed, commonio_db.changed, commonio_db.isopen, commonio_db.locked, and commonio_db.readonly are no booleans. * lib/commonio.h: Include defines.h to get the definition of bool. * lib/commonio.h: commonio_present returns a bool * lib/commonio.c: Implement above changes. * lib/commonio.c: add argument names in prototypes. * lib/commonio.c: name_is_nis returns a bool. * lib/commonio.c: nscd_need_reload is a bool. * lib/commonio.c: Improve types (use size_t / pid_t when needed instead of int). * lib/commonio.c: Avoid assignments in comparisons. * lib/commonio.c: Add brackets and parenthesis. * lib/commonio.c: Avoid implicit conversion of pointers / integers to booleans * lib/commonio.c: The return values of utime is not checked on purpose. 2008-05-26 Nicolas François * libmisc/isexpired.c: ARGSUSED is no more needed (shadow is always supported). * libmisc/isexpired.c: Avoid implicit conversion of pointers to booleans. * libmisc/isexpired.c: Add brackets and parenthesis. 2008-05-26 Nicolas François * libmisc/sulog.c (sulog): The success argument is a bool. * libmisc/sulog.c: The return values of fflush is not checked on purpose. * libmisc/sulog.c: Indicate that some return values should be checked. 2008-05-26 Nicolas François * libmisc/ttytype.c: Avoid implicit conversion of pointers / integers to booleans. * libmisc/ttytype.c: Avoid assignments in comparisons. * libmisc/ttytype.c: Add brackets and parenthesis. * libmisc/ttytype.c: The return values of fclose is not checked on purpose. 2008-05-26 Nicolas François * libmisc/mail.c: Avoid implicit conversion of pointers to booleans. * libmisc/mail.c: Avoid assignments in comparisons. 2008-05-26 Nicolas François * libmisc/loginprompt.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/loginprompt.c: Add brackets. * libmisc/loginprompt.c: Avoid assignments in comparisons. * libmisc/loginprompt.c: The return values of fclose and fflush are not checked on purpose. 2008-05-26 Nicolas François * libmisc/setupenv.c: Avoid implicit conversion of chars to booleans. 2008-05-26 Nicolas François * libmisc/copydir.c: selinux_checked, selinux_enabled, and set_orig are now booleans. 2008-05-26 Nicolas François * libmisc/setugid.c (setup_uid_gid): The is_console argument is now a bool. * libmisc/setugid.c: Avoid implicit conversion of integers / pointers to booleans. * libmisc/setugid.c: Add brackets. 2008-05-26 Nicolas François * libmisc/pam_pass.c (do_pam_passwd): The silent and change_expired are no booleans instead of int. * libmisc/pam_pass.c: The return value of pam_end is not checked on purpose. 2008-05-26 Nicolas François * libmisc/getlong.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/getlong.c: Add brackets. 2008-05-26 Nicolas François * libmisc/valid.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/valid.c: Add brackets. 2008-05-26 Nicolas François * libmisc/yesno.c: yes_or_no returns a bool instead of int. * libmisc/yesno.c: Avoid implicit conversion of pointers to booleans. * libmisc/yesno.c: The return value of fflush is not checked on purpose. 2008-05-26 Nicolas François * libmisc/age.c: Avoid implicit conversion of integers to booleans. 2008-05-26 Nicolas François * libmisc/rlogin.c: Avoid assignments in comparisons. * libmisc/rlogin.c: Avoid implicit conversion of integers to booleans. * libmisc/rlogin.c: Add brackets. 2008-05-26 Nicolas François * libmisc/failure.c (failcheck): The failed argument is a bool. * libmisc/failure.h: Likewise. * libmisc/failure.c (too_many_failures): too_many_failures returns a bool. * libmisc/failure.c: Add notes about unchecked return values. * libmisc/failure.c: Avoid assignments in comparisons. * libmisc/failure.c: Add brackets. 2008-05-25 Nicolas François * libmisc/myname.c: Avoid assignments in comparisons. * libmisc/myname.c: Avoid implicit conversion of pointers / chars to booleans. * libmisc/myname.c: Add brackets. 2008-05-25 Nicolas François * libmisc/utmp.c (checkutmp): Change picky argument's type to bool. * libmisc/utmp.c: Use bool when possible (found_utmpx, found_utmp). * libmisc/utmp.c: Add note about unchecked return values. 2008-05-25 Nicolas François * libmisc/addgrps.c: Change type of added to bool. * libmisc/addgrps.c: Avoid implicit conversion of pointers to booleans. 2008-05-25 Nicolas François * libmisc/hushed.c: hushed returns a bool instead of int. * libmisc/hushed.c: Avoid assignments in comparisons. * libmisc/hushed.c (hushed): Change type of found to bool. * libmisc/hushed.c: Add brackets. * libmisc/hushed.c: Always check if the user or the shell is in the file. Do not check the first character of the line first. This is simpler and match better with the HUSHLOGIN_FILE documentation. 2008-05-25 Nicolas François * lib/getdef.h, lib/getdef.c: getdef_bool returns a bool instead of int. * lib/getdef.c: Change typo of def_loaded to bool. * lib/getdef.c: Add brackets. * lib/getdef.c: Avoid assignments in comparisons. 2008-05-25 Nicolas François * libmisc/chowntty.c: is_my_tty returns a bool. * libmisc/chowntty.c: Avoid implicit conversion of integers to booleans. * libmisc/chowntty.c: Add brackets. 2008-05-25 Nicolas François * libmisc/chowndir.c: Avoid assignment in comparisons, implicit comparison of integers to booleans. * libmisc/chowndir.c: The return value of closedir is not checked on purpose. * libmisc/chowndir.c: Add brackets. 2008-05-25 Nicolas François * libmisc/chkname.h, libmisc/chkname.c: check_group_name (resp. check_user_name) renamed to is_valid_user_name (resp. is_valid_group_name). is_valid_user_name and is_valid_group_name return a bool. * src/grpck.c, src/newusers.c, src/usermod.c, src/useradd.c, src/groupmod.c, src/pwck.c, src/groupadd.c: Use is_valid_user_name and is_valid_group_name, following above change. * libmisc/chkname.c: Avoid implicit conversion of chars to booleans. Add brackets and parenthesis. 2008-05-25 Nicolas François * libmisc/xmalloc.c: Avoid implicit conversion of integers / pointers to booleans. * libmisc/xgetXXbyYY.c: Likewise. 2008-05-25 Nicolas François * configure.in, lib/defines.h: Allow usage of booleans in the source. 2008-05-25 Nicolas François * configure.in: Allow --disable-man and --enable-man=no. 2008-06-26 Nicolas François Prepare the 4.1.2.1 release * NEWS: set the release date. * man/po/*.po, po/*.po: Updated PO files. * configure.in: Set the version to 4.1.2.1. 2008-06-26 Nicolas François * NEWS, src/login.c: Fix an "audit log injection" vulnerability in login. This is similar to CVE-2008-1926 (util-linux-ng's login). This vulnerability makes it easier for attackers to hide activities by modifying portions of log events, e.g. by appending an addr= statement to the login name. * lib/prototypes.h: Added definition of AUDIT_NO_ID. 2008-05-25 Nicolas François Prepare the 4.1.2 release * NEWS: set the release date. * man/po/*.po, po/*.po: Updated PO files. * configure.in: Set the version to 4.1.2. 2008-05-25 Nicolas François * po/Makevars, man/po/Makefile.in.in: Run msgmerge with --previous. (This requires gettext >= 0.16) 2008-05-24 Nicolas François * libmisc/copydir.c (remove_tree): As we always use remove_tree followed by rmdir to remove the directory itself, delete also the root directory in remove_tree. * src/userdel.c, src/usermod.c: Do not call rmdir after remove_tree. 2008-05-24 Nicolas François * libmisc/copydir.c (remove_tree): Make sure unlink is successful when removing files. 2008-05-24 Nicolas François * libmisc/pwdcheck.c: Simply passwd_check since it's never used when configured with PAM support. 2008-05-24 Nicolas François Fix compiler warnings: * libmisc/audit_help.c: Include prototypes.h to get the prototype of audit_help_open. * libmisc/salt.c: Use booleans instead of negating integers. * src/passwd.c: Declare the check_selinux_access prototype and avoid name clashes (change_user -> changed_user; change_uid -> changed_uid; access -> requested_access) * libmisc/list.c: Avoid assignments in comparisons, assignments with post increments (x++), use of integers as booleans, and explicitly mark blocks with brackets. * libmisc/fields.c: Likewise. * libmisc/copydir.c: Likewise. * libmisc/fields.c: Add comments. * libmisc/copydir.c: Mark function whose return value is not checked as such. 2008-05-23 Nicolas François * libmisc/pam_pass.c: Use fputs rather than fprintf for constant strings. 2008-05-21 Nicolas François * man/login.1.xml: Indicate that login should be executed with "exec login" if called from a shell. 2008-05-21 Nicolas François * man/passwd.1.xml: Remove the advices for the choice of a good password (they are debatable). Point to http://en.wikipedia.org/wiki/Password_strength instead. 2008-05-20 Nicolas François * NEWS, libmisc/salt.c (SHA_salt_size): Seed the RNG, and fix a overflow. These caused the SHA salt size to always be 8 bytes, instead of being in the 8-16 range. Thanks to Peter Vrabec pvrabec@redhat.com for noticing. * NEWS, libmisc/salt.c (SHA_salt_rounds): Seed the RNG with seedRNG instead of srand, and fix the same overflow. This caused the number of rounds to always be the smallest one. 2008-05-20 Nicolas François * man/newusers.8.xml man/groupmems.8.xml man/groupdel.8.xml man/useradd.8.xml man/groupadd.8.xml man/newgrp.1.xml man/sg.1.xml man/chgpasswd.8.xml man/groupmod.8.xml: Tag the section which require --enable-shadowgrp accordingly. 2008-05-19 Nicolas François * man/login.defs.5.xml: SHA_CRYPT_MAX_ROUNDS and SHA_CRYPT_MIN_ROUNDS can only exist if configured with --with-sha-crypt. 2008-05-19 Nicolas François * NEWS, man/useradd.8.xml: Document the -k, --skel option, and update the -m, --create-home documentation. 2008-05-19 Nicolas François * man/useradd.8.xml: Sort options. 2008-05-19 Nicolas François * lib/getdef.c: SHA_CRYPT_MAX_ROUNDS and SHA_CRYPT_MIN_ROUNDS can only exist if configured with --with-sha-crypt. * man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml: Likewise. 2008-05-19 Nicolas François * libmisc/salt.c: Document the section closed by #endif 2008-05-19 Nicolas François * src/useradd.c: Fix formatting. 2008-05-19 Nicolas François * NEWS, man/useradd.8.xml: Document the -r, --system option. * NEWS, man/groupadd.8.xml: Document the -r, --system option. * NEWS, man/newusers.8.xml: Document the -r, --system option. * NEWS, man/newusers.8.xml: Document the -c, --crypt-method and -s, --sha-rounds options. 2008-05-18 Nicolas François Import Debian patch 487_passwd_chauthtok_failed_message * libmisc/pam_pass.c: Be more verbose and indicate that the password was not changed when pam_chauthtok fails (in addition to the PAM error, which may not be comprehensible for the users). 2008-05-18 Nicolas François Import Debian patch 434_login_stop_checking_args_after-- * NEWS, src/login.c (check_flags): Stop checking the arguments after --. The later options will be sent to the shell, and do not need to be checked. 2008-05-18 Nicolas François * src/vipw.c, src/su.c, src/newgrp.c: Harmonize the children's SIGSTOP handling. Raise the signal which stopped the child instead of always SIGSTOP. 2008-05-18 Nicolas François Import Debian patch 406_vipw_resume_properly. Thanks to Dean Gaudet. * NEWS, src/vipw.c: Resume properly after ^Z. 2008-04-27 Nicolas François * lib/getdef.c, lib/lockpw.c, lib/utent.c, lib/sgetgrent.c, lib/getdef.h, lib/pwauth.c, lib/sgetspent.c, lib/pwauth.h, lib/port.c, lib/encrypt.c, lib/groupio.c, lib/shadowmem.c, lib/port.h, lib/groupio.h, lib/groupmem.c, lib/exitcodes.h, lib/gshadow.c, lib/gshadow_.h, lib/sgroupio.c, lib/sgroupio.h, lib/shadowio.c, lib/pwio.c, lib/sgetpwent.c, lib/commonio.c, lib/faillog.h, lib/shadowio.h, lib/pwio.h, lib/pam_defs.h, lib/pwmem.c, lib/commonio.h, lib/shadow.c, lib/fputsx.c, lib/prototypes.h, libmisc/xmalloc.c, libmisc/limits.c, libmisc/entry.c, libmisc/console.c, libmisc/ulimit.c, libmisc/xgetXXbyYY.c, libmisc/chkname.c, libmisc/pwd2spwd.c, libmisc/xgetpwnam.c, libmisc/basename.c, libmisc/chkname.h, libmisc/chowndir.c, libmisc/audit_help.c, libmisc/chowntty.c, libmisc/hushed.c, libmisc/xgetpwuid.c, libmisc/getdate.h, libmisc/addgrps.c, libmisc/xgetgrgid.c, libmisc/utmp.c, libmisc/myname.c, libmisc/failure.c, libmisc/find_new_ids.c, libmisc/env.c, libmisc/rlogin.c, libmisc/age.c, libmisc/failure.h, libmisc/xgetgrnam.c, libmisc/yesno.c, libmisc/valid.c, libmisc/getlong.c, libmisc/obscure.c, libmisc/pam_pass.c, libmisc/motd.c, libmisc/salt.c, libmisc/setugid.c, libmisc/fields.c, libmisc/xgetspnam.c, libmisc/shell.c, libmisc/copydir.c, libmisc/setupenv.c, libmisc/strtoday.c, libmisc/loginprompt.c, libmisc/list.c, libmisc/pwd_init.c, libmisc/log.c, libmisc/mail.c, libmisc/ttytype.c, libmisc/pwdcheck.c, libmisc/sub.c, libmisc/sulog.c, libmisc/isexpired.c, libmisc/tz.c, src/newgrp.c, src/userdel.c, src/lastlog.c, src/grpck.c, src/gpasswd.c, src/newusers.c, src/pwconv.c, src/chpasswd.c, src/logoutd.c, src/chfn.c, src/groupmems.c, src/usermod.c, src/pwunconv.c, src/expiry.c, src/groupdel.c, src/chgpasswd.c, src/vipw.c, src/useradd.c, src/su.c, src/groupmod.c, src/passwd.c, src/pwck.c, src/groupadd.c, src/nologin.c, src/chage.c, src/login.c, src/suauth.c, src/faillog.c, src/grpconv.c, src/groups.c, src/sulogin.c, src/grpunconv.c, src/chsh.c, src/id.c: Make sure every source files are distributed with a copyright and license. Files with no license use the default 3-clauses BSD license. The copyright were mostly not recorded; they were updated according to the Changelog. "Julianne Frances Haugh and contributors" changed to "copyright holders and contributors". 2008-04-27 Nicolas François * NEWS, libmisc/sulog.c: If the SULOG_FILE does not exist when an su session is logged, make sure the file is created with group root, instead of using the group of the caller. 2008-04-27 Nicolas François * NEWS, libmisc/fields.c, src/chfn.c, man/chfn.1.xml: Allow non-US-ASCII characters in the GECOS fields ("name", "room number", and "other info" fields). 2008-04-17 Nicolas François * NEWS, src/newgrp.c: Fix compilation failure when compiled with audit support. Thanks to Mike Frysinger for reporting it. 2008-04-16 Nicolas François Ensure that getpwent() is used in setpwent(), getpwent(), endpwend() sequences (ditto for getgrent(), getspent(), and getsgent()). The only real (minor) issue was in login, which kept the passwd file open. * libmisc/entry.c: Remove unneeded setspent() and endspent() (only getspnam is called in the middle). * libmisc/find_new_ids.c: Make sure to close the password and group files with endpwent() and endgrent(). * libmisc/pwdcheck.c: Remove unneeded endspent() (only getspnam() is called before). * src/lastlog.c, src/passwd.c, src/groupmod.c, src/faillog.c, src/groups.c: Make sure to close the password file with endpwent(). * src/login.c: Remove unneeded setpwent() (only xgetpwnam is called before). * src/login.c, src/newgrp.c: Fix typos in comments. 2008-04-16 Nicolas François * NEWS, configure.in: Fix the detection of the audit, pam, and selinux. Fail if the feature is requested but the library (or header file) could not be found. If nothing is specified, enable the feature only if we can find the library (or header file). * configure.in: Document --with-selinux as "yes if found" rather than "autodetected" for consistency with other options. 2008-04-04 Mark Rosenstand * NEWS, etc/pam.d/Makefile.am: Add chfn, chsh, and userdel to $(pamd_files). Remove the duplicate useradd. And sort alphabetically. 2008-04-04 Nicolas François * NEWS: Prepare next release, 4.1.2. 2008-04-02 Nicolas François * NEWS, configure.in: Prepare release 4.1.1 * NEWS: Fix the release date of 4.1.0. Was in 2007, not 2008. 2008-04-02 Nicolas François * po/fr.po: Update according to the file under review. Thanks to Jean-Luc Coulon. 2008-04-01 Holger Wansing * po/de.po: updated to 431t 2008-03-31 Piarres Beobide * po/eu.po: updated to 431t 2008-03-30 Leandro Azevedo * po/pt_BR.po: updated to 360t71f 2008-03-30 Mehmet Türker * po/tr.po: updated to 431t 2008-03-30 Clytie Siddall * po/vi.po: updated to 431t 2008-03-30 Daniel Nylander * po/sv.po: updated to 431t 2008-03-29 helix84 * po/sk.po: updated to 431t 2008-03-27 Danilo Piazzalunga * po/it.po: updated to 431t 2008-03-26 Nicolas François * TODO: Added entries regarding SE Linux. 2008-03-26 Russell Coker * src/passwd.c, NEWS: Make SE Linux tests more strict, when the real UID is 0 SE Linux checks will be performed. 2008-03-24 Yuri Kozlov * po/ru.po: updated to 431t 2008-03-23 Miguel Figueiredo * po/pt.po: updated to 431t 2008-03-21 Changwoo Ryu * po/ko.po: updated to 431t 2008-03-17 Nicolas François * man/login.defs.5.xml: Fix manpages generation. The SYS_GID_MAX and SYS_UID_MAX entities were not defined. 2008-03-17 Nicolas François * src/faillog.c: Fix minor compilation warning (assignment used as a comparison). 2008-03-17 Nicolas François * lib/prototypes.h, src/login.c: login_access() is used in src/login.c, and defined in src/login_nopam.c (which lacks a prototype). Move its prototype from src/login.c to lib/prototypes.h. 2008-03-17 Nicolas François * src/gpasswd.c, src/groupmod.c: Compilation fix. gshadow_locked should only be used if SHADOWGRP is defined. 2008-03-17 Nicolas François * src/grpck.c: Fix some warnings. compare_members_lists() is only used if SHADOWGRP is defined. 2008-03-08 Nicolas François * NEWS, src/groupmod.c: Make sure the passwd, group, and gshadow files are unlocked on exit. Unlock locked files in fail_exit(). Prefer fail_exit() over exit(). * NEWS, src/groupmod.c: When the GID of a group is changed, update also the GID of the passwd entries of the users whose primary group is the group being modified. 2008-03-08 Nicolas François * lib/commonio.c (commonio_remove): Fail when the name to be removed is used by different entries (like commonio_update does). * NEWS: This fix the behavior of groupdel when the system is not configured to support split group but different group entries have the name of the group to be deleted. 2008-03-08 Nicolas François * NEWS, src/useradd.c: Make sure the passwd, group, shadow, and gshadow files are unlocked on exit. Unlock locked files in fail_exit(). Prefer fail_exit() over exit(). 2008-03-08 Nicolas François * NEWS, src/groupdel.c: Make sure the group, and gshadow files are unlocked on exit. Add function fail_exit(). Use fail_exit() instead of exit(). * src/groupdel.c: Fail immediately instead of increasing errors. Better handling of error cases, like locked group or gshadow file. 2008-03-08 Nicolas François * NEWS, src/newusers.c: Make sure the passwd, group, shadow, and gshadow files are unlocked on exit. Add function fail_exit(). Use fail_exit() instead of exit(). 2008-03-08 Nicolas François * NEWS, src/gpasswd.c: Make sure the group and gshadow files are unlocked on exit. Add function fail_exit(). Use fail_exit() instead of exit(). 2008-03-08 Nicolas François * NEWS, src/groupdel.c: Do not rewrite the group and gshadow file in case of error. 2008-03-08 Nicolas François * src/groupdel.c: Do not log that the group was deleted if an error occurred. 2008-03-08 Nicolas François * NEWS, src/groupdel.c: Do not raise an error if the group does not exist in the gshadow file. 2008-03-08 Nicolas François * etc/login.defs: Document MAX_MEMBERS_PER_GROUP. 2008-03-07 Nicolas François * src/newgrp.c: Add missing end of line in message. * src/newgrp.c: Add audit events for the authentication (AUDIT_GRP_AUTH). Thansk to Peter Vrabec. 2008-03-05 Nicolas François * NEWS, src/faillog.c: Only reset the entries of existing users with faillog -r (not all numeric IDs starting from 0). Thanks to Peter Vrabec. 2008-03-05 Nicolas François * src/pwunconv.c: Fix typo. One "can't open" message is a "can't lock". 2008-02-26 Nicolas François * src/gpasswd.c: When a password is moved to the gshadow file, use "x" instead of "x" to indicate that the password is shadowed (consistency with grpconv). 2008-02-26 Nicolas François * NEWS: Fix failures when the gshadow file is not present. Thanks to Christian Henz (http://bugs.debian.org/467488) * src/gpasswd.c (get_group): Do not fail if gshadow is not present. Just use the group file and set the grent structure * src/gpasswd.c (check_perms): The permissions should be checked using both the gshadow and group file. Add a parameter, and check if the gshadow file exists (is_shadowgrp). * src/gpasswd.c (main): Do not use sgent.sg_mem or sgent.sg_adm if the gshadow file is not present (sgent is not initialized in that case). The fields of sgent can be set, but not used. 2008-02-26 Nicolas François * src/gpasswd.c: Fix typo in comment. * src/gpasswd.c: Move comment regarding FIRST_MEMBER_IS_ADMIN to where it belongs. * src/gpasswd.c: Indicate the end of the #ifdef FIRST_MEMBER_IS_ADMIN section. 2008-02-25 Nicolas François * man/po/Makefile.in.in: Use --previous when merging PO files of the manpages. 2008-02-25 Nicolas François * man/login.defs.d/SYS_UID_MAX.xml, man/login.defs.d/SYS_GID_MAX.xml: Document new variables. * man/newusers.8.xml, man/login.defs.5.xml, man/login.defs.d/GID_MAX.xml, man/login.defs.d/UID_MAX.xml: newusers uses now the GID_MAX, GID_MIN, UID_MAX, UID_MIN, SYS_GID_MAX, SYS_GID_MIN, SYS_UID_MAX, and SYS_UID_MIN variables. * man/groupadd.8.xml, man/login.defs.5.xml: groupadd uses now the SYS_GID_MAX, and SYS_GID_MIN variables. * man/login.defs.5.xml: useradd uses now the SYS_GID_MAX, SYS_GID_MIN, SYS_UID_MAX, and SYS_UID_MIN variables. * man/Makefile.am: Add the new XML documentation files to EXTRA_DIST. 2008-02-25 Nicolas François * lib/getdef.c: Added missing SYS_GID_MAX, SYS_GID_MIN, SYS_UID_MAX, and SYS_UID_MIN. 2008-02-25 Nicolas François * NEWS, src/useradd.c, man/useradd.8.xml: Added options --user-group (-U, Uflg) and --no-user-group (-N, Nflg) to replace nflg. * man/login.defs.d/USERGROUPS_ENAB.xml: useradd now also uses USERGROUPS_ENAB. 2008-02-19 Nicolas François * src/groupmod.c: Add missing 'p' to the getopt_long's optstring. 2008-02-19 Nicolas François * src/groupadd.c: Add missing 'p' to the getopt_long's optstring. * src/groupadd.c: Fix --non-unique's has_arg field to no_argument instead of required_argument. * src/groupadd.c: Add missing -p, --password description to the Usage message. 2008-02-19 Nicolas François * NEWS, etc/login.defs: Set GID_MIN to the same value as UID_MIN by default (1000). * NEWS, etc/login.defs: Added variables SYS_UID_MIN (100), SYS_UID_MAX (999), SYS_GID_MIN (100), SYS_GID_MAX (999) for system accounts. * libmisc/find_new_ids.c: Added support for system accounts in find_new_uid() and find_new_gid(). * NEWS, src/newusers.c, src/useradd.c, src/groupadd.c: Added new option -r, --system for system accounts in useradd, groupadd, and newusers. 2008-02-18 Nicolas François * NEWS, src/groupmems.c: Fix buffer overflow when adding an user to a group. Thanks to Peter Vrabec. 2008-02-14 Nicolas François * NEWS, etc/useradd: Change the default HOME directory in /etc/default/useradd according FHS (/home instead of /home/users). This fixes Alioth's bug #310559. Thanks to Dale E. Edmons. 2008-02-14 Nicolas François * NEWS, src/newgrp.c: Use the correct AUDIT_CHGRP_ID event instead of AUDIT_USER_START, when changing the user space group ID with newgrp or sg. Thanks to sgrubb@redhat.com for the patch. 2008-02-10 Nicolas François * src/usermod.c: Reset oflg with uflg if the new UID is equal to the old one. * src/usermod.c: Reset mflg with dflg if the new home directory is the same as the old one. 2008-02-10 Nicolas François * NEWS, src/usermod.c: Fix the handling of -a when a user is being renamed (with -l). The new name of the user was used for the new supplementary groups, but not in the existing ones. 2008-02-10 Nicolas François * src/newusers.c: Set the shadow's password instead of the passwd's password. Fix wrong cut&paste. 2008-02-03 Nicolas François * src/usermod.c: Use a function to convert the dates from /etc/shadow to human readable dates. * src/usermod.c: Really log the expiration date change as human readable strings instead of integers. * src/usermod.c: No need to check audit_fd, audit_logger() will take care of this. 2008-02-03 Nicolas François * src/login.c: Do not translate the fromhost variable. It is always used for syslog messages. 2008-02-03 Nicolas François * 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 * NEWS: newusers will behave more like useradd. * src/newusers.c: The user's ID must be found before the group ID to mimic useradd's behavior choices of UID and GID. * src/newusers.c: Reuse the generic find_new_uid() and find_new_gid() functions. This permits to respect the UID_MIN/UID_MAX and GID_MIN/GID_MAX variables, should * src/newusers.c: Check if the user or group exist using the external databases (with the libc getpwnam/getgrnam functions). Refuse to update an user which exist in an external database but does not exist in the local database. * src/newusers.c: Check the usernames and groupnames with check_user_name() and check_group_name() * src/newusers.c: Use isdigit() for readability. * src/newusers.c: Check if numerical IDs are valid (no remaining chars). 2008-02-03 Nicolas François * NEWS, src/newusers.c: Fix the support for the NONE crypt method. 2008-02-03 Nicolas François * src/newusers.c: Fix shadow group support (the list of admins was not defined; it is now set to an empty list). 2008-02-03 Nicolas François * NEWS, libmisc/salt.c: Do not seed the random number generator each time, and use the time in microseconds to avoid having the same salt for different passwords generated in the same second. This permits to avoid using the same salt for different passwords in newusers. 2008-02-03 Nicolas François * lib/pwio.c, lib/pwio.h: New function to find an user by its UID on the local database. * lib/groupio.c, lib/groupio.h: New function to find a group by its GID on the local database. * libmisc/find_new_ids.c, lib/prototypes.h: Add new generic functions to find the next user or group ID available: find_new_uid() and find_new_gid(). They work the same way as the functions with the same name of useradd or groupadd, except that they check in the local database to make sure an ID was not reserved in an uncommitted change (this is needed to be used in newusers), they report a status instead of calling exit(), and they can receive a preferred ID. They should later support system IDs. This should be a little bit slower, but not too much (if the database is not open the checks against the local database will exit immediately, and if it is already open, all the checks will be done regarding the data in memory). * po/POTFILES.in: The new libmisc/find_new_ids.c file contains translatable strings. * libmisc/Makefile.am: Add libmisc/find_new_ids.c to the sources of the libmisc library. * src/useradd.c, src/groupadd.c: Use the find_new_uid() and find_new_gid() from the library instead of the local functions. 2008-02-02 Nicolas François * po/*.po: Updated PO files. * libmisc/age.c, libmisc/yesno.c, src/lastlog.c, src/grpck.c, src/chfn.c, src/passwd.c, src/chage.c, src/login.c, src/sulogin.c, src/chsh.c: Fix call to puts (remove end of line, or use fputs). * po/*.po: Unfuzzy PO files according to above change. 2008-01-26 Nicolas François Fix build failures with --disable-shadowgrp. Thanks to Jürgen Daubert for the patch. * libmisc/salt.c: Include , needed for stderr and printf functions. * lib/encrypt.c: Include , needed for perror, stderr and printf functions * src/usermod.c: sgr_locked exists only if SHADOWGRP is defined. * src/chgpasswd.c: Only check is the gshadow file exists if SHADOWGRP is defined. 2008-01-24 Nicolas François * src/gpasswd.c, src/chfn.c, src/chage.c, src/chsh.c, src/grpck.c, src/vipw.c, src/pwck.c, src/sulogin.c, src/newgrp.c, src/userdel.c, src/lastlog.c, src/groupmems.c, src/usermod.c, src/expiry.c, src/groupdel.c, src/useradd.c, src/su.c, src/groupmod.c, src/passwd.c, src/groupadd.c, src/login.c, src/suauth.c, src/faillog.c, src/id.c, libmisc/limits.c, libmisc/addgrps.c, libmisc/env.c, libmisc/age.c, libmisc/yesno.c, lib/getdef.c: Replace printf by puts for fixed strings. This would avoid issues caused by formats introduced in translated strings. 2008-01-23 Nicolas François * src/useradd.c: Strings improvement s/can't get unique/no more available/. 2008-01-23 Nicolas François * NEWS, src/usermod.c: Check that the new fields set with -u, -s, -l, -g, -f, -e, -d, and -c differ from the old ones. If a requested new value is equal to the old one, no changes will be performed for that field. If no fields are changed, usermod will exist successfully with a warning. This avoids logging changes to syslog when there are actually no changes. 2008-01-23 Nicolas François * src/usermod.c: Always define user_newcomment, user_newshell, user_newexpire, and user_newinactive. It is more simple to always have user_ as the old field, and user_new as the new field (even if the field did not change) instead of changing the algorithm depending on WITH_AUDIT. 2008-01-23 Nicolas François * src/usermod.c: user_newname can only be used in WITH_AUDIT code or when lflg is set. This issue was introduced in the code refactoring of usermod. 2008-01-22 Nicolas François * src/groupadd.c: Fix typo in comment: s/find_new_uid/find_new_gid/ 2008-01-22 Nicolas François * src/useradd.c: s/gid/GID/ in message string. * src/useradd.c: Set this string for translation. 2008-01-22 Nicolas François * man/grpck.8.xml: Fix typo. Remove "the" from "All entries in the are checked [...]" * man/grpck.8.xml: Conditionally include the parts mentioning the gshadow file (based on SHADOWGRP). * man/grpck.8.xml: Add reference to the gshadow(5) manpage (conditionally included). 2008-01-22 Nicolas François * man/grpck.8.xml, man/pwck.8.xml: Indicate that the shadow parameter is optional (i.e. a passwd file can be specified without a shadow file, and the group file can be specified without the gshadow file). 2008-01-22 Nicolas François * man/grpck.8.xml: Document the options with a list of options, as in the pwck(8) manpage. 2008-01-22 Nicolas François * NEWS, src/newgrp.c: Fix segfault when an user returns to an unknown GID (either the user was deleted during the user's newgrp session or the user's passwd entry referenced an invalid group). Add a syslog warning in that case. * src/newgrp.c: Add an end of line when reporting an invalid password. 2008-01-12 Nicolas François * NEWS, src/useradd.c: Fix the handling of the --defaults option (it required an argument, but should behave as -D) * NEWS, man/useradd.8.xml: Document the --defaults option, which was already described in the useradd's Usage information. 2008-01-06 Nicolas François * src/passwd.c: Avoid setting the password to a const empty string, but set the first char to \0. This avoids a warning. 2008-01-06 Nicolas François * libmisc/salt.c: Add prototype for l64a(), gensalt(), SHA_salt_size(), and SHA_salt_rounds(). * libmisc/salt.c: l64a() and gensalt() are static. * libmisc/salt.c: The `meth' parameter of crypt_make_salt() is a const. (ditto for the method variable). * libmisc/salt.c: SHA_salt_rounds returns a const string. * libmisc/salt.c: Avoid warnings with cast of random() to double. * libmisc/salt.c: Replace rand() by random(). 2008-01-06 Nicolas François * lib/Makefile.am: Do not link libshadow.la with the intl, crypt, skey and md libraries... * src/Makefile.am: ...Specify for each binary which library is required. skey and md are required for the binaries with authentication of the user (chfn, chsh, login, passwd, su). intl is required for all. mcrypt is required for user (chfn, chsh, login, passwd, su, sulogin) and group (newgrp, gpasswd) authentication and for the creation of passwords (chpasswd, chgpasswd, gpasswd, newusers, passwd). 2008-01-06 Nicolas François * lib/nscd.c, lib/nscd.h: Set the service parameter of nscd_flush_cache() to const. This avoids a lot of warnings. * lib/nscd.c: Include "nscd.h" to avoid inconsistent prototypes. 2008-01-06 Nicolas François * lib/encrypt.c: Set the method string as a constant string. 2008-01-06 Nicolas François * lib/port.c: Assume declares errno. 2008-01-06 Nicolas François * man/po/fr.po: Fix typo: s/rend compte indiqué/rend le compte indiqué/ 2008-01-06 Nicolas François * src/suauth.c: Remove prototype of check_su_auth(). It is redundant with prototypes.h. * src/suauth.c: isgrp() is static. 2008-01-06 Nicolas François * libmisc/obscure.c: Tag the `old' parameter of palindrome(), similar(), and simple() as unused. * libmisc/loginprompt.c: Tag the `sig' parameter of login_exit() as unused. * src/expiry.c: Tag the `sig' parameter of catch_signals() as unused. * src/su.c: Tag the `sig' parameter of catch_signals() as unused. * src/su.c: Add int parameter to the prototype of oldsig(). * src/login.c: Tag the `sig' parameter of alarm_handler() as unused. * src/sulogin.c: Tag the `sig' parameter of catch_signals() as unused. * libmisc/getdate.y: Tag the `string' parameter of yyerror() as unused. * libmisc/getdate.y: The string provided to yyerror() is const. * libmisc/getdate.y: Fix the prototypes of yylex() and yyerror(). 2008-01-06 Nicolas François * lib/defines.h: Remove teh macro definition of SETXXENT_TYPE, SETXXENT_RET, and SETXXENT_TEST. They were used by the now removed pwent.c and grent.c. * lib/defines.h: Remove the definition of PASSWD_PAG_FILE, GROUP_PAG_FILE, SHADOW_PAG_FILE, and SGROUP_PAG_FILE. They are never used. * lib/defines.h: Don't include "snprintf.h". The file does not exist in shadow. * lib/defines.h: Add new macro unused to tag unused parameters. 2008-01-06 Nicolas François * src/useradd.c, src/groupmems.c: Assume optarg and optind are declared in . 2008-01-06 Nicolas François * src/usermod.c: Remove the pw_name argument of new_pw_passwd. Use the user_newname global variable instead. This avoid using a parameter with the same name as a function. 2008-01-06 Nicolas François * src/newgrp.c: Removed unused gid parameter of syslog_sg(). * src/newgrp.c: The loginname and tty buffers are never changed. Add the const qualifier. 2008-01-06 Nicolas François * src/chpasswd.c, src/chgpasswd.c: The crypt_method string always points to a constant string. Add the const qualifier. 2008-01-06 Nicolas François * src/pwunconv.c: Remove prototype of l64a() (not used in pwunconv). 2008-01-06 Nicolas François * src/login_nopam.c: Use an ANSI prototype for resolve_hostname() instead of K&R prototype. * src/login_nopam.c: Fix the prototypes of list_match(), user_match(), from_match(), string_match(). There were no parameters in the prototypes. * src/login_nopam.c: Fix the prototypes of the function parameter match_fn of list_match(). 2008-01-06 Nicolas François * libmisc/copydir.c: Remove the src parameter of copy_special(). The entry's information are taken from the stat structure. 2008-01-06 Nicolas François * libmisc/console.c, libmisc/ulimit.c, lib/sgetgrent.c, lib/sgetpwent.c: Include "prototypes.h" to make sure the exported prototypes are the ones used for the definition of functions. * lib/prototypes.h: Added prototypes for __gr_del_entry(), __gr_get_db(), __gr_get_head(), __gr_set_changed(), __gr_dup(), __pw_del_entry(), __pw_get_db(), __pw_get_head(), __pw_dup(), sgetgrent(), sgetpwent(), __sgr_del_entry(), __sgr_dup(), __sgr_get_head(), __sgr_set_changed(), __spw_get_head(), __spw_del_entry(), __spw_dup(). * lib/prototypes.h: Removed prototype for is_listed(). * lib/prototypes.h: Added name of the check_su_auth()'s parameters. * lib/groupio.h: Removed prototypes for __gr_dup() and __gr_set_changed(). * lib/sgroupio.c: Removed prototypes for putsgent(), sgetsgent(), and __gr_get_db(). * lib/sgroupio.h: Removed prototypes for __sgr_dup() and __sgr_set_changed(). * lib/shadowio.c: Removed prototype for __pw_get_db(). * lib/pwio.c: Removed prototype for sgetpwent() and putpwent(). * lib/shadowio.h: Removed prototypes for __spw_dup() and __spw_set_changed(). * lib/pwio.h: Removed prototypes for __pw_dup() and __pw_set_changed(). * lib/commonio.h: Add protection against multiple inclusions. * lib/prototypes.h: Include commonio.h (needed for the __xx_del_entry() functions). * src/grpck.c: Remove prototypes for __gr_del_entry(), __gr_get_head(), __sgr_del_entry(), and __sgr_get_head(). * src/pwck.c: Remove prototypes for __pw_del_entry(), __pw_get_head(), __spw_del_entry(), and __spw_get_head(). * lib/groupio.c: Remove prototype for sgetgrent(). * lib/groupio.c: Add the name of the parameters for merge_group_entries() and split_groups(). * lib/groupio.h: Remove prototypes for __gr_dup() and __gr_set_changed(). 2008-01-05 Nicolas François * man/groupadd.8.xml, man/groupmod.8.xml: Add documentation for the new --password options. 2008-01-05 Nicolas François * src/useradd.c: Fix find_new_gid() prototype. Add a void parameter. 2008-01-05 Nicolas François * lib/prototypes.h: Add the dolastlog() prototype. * lib/prototypes.h: Typo: login.c -> loginprompt.c * src/login.c: Remove declaration of dolastlog(). * lib/prototypes.h: Include for the declaration of struct lastlog. * lib/prototypes.h: Remove old comments in the header. 2008-01-05 Nicolas François * libmisc/pwdcheck.c: Do not include . Include and "pwauth.h" only when compiled without PAM support. * src/chfn.c, src/chsh.c: Do not include * lib/commonio.c: Do not include . Do not include . Include "nscd.h" instead of . 2008-01-05 Nicolas François * configure.in: Do not check if shadow.h exist, but make sure it exists. * libmisc/pwdcheck.c, src/chfn.c, src/chsh.c, lib/defines.h, lib/shadowmem.c, lib/shadowio.c, lib/commonio.c: HAVE_SHADOW_H is no more needed (shadow.h should always exist). 2008-01-05 Nicolas François * lib/groupio.c: Remove prototype of putgrent(), add parameter's name of sgetgrent(). * lib/prototypes.h: Fix the do_pam_passwd() prototype (it returns void). 2008-01-05 Nicolas François * NEWS, src/groupmod.c, src/groupadd.c: Add option --password to groupadd and groupmod (similar to useradd and usermod). 2008-01-05 Nicolas François * lib/prototypes.h: grent.c does not exist anymore. Remove the putgrent prototype. * lib/prototypes.h: "shadowio.h" was included for the definition of the spwd structure. Replace this include by * libmisc/xmalloc.c, libmisc/utmp.c, libmisc/strtoday.c, libmisc/pwd_init.c, libmisc/tz.c, lib/port.c, lib/fputsx.c, libmisc/pam_pass.c, libmisc/log.c: Include "prototypes.h" to make sure the exported prototypes are the ones used for the definition of functions. * libmisc/console.c: Define is_listed() as static and add its prototype. * libmisc/xgetXXbyYY.c, libmisc/yesno.c: Include config.h as a system include, as recommended by the autoconf documentation. * src/chage.c: Define isnum() as static and add its prototype. * libmisc/xgetspnam.c: Add missing include "shadowio.h". (This was OK as long as prototypes.h included this file.) * src/nologin.c: Make a proper prototype for the main() function declaration. (add void) * src/login.c: login_prompt is the name of a function, use loginprompt for the internal variable. * src/chsh.c: loginsh is a global variable, use newshell for the update_shell()'s parameter. * lib/gshadow.c: The prototypes of fgetsx() and fputsx() are already defined in prototypes.h. Remove the declaration of these functions. * lib/gshdow.c: list() is an external function. DO not shadow it with a static function. The internal list() was renamed build_list(). * lib/commonio.c: stat shadows another stat variable. Remove this variable, and directly check the result of getfscreatecon(). * libmisc/utmp.c: Remove the declaration of getutent(), getutline(), setutent(), and endutent() which are declared in 2008-01-01 Nicolas François * src/newgrp.c: Remove duplicate logging to syslog. 2008-01-01 Nicolas François * src/newgrp.c: Avoid assignments in conditionals. * src/newgrp.c: Split check_perms(), syslog_sg() out of main(). 2008-01-01 Nicolas François * lib/shadow.c: Avoid assignments in conditionals. 2008-01-01 Nicolas François * lib/groupio.c (split_groups): Test the pointer returned by malloc. 2008-01-01 Nicolas François * lib/commonio.c: Document add_one_entry_nis(), write_all(), commonio_remove(), commonio_locate(), and commonio_rewind(). 2008-01-01 Nicolas François * src/pwck.c: Avoid implicit brackets. * src/pwck.c: Avoid implicit conversions to booleans. 2008-01-01 Nicolas François * src/grpck.c: Avoid implicit brackets. * src/grpck.c: Avoid implicit conversions to booleans. 2008-01-01 Nicolas François * NEWS: No functional changes were introduced by the previous pwck and grpck changes, except for the following bug fix: no syslog logging if a passwd or group file was specified on the command line without a shadowed database file, even if the system shadowed database was changed). 2008-01-01 Nicolas François * src/pwck.c: Fix typos in comments (gshadow/shadow). 2008-01-01 Nicolas François * src/pwck.c: Split process_flags(), open_files(), close_files() check_pw_file(), and check_spw_file() out of main(). New global variables is_shadow, sort_mode, use_system_pw_file, and use_system_spw_file. 2008-01-01 Nicolas François * libmisc/xgetXXbyYY.c: De-comment code (duplicate the entry when the _R function is not present on the system). 2008-01-01 Nicolas François * src/lastlog.c: Remove statbuf, not used. * src/lastlog.c: Fix types, cast umin and umax to uid_t. * src/lastlog.c: (option -u) user needs to be a signed long, not uid_t (to accept rangees like - 2008-01-01 Nicolas François * src/useradd.c: Avoid ?: construct without the middle term. 2008-01-01 Nicolas François * libmisc/copydir.c, src/usermod.c, lib/prototypes.h: The uid and gid parameters can be set to -1 to indicate that the original owners must be kept. Change the types from uid_t/gid_t to a long int (signed). * libmisc/copydir.c: Change the copy_entry(), copy_dir(), copy_symlink(), copy_special(), and copy_file() prototypes accordingly. * lib/prototypes.h: Add the parameters' name for the libmisc/copydir.c functions. 2008-01-01 Nicolas François * libmisc/limits.c, libmisc/obscure.c, src/login_nopam.c, lib/pwauth.c: Avoid empty file when USE_PAM is set. * libmisc/audit_help.c: Avoid empty file when WITH_AUDIT is not set. * src/login_nopam.c: Fix warnings: resolve_hostname takes and returns a constant string. 2008-01-01 Nicolas François * src/grpck.c: Split process_flags(), open_files(), and close_files() out of main(). New global variables is_shadow, sort_mode, use_system_grp_file, and use_system_sgr_file. * src/grpck.c: Split check_grp_file() and check_sgr_file() out of main(). * src/grpck.c: Split check_members() and compare_members_lists() out of check_grp_file() and check_sgr_file(). 2007-12-31 Nicolas François * man/po/Makefile.in.in: If remove-potcdate.sin does not exist, use the one from teh po directory (it is not installed automatically by autopoint. 2007-12-31 Nicolas François * lib/commonio.h: Fix the type of the bitfields in the commonio_entry and commonio_db structures to unsigned int (instead of int). 2007-12-31 Nicolas François * src/chsh.c: Split process_flags(), check_perms(), and update_shell() out of main(). * src/chsh.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/chsh.c: Avoid implicit brackets. * src/chsh.c: Avoid assignments in comparisons. 2007-12-31 Nicolas François * src/chfn.c: New function: process_flags() split out of main(). The flags variables are now global. * src/chfn.c: New functions: check_perms(), update_gecos(), get_old_fields(), and check_fields() split out of main(). * src/chfn.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/chfn.c: Avoid implicit brackets. * src/chfn.c: Document may_change_field(). * src/chfn.c: Avoid implicit conversions to booleans. * src/chfn.c: Avoid assignments in comparisons. 2007-12-31 Nicolas François * src/newusers.c: Compilation fix for PAM support (pamh needs to be global since the function split). * src/chpasswd.c: Likewise. * src/chgpasswd.c: Likewise. * src/chpasswd.c: Avoid implicit conversions to booleans. 2007-12-31 Nicolas François * src/chage.c: Fix typo: s/maximim/maximum/ * src/chage.c: New function: fail_exit(). Change most of the exit() to a fail_exit, which makes sure the files are unlocked (new global variables: pw_locked, spw_locked), the PAM transaction is ended, and the failure is logged to libaudit (use a global user_name and user_uid for logging). * src/chage.c: Compilation fix for PAM support (pamh needs to be global since the function split). * src/chage.c: Document process_flags(), check_flags(), check_perms(), open_files(), and close_files(). * src/chage.c: Split update_age() and get_defaults() out of main() * src/chage.c: Drop the privileges just after opening the files. * src/chage.c: Do not log to audit only if the user has an entry in the shadow file. * NEWS, src/chage.c (open_files): Also open the password file for writing. This fix chage when the user only has a password entry (and no shadow entries). * src/chage.c (get_defaults): Use default values that don't change the behavior of the account for the fields that are not specified when the user has no shadow entry. 2007-12-30 Nicolas François * src/groupadd.c: Compilation fix for PAM support (pamh needs to be global since the function split). * src/groupadd.c: End the PAM transaction in fail_exit(). * src/groupadd.c: Document check_flags(). 2007-12-30 Nicolas François * src/vipw.c: Compilation fix for non-gshadow support. 2007-12-29 Nicolas François * NEWS, src/newusers.c: Added support for gshadow. 2007-12-29 Nicolas François * NEWS, src/newusers.c: Do not add the new user to the group's members, because the group is already the primary group of the new user. 2007-12-29 Nicolas François newusers cleanups * src/newusers.c: main() split in new functions: process_flags(), check_flags(), check_perms(), open_files(), and close_files(). * src/newusers.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/newusers.c: Avoid implicit brackets. * src/newusers.c: Avoid assignments in comparisons. * src/newusers.c: Avoid variables with the name of a type. 2007-12-29 Nicolas François chage cleanups * src/chage.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/chage.c: main() split in new functions: process_flags(), check_flags(), check_perms(), open_files(), and close_files(). * src/chage.c: Avoid using a variable with the same name as a type. * src/chage.c: Remove dead code. It was probably put here to add more information to the audit_logger. * src/chage.c: Avoid implicit brackets. * src/chage.c: Avoid implicit conversion to booleans. * src/chage.c: Avoid assignments in comparisons. 2007-12-28 Nicolas François Same changes for chgpasswd: * src/chgpasswd.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/chgpasswd.c: main() split in process_flags(), check_flags(), check_perms(), open_files(), and close_files(). * src/chgpasswd.c: Avoid assignments in comparisons. * src/chgpasswd.c: Avoid implicit brackets. * src/chgpasswd.c: Fix comments to match chgpasswd (group instead of user's passwords are changed). 2007-12-28 Nicolas François * src/chpasswd.c: Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/chpasswd.c: New functions: process_flags(), check_flags(), check_perms(). Split out of main(). * src/chpasswd.c: Other new functions: open_files(), close_files(). This force flushing the password database after the password file is unlocked. * src/chpasswd.c: Avoid assignments in comparisons. * src/chpasswd.c: Avoid implicit brackets. 2007-12-28 Nicolas François * src/groupadd.c (find_new_gid): A group with the specified name cannot exist at that time. Remove the check. * src/groupadd.c (find_new_gid): If oflg is set, gflg is also set. Use (!gflg), which is clearer than (!gflg || !oflg). * src/groupadd.c (find_new_gid): find_new_gid is never called when an GID is specified with -g. Simplify find_new_gid accordingly. * src/groupadd.c (process_flags): prefer fail_exit to exit. This avoid an explicit call to audit_logger(). * src/groupadd.c (main): Before pam_end(), the return value of the previous pam API was already checked. No need to validate it again. * src/groupadd.c (main, check_perms): New function check_perms(). Split the validation of the user's permissions out of main() 2007-12-28 Nicolas François src/groupadd.c cleanup * src/groupadd.c (fail_exit): When compiled without AUDIT support, if the return code was E_SUCCESS, fail_exit() wouldn't have exited. Fix the scope of #idef WITH_AUDIT. * src/groupadd.c: Avoid implicit brackets. * src/groupadd.c: Split the processing and checking of options out of main() (process_flags). * src/groupadd.c: New function check_flags(). Split the validation of options and arguments out of process_flags. * src/groupadd.c: Add the parameters' names in the prototypes. 2007-12-27 Nicolas François libmisc/copydir.c cleanup * libmisc/copydir.c: Split copy_tree() in more maintainable functions: copy_entry(), copy_dir(), copy_symlink(), copy_hardlink(), copy_special(), and copy_file(). * libmisc/copydir.c: -1 is used to indicate an error, directly set err to -1, instead of incrementing it, and checking if not nul at the end. * libmisc/copydir.c: Avoid assignments in comparisons. * libmisc/copydir.c: Document selinux_file_context. * libmisc/copydir.c: Avoid implicit brackets. * libmisc/copydir.c: Avoid implicit conversions to booleans. 2007-12-27 Nicolas François gpasswd cleanup * src/gpasswd.c: Add argument name to the internal function prototypes. * src/gpasswd.c: Document global variables. * src/gpasswd.c: New function: process_flags(). Split the processing of options out of main(). * src/gpasswd.c: New functions: open_files(), close_files(), update_group(). Split out from main() to simplify this (too) big function. * src/gpasswd.c: New functions: check_perms(), get_group(), change_passwd(), check_flags(). Split out of main() to simplify main(). * src/gpasswd.c: Avoid implicit brackets. * src/gpasswd.c: Avoid assignments in comparisons. * src/gpasswd.c: Avoid implicit conversions to booleans. 2007-12-27 Nicolas François Merge Debian's patch 462_warn_to_edit_shadow * NEW, src/vipw.c: Recommend editing the shadowed (resp. regular) file if the regular (resp. shadowed) file was edited. 2007-12-26 Nicolas François Merge Debian's patch 451_login_PATH * NEWS, libmisc/setupenv.c: Export PATH according to ENV_PATH and ENV_SUPATH, as for su. This impacts login. * man/login.1.xml: PATH and SUPATH are now used both when PAM support is disabled and enabled. 2007-12-26 Nicolas François Merge Debian's patch 496_login_init_session * src/login.c, src/sulogin.c: If started as init, start a new session. 2007-12-26 Nicolas François Merge Debian's patch 408_passwd_check_arguments * NEWS, src/passwd.c: Make sure that no more than one username argument was provided. 2007-12-26 Nicolas François Merge Debian's patch 412_lastlog_-u_numerical_range * NEWS, src/lastlog.c, man/lastlog.8.xml: Accept numerical user, or ranges with the -u option. 2007-12-26 Nicolas François Merge Debian's patch 466_fflush-prompt * libmisc/Makefile.am, lib/prototypes.h, libmisc/yesno.c, src/grpck.c, src/pwck.c: move yes_or_no() from grpck/pwck to a separate libmisc/yesno.c (with a read_only argument). * libmisc/fields.c, libmisc/yesno.c: Make sure stdout is flushed before reading the user's answer. 2007-12-26 Nicolas François Merge Debian's patch 480_getopt_args_reorder * NEWS, src/su.c: su's arguments are now reordered. 2007-12-26 Nicolas François Merge RedHat's patch shadow-4.0.18.1-mtime.patch: * NEWS: Document that usermod will now preserve user's file modification and access time. * libmisc/copydir.c: Preserve the access and modification time of copied files. This is important for usermod. This will also impact useradd, for the skeleton files, but this is not important. * libmisc/copydir.c: Stop and return an error if a file could not be closed after during a copy. 2007-12-26 Nicolas François Cleanups: * src/useradd.c (find_new_gid): Check that gflg is not set (assert). * src/useradd.c (find_new_gid): Do not check the group name uniqueness (already checked in main). * src/useradd.c (find_new_gid): Avoid a "continue" in the loop. * src/useradd.c (find_new_gid): Remove irrelevant comments. * src/useradd.c (find_new_gid): Fix the function definition's comment. 2007-12-26 Nicolas François Merge RedHat's patch shadow-4.0.18.1-findNewUidOnce.patch: * src/useradd.c (usr_update): Do not call find_new_uid(). The UID was already either specified or found by another call to find_new_uid(). * src/useradd.c (find_new_uid): Always start with uid_min (find_new_uid() is never called when user_id was already specified). * src/useradd.c (find_new_uid): Fix the comments (find_new_uid() is not called when the UID is specified (uflg)). * src/useradd.c (main): Only call find_new_uid() if (!oflg) and (!uflg). If uflg is set (but not oflg), check the UID uniqueness. * src/useradd.c (find_new_uid): Don't check the uid and user name uniqueness in find_new_uid(). The user name uniqueness is already checked during the parameter validation. UID uniqueness is also checked (see above). * src/useradd.c (find_new_uid): Don't check uflg in find_new_uid(). * src/useradd.c (find_new_uid): Make sure that find_new_uid() is not called when uflg is set (assert). 2007-12-26 Nicolas François Merge RedHat's patch shadow-4.1.0-lOption.patch * NEWS, src/useradd.c, man/useradd.8.xml: Add option -l to avoid adding the user to the lastlog and faillog databases. 2007-12-26 Nicolas François * src/useradd.c, src/groupadd.c: NO_GETPWENT is no more supported. Remove associated chunks of code. 2007-12-26 Nicolas François * man/groupadd.8.xml: Document the long options (--force, --gid, --key, --non-unique). 2007-12-26 Nicolas François Merge RedHat's patch shadow-4.0.3-noinst.patch * NEWS, lib/Makefile.am: Do not install the shadow library per default. lib_LTLIBRARIES changed to noinst_LTLIBRARIES. 2007-12-09 Nicolas François * NEWS, configure.in: Prepare the 4.1.0 release. 2007-12-09 Nicolas François * NEWS, src/chgpasswd.c: Use chgpasswd PAM policy file instead of chpasswd's one. 2007-12-09 Nicolas François * man/pwconv.8.xml: Fix typos. * man/chpasswd.8.xml, man/chgpasswd.8.xml: Document the NONE crypt method. * man/login.defs.d/MAIL_DIR.xml: Add comment regarding useradd not using MAIL_FILE. * man/login.defs.d/ERASECHAR.xml, man/login.defs.d/KILLCHAR.xml, man/login.defs.d/CONSOLE_GROUPS.xml, man/login.defs.d/ENV_HZ.xml, man/login.defs.d/ENV_PATH.xml, man/login.defs.d/ENV_SUPATH.xml: These variables are also used by some tools when compiled with PAM support. * man/login.defs.d/ENV_HZ.xml: Add note that it is only used by sulogin when compiled with PAM support. * man/login.defs.d/ENV_SUPATH.xml: Typos: ENV_PATH -> ENV_SUPATH, and mention sbin in the path. * man/login.defs.d/LOGIN_STRING.xml: Fix typo: confition -> condition. * man/sg.1.xml: Add CONFIGURATION section (SYSLOG_SG_ENAB). * man/su.1.xml: ENV_HZ, LOGIN_STRING, MAIL_DIR, USERGROUPS_ENAB are only used when su is compiled without PAM support. * man/login.defs.5.xml: Added variables: OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES SULOG_FILE SU_NAME SU_WHEEL_ONLY SYSLOG_SG_ENAB SYSLOG_SU_ENAB. * man/login.defs.5.xml: ENVIRON_FILE is only used when compiled without PAM support. * man/login.defs.5.xml: sulogin uses variables even when compiled with PAM support. * man/login.1.xml: ENV_HZ ENV_PATH ENV_SUPATH MAIL_DIR UMASK are only used when login is not compiled with PAM support. 2007-12-09 Nicolas François * src/login.c: Make sure is_console is only defined when USE_PAM is not defined. 2007-12-09 Nicolas François * libmisc/pwd2spwd.c: Fix time() prototype. 2007-12-08 Nicolas François * man/login.defs.d/CONSOLE_GROUPS.xml, man/login.defs.d/CONSOLE.xml, man/login.defs.d/DEFAULT_HOME.xml, man/login.defs.d/ENV_HZ.xml, man/login.defs.d/ENVIRON_FILE.xml, man/login.defs.d/ENV_PATH.xml, man/login.defs.d/ENV_SUPATH.xml, man/login.defs.d/ENV_TZ.xml, man/login.defs.d/ERASECHAR.xml, man/login.defs.d/FAIL_DELAY.xml, man/login.defs.d/FAILLOG_ENAB.xml, man/login.defs.d/FAKE_SHELL.xml, man/login.defs.d/FTMP_FILE.xml, man/login.defs.d/HUSHLOGIN_FILE.xml, man/login.defs.d/ISSUE_FILE.xml, man/login.defs.d/KILLCHAR.xml, man/login.defs.d/LASTLOG_ENAB.xml, man/login.defs.d/LOGIN_RETRIES.xml, man/login.defs.d/LOGIN_TIMEOUT.xml, man/login.defs.d/LOG_OK_LOGINS.xml, man/login.defs.d/LOG_UNKFAIL_ENAB.xml, man/login.defs.d/MAIL_CHECK_ENAB.xml, man/login.defs.d/MOTD_FILE.xml, man/login.defs.d/NOLOGINS_FILE.xml, man/login.defs.d/OBSCURE_CHECKS_ENAB.xml, man/login.defs.d/PASS_ALWAYS_WARN.xml, man/login.defs.d/PASS_CHANGE_TRIES.xml, man/login.defs.d/PASS_MAX_LEN.xml, man/login.defs.d/PORTTIME_CHECKS_ENAB.xml, man/login.defs.d/QUOTAS_ENAB.xml, man/login.defs.d/SULOG_FILE.xml, man/login.defs.d/SU_NAME.xml, man/login.defs.d/SU_WHEEL_ONLY.xml, man/login.defs.d/SYSLOG_SG_ENAB.xml, man/login.defs.d/SYSLOG_SU_ENAB.xml, man/login.defs.d/TTYGROUP.xml, man/login.defs.d/TTYTYPE_FILE.xml, man/login.defs.d/ULIMIT.xml, man/login.defs.d/USERGROUPS_ENAB.xml: New documentation of login.defs variables. * man/login.defs.d/MAIL_DIR.xml: Updated. It now contains the MAIL_FILE documentation. * man/login.defs.d/LOGIN_STRING.xml: Updated. Mentions %s. * man/pwconv.8.xml, man/groupmems.8.xml, man/groupdel.8.xml, man/useradd.8.xml, man/pwck.8.xml, man/groupadd.8.xml, man/sulogin.8.xml, man/newgrp.1.xml, man/usermod.8.xml, man/su.1.xml, man/vipw.8.xml, man/passwd.1.xml, man/groupmod.8.xml, man/login.1.xml, man/userdel.8.xml, man/grpck.8.xml: Added CONFIGURATION section. * man/generate_mans.mak: The generations of manpages depends on the variables from the Makefiles. Add the dependency on Makefile. * man/login.defs.5.xml: New login.defs variable documented. * man/Makefile.am: Added XML variable documentation to the distributed files. 2007-12-05 Nicolas François * man/gshadow.5.xml: Fix the newgrp section in the gshadow.5 manpage. Thanks to Andre Majorel . 2007-11-27 Nicolas François * man/Makefile.am: Added the login.defs variables description to the man's EXTRA_DIST. 2007-11-27 Nicolas François * man/chfn.1.xml: Uses CHFN_AUTH, CHFN_RESTRICT, LOGIN_STRING. * man/chgpasswd.8.xml: Uses ENCRYPT_METHOD, MAX_MEMBERS_PER_GROUP, MD5_CRYPT_ENAB, SHA_CRYPT_MIN_ROUNDS (SHA_CRYPT_MAX_ROUNDS). * man/chpasswd.8.xml: Switch to using entities for ENCRYPT_METHOD, MD5_CRYPT_ENAB, SHA_CRYPT_MIN_ROUNDS (SHA_CRYPT_MAX_ROUNDS). * man/chsh.1.xml: Uses CHSH_AUTH, LOGIN_STRING. * man/expiry.1.xml: Does not use any login.defs parameter. * man/gpasswd.1.xml: Uses ENCRYPT_METHOD, MAX_MEMBERS_PER_GROUP, MD5_CRYPT_ENAB, SHA_CRYPT_MIN_ROUNDS. * man/login.defs.5.xml: Added CHSH_AUTH. * man/login.defs.5.xml: Cross reference -> cross references. * man/login.defs.5.xml: chfn only uses CHFN_AUTH when no_pam. * man/login.defs.5.xml: chsh uses CHSH_AUTH, not CHFN_AUTH. * man/login.defs.d/CHSH_AUTH.xml: Added. * man/login.defs.5.xml: chsh uses parameters only when no_pam. * man/login.defs.5.xml: expiry does not use CONSOLE_GROUPS, even if linked in the binary. * man/newusers.8.xml: Uses ENCRYPT_METHOD, MAX_MEMBERS_PER_GROUP, MD5_CRYPT_ENAB, PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE, SHA_CRYPT_MIN_ROUNDS, UMASK. 2007-11-26 Nicolas François * man/generate_translations.mak, man/po/Makefile.in.in: Add --expand-all-entities to the call to xml2po to avoid translating the external entities separately. 2007-11-26 Nicolas François * man/login.defs.d/, man/login.defs.d/CHFN_RESTRICT.xml, man/login.defs.d/MAIL_DIR.xml, man/login.defs.d/PASS_MAX_DAYS.xml, man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml, man/login.defs.d/CHFN_AUTH.xml, man/login.defs.d/MD5_CRYPT_ENAB.xml, man/login.defs.d/PASS_WARN_AGE.xml, ·man/login.defs.d/UMASK.xml, man/login.defs.d/PASS_MIN_DAYS.xml, man/login.defs.d/UID_MAX.xml, man/login.defs.d/LOGIN_STRING.xml, man/login.defs.d/GID_MAX.xml, man/login.defs.d/ENCRYPT_METHOD.xml, man/login.defs.d/USERDEL_CMD.xml, man/login.defs.d/MAX_MEMBERS_PER_GROUP.xml, man/login.defs.5.xml: Put each variable description in an external entities. This will permit to reference them in the various utils manpages. * man/login.defs.5.xml: Describe the usage of variables by each tools when compiled without PAM support. 2007-11-26 Nicolas François * po/stats: Do not generate gmo files. 2007-11-25 Nicolas François * man/po/LINGUAS: Added missing LINGUAS. * man/po/de.po, man/po/fr.po, man/po/it.po, man/po/pl.po, man/po/ru.po, man/po/sv.po: Updated. 2007-11-25 Nicolas François * configure.in, man/po/Makefile.in.in, man/po/Makevars, man/po/POTFILES.in, man/Makefile.am: Generate the PO files for the manpages in the man/po directory (instead of man/). Use a Makefile.in.in based on gettext's one. This ensure that the PO are generated before being used in the directories. * man/generate_mans.mak, man/generate_translations.mak, man/Makefile.am: New makefile for the generation of manpages from XML (generate_mans.mak). This avoid duplicate chunks in generate_translations.mak and Makefile.am * man/de/de.po, man/fr/fr.po, man/it/it.po, man/pl/pl.po, man/ru/ru.po, man/sv/sv.po: Moved to... * man/po/de.po, man/po/fr.po, man/po/it.po, man/po/pl.po, man/po/ru.po, man/po/sv.po: ... here. 2007-11-24 Nicolas François * src/userdel.c, src/lastlog.c, src/newusers.c, src/chpasswd.c, src/usermod.c, src/chgpasswd.c, src/vipw.c, src/useradd.c, src/su.c, src/groupmod.c, src/passwd.c, src/groupadd.c, src/chage.c, src/faillog.c, src/chsh.c: Do not use tabulations in Usage strings. * po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/es.po, po/eu.po, po/fi.po, po/fr.po, po/gl.po, po/hu.po, po/id.po, po/it.po, po/ja.po, po/nb.po, po/pl.po, po/pt_BR.po, po/pt.po, po/ro.po, po/ru.po, po/sk.po, po/sv.po, po/tl.po, po/tr.po, po/uk.po, po/vi.po: Unfuzzy previous changes. * po/bs.po, po/he.po, po/nn.po, po/sq.po: No Usage string translated. Just updated PO. * po/dz.po, po/km.po, po/ko.po, po/ne.po, po/nl.po, po/zh_CN.po, po/zh_TW.po: It would be too error prone for me to unfuzzy these ones. Updated PO. (km and ne should be reviewed: options are translated). 2007-11-24 Nicolas François * po/ne.po, po/bs.po, po/cs.po, po/pt_BR.po, po/km.po, po/es.po, po/eu.po, po/ko.po, po/hu.po, po/sk.po, po/vi.po, po/uk.po, po/ro.po, po/sq.po, po/ru.po, po/id.po, po/nb.po, po/el.po, po/gl.po, po/fr.po, po/nl.po, po/pl.po, po/nn.po, po/it.po, po/dz.po, po/tl.po, po/pt.po, po/ca.po, po/da.po, po/tr.po, po/sv.po, po/de.po, po/ja.po, po/zh_TW.po, po/he.po, po/fi.po, po/zh_CN.po: Run "make update-po" in the po directory. 2007-11-24 Nicolas François * configure.in: New configure option: --with-sha-crypt enabled by default. Keeping the feature enabled is safe. Disabling it permits to disable the references to the SHA256 and SHA512 password encryption algorithms from the usage help and manuals (in addition to the support for these algorithms in the code). * libmisc/obscure.c, libmisc/salt.c, src/newusers.c, src/chpasswd.c, src/chgpasswd.c, src/passwd.c: ENCRYPT_METHOD is always supported in login.defs. Remove the ENCRYPTMETHOD_SELECT preprocessor condition. * libmisc/obscure.c, libmisc/salt.c, src/newusers.c, src/chpasswd.c, src/chgpasswd.c, src/passwd.c: Disable SHA256 and SHA512 if USE_SHA_CRYPT is not defined (this corresponds to a subset of the ENCRYPTMETHOD_SELECT sections). 2007-11-24 Nicolas François * lib/encrypt.c: If we requested a non DES encryption, make sure crypt returned a encrypted password longer than 13 chars. This protects against the GNU crypt() which does not return NULL if the algorithm is not supported, and return a DES encrypted password. 2007-11-24 Nicolas François * lib/groupio.c: Add missing #include "getdef.h" 2007-11-24 Nicolas François * src/newusers.c: Provide the crypt method to all the crypt_make_salt invocations. * src/newusers.c: Tag the ENCRYPTMETHOD_SELECT dependent code accordingly. 2007-11-24 Nicolas François * libmisc/salt.c: Make sure method is not NULL, defaulting to DES. Thanks to Dan Kopecek . * src/chpasswd.c, src/chgpasswd.c: Do not use DES by default, but the system default define in /Etc/login.defs. Thanks to Dan Kopecek . * NEWS, man/chpasswd.8.xml, man/chgpasswd.8.xml: Do not mention DES as the default algorithm. * src/chpasswd.c, src/chgpasswd.c: Tag the ENCRYPTMETHOD_SELECT dependent code accordingly. 2007-11-23 Nicolas François * libmisc/salt.c: Move the srandom call to gensalt. * libmisc/salt.c (gensalt): Replace the test on salt_size by an assert. 2007-11-23 Nicolas François Patch contributed by Dan Kopecek * src/chpasswd.c, src/chgpasswd.c, src/newusers.c: Fix compilation when ENCRYPTMETHOD_SELECT is not defined. * libmisc/salt.c (MAGNUM): The nul char was put on (array)[2] instead of (array)[3]. * libmisc/salt.c: MAGNUM should be defined even if ENCRYPTMETHOD_SELECT is not defined. * libmisc/salt.c: Use random instead of rand. * libmisc/salt.c (gensalt): New function to generate a salt (instead of using gettimeofday). 2007-11-23 Nicolas François * NEWS, src/newusers.c: New options -c/--crypt-method -s/--sha-rounds. 2007-11-23 Nicolas François * src/chpasswd.c: Added crypt method: NONE. * src/chpasswd.c: Added --sha-rounds to the usage(). * libmisc/Makefile.am, libmisc/getlong.c, src/chgpasswd.c, src/chpasswd.c, lib/prototypes.h: New getlong function. Replace chpasswd's and chgpasswd's getnumber. 2007-11-23 Nicolas François * lib/groupio.c: Removed unused variable 'member'. 2007-11-23 Nicolas François * man/chpasswd.8.xml: Document the variables used by chpasswd. The definitions are copied from login.defs. I should try to use a less error prone process for this. 2007-11-23 Nicolas François * man/login.defs.5.xml: Use for the values set by users. (was sometimes ) * man/login.defs.5.xml: Use