diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 3075 |
1 files changed, 3075 insertions, 0 deletions
@@ -1,3 +1,3078 @@ +2023-05-07 Christian Göttsche <cgzones@googlemail.com> + + modules: update Linux detection. + GCC and Clang only define the macro `linux` when using the GNU dialect + of C (e.g. -std=gnu11 instead of -std=c11). Since `linux` is also not + in a reserved namespace it might be target of collisions. + Use the canonical macro `__linux__` instead (already used in + pam_limits.c). + +2023-04-29 Dmitry V. Levin <ldv@strace.io> + + po: update .pot and .po files. + Regenerate po/Linux-PAM.pot and po/*.po using "make -C po update-po" + command. This essentially updates the project version, line numbers, + and timestamps. + + Prepare for 1.5.3 release. + * configure.ac (AC_INIT): Raise version to 1.5.3. + * NEWS: Update. + +2023-04-23 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org> + + po: update translations using Weblate (Romanian) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ro/ + +2023-04-23 김인수 <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2023-04-20 Dmitry V. Levin <ldv@strace.io> + + pam_succeed_if: do not use the result of keyword substitution for keyword match + * modules/pam_succeed_if/pam_succeed_if.c (evaluate): Do not use the + result of keyword substitution for keyword match. + + Resolves: https://github.com/linux-pam/linux-pam/issues/560 + +2023-04-20 Dmitry V. Levin <ldv@strace.io> + + ci: add --enable-openssl jobs to the ci matrix. + Link: https://github.com/linux-pam/linux-pam/pull/550#issuecomment-1490362439 + +2023-04-20 Stefan Schubert <schubi@suse.de> + + build: fix --enable-openssl. + * Make.xml.rules.in: Avoid conflicting profile.condition settings. + * configure.ac: Likewise. + + Resolves: https://github.com/linux-pam/linux-pam/issues/553 + +2023-04-20 Iker Pedrosa <ipedrosa@redhat.com> + + pam_timestamp: Only build hmacfile when no openssl. + * modules/pam_timestamp/Makefile.am: Only build hmacfile target when + openssl isn't enabled. + +2023-04-20 Luca Boccassi <bluca@debian.org> + + man: clarify PAM_DATA_SILENT in pam_set_data.3. + pam_end.3 has additional and important information about PAM_DATA_SILENT, + copy it to pam_set_data.3 since that describes the cleanup callback where + it will be set. + +2023-04-20 Mark Huang <huangyuxi99@gmail.com> + + fix a grammar mistake. + +2023-04-06 Thorsten Kukuk <kukuk@suse.com> + + configure: Disable NIS if header files are missing. + configure.ac: Disable NIS if RPC or YP header files are missing + modules/pam_unix/support.c: Use HAVE_NIS to check for header file presence + modules/pam_unix/pam_unix_passwd.c: Use HAVE_NIS, too + +2023-04-04 Thorsten Kukuk <kukuk@suse.com> + + doc: Include custom-html.xsl.in and custom-man.xsl.in. + doc/Makefile.am: Replace custom-html.xsl and custom-man.xsl with + custom-html.xsl.in and custom-man.xsl.in EXTRA_DIST + +2023-03-31 Dmitry V. Levin <ldv@strace.io> + + treewide: fix unnecessary $ on arithmetic variables. + This should fix shellcheck warning SC2004. + +2023-03-30 Dmitry V. Levin <ldv@strace.io> + + pgp.keys.asc: update. + * pgp.keys.asc: Replace with the key used to sign v1.5.2. + + Resolves: https://github.com/linux-pam/linux-pam/issues/544 + +2023-03-30 Iker Pedrosa <ipedrosa@redhat.com> + + pam_timestamp: fix build failure. + bcba17939e1b1a568cd4a764534cde74d37078cc started using pam_overwrite_n() + without providing the definition to this function, which causes a build + failure. + + modules/pam_timestamp/hmac_openssl_wrapper.c: include pam_inline.h + +2023-03-14 A S Alam <amanpreet.alam@gmail.com> + + po: update translations using Weblate (Punjabi) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pa/ + +2023-03-14 Thorsten Kukuk <kukuk@suse.com> + + manual pages: document usage of $DISPLAY and PAM_TTY. + man/pam_item_types_std.inc.xml: In the past, PAM_TTY was used for tty + devices and $DISPLAY variables for X-based applications. With the + introduction of PAM_DISPLAY PAM_TTY should only be used for devices. + +2023-03-04 Christian Göttsche <cgzones@googlemail.com> + + libpam: simplify string copying using strdup. + +2023-02-28 Christian Göttsche <cgzones@googlemail.com> + + modules: make use of secure memory erasure. + Use empty initialization of structs to minimize the memset() usage, to + reduce the amount of calls which are not sensitive. + + Non trivial changes: + + - pam_env: + * erase environment variables where possible + + - pam_exec: + * erase responce on error + * erase auth token + + - pam_pwhistory: + * erase buffers containing old passwords + + - pam_selinux: skip overwriting data structure consisting of only + pointers to insensitive data, which also gets free'd afterwards (so + it currently does not protect against double-free or use-after-free on + the member pointers) + + - pam_unix: erase cipher data in more places + + - pam_userdb: erase password hashes + +2023-02-28 Christian Göttsche <cgzones@googlemail.com> + + libpamc: make use of secure memory erasure. + + libpam_misc: make use of secure memory erasure. + +2023-02-28 Christian Göttsche <cgzones@googlemail.com> + + libpam: make use of secure memory erasure. + Non trivial changes: + + - erase responses in pam_get_authtok_internal() on error branch + +2023-02-28 Christian Göttsche <cgzones@googlemail.com> + + libpam: introduce secure memory erasure helpers. + Avoid compiler optimizations to elide the memory erasure by using a + secure method: either memset_explicit() [C23], bzero_explicit() [glibc + 2.25] or a manual memory barrier. + + Since the current helpers _pam_overwrite*() and _pam_drop_reply() are + publicly exported, create new ones in "pam_inline.h" and deprecate the + old ones. + +2023-02-28 Christian Göttsche <cgzones@googlemail.com> + + pam_env: use helper to free string list. + Free the environment variables list via the designated helper + free_string_array() rather than free its elements in a loop, which might + skip some. + + pam_env: override undefined pointer after asprintf failure. + On failure the content of the string pointer passed to asprintf(3) is + undefined. Set to NULL before free'ing the parent array. + +2023-02-28 Thorsten Kukuk <kukuk@suse.com> + + Y2038: use logind instead of utmp. + The struct utmp from glibc uses on many 64bit architectures a 32bit + time_t for compatibility with a 32bit userland, which means utmp will + not survive the year 2038 (32bit time_t overflow). Use the data from + logind instead of utmp. + + * configure.ac: Add option --enable-logind + * modules/pam_issue/Makefile.am: Add CFLAGS/LIBS for logind support + * modules/pam_issue/pam_issue.c: Use sd_get_sessions instead of utmp + * modules/pam_timestamp/Makefile.am: Add CFLAGS/LIBS for logind support + * modules/pam_timestamp/pam_timestamp.c: query logind for login time + +2023-02-20 Martin Srebotnjak <miles@filmsi.net> + + po: update translations using Weblate (Slovenian) + Currently translated at 16.8% (17 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/sl/ + +2023-02-20 Yaron Shahrabani <sh.yaron@gmail.com> + + po: update translations using Weblate (Hebrew) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + +2023-02-17 Thorsten Kukuk <kukuk@suse.com> + + manual pages: enhance pam.d documentation. + Make /usr/lib/pam.d and <vendordir>/pam.d more visible in the standard + manual pages, so that people don't assume there is only /etc/pam.d + + * doc/man/pam.8.xml: Don't always speak about /etc/pam.d only + * doc/man/pam.conf-desc.xml: Don't always speak about /etc/pam.d only + * doc/man/pam.conf-dir.xml: Explain search path for pam config files + * doc/man/pam.conf.5.xml: Add filelist with all pam.d directories + +2023-02-15 Thorsten Kukuk <kukuk@suse.com> + + pam_lastlog: deprecate it and disable by default. + pam_lastlog uses utmp, wtmp, btmp and lastlog. None of them is Y2038 + safe, even on 64bit architectures. Most 64bit architectures use 32bit + time_t for compat reasons with 32bit userland. + Additionally, all relevant tools for which pam_lastlog would make sense + already have their own support for all four files, so this module will + most likely only create duplicate entries. + + * configure.ac: don't build pam_lastlog by default. + * ci/run-build-and-tests.sh: enable pam_lastlog. + +2023-02-14 Thorsten Kukuk <kukuk@suse.com> + + libpam: use getlogin() from libc and not utmp. + utmp uses 32bit time_t for compatibility with 32bit userland on some + 64bit systems and is thus not Y2038 safe. Use getlogin() from libc + which avoids using utmp and is more safe than the old utmp-based + implementation by using /proc/self/loginuid. + + * libpam/pam_modutil_getlogin.c: Use getlogin() instead of parsing utmp + +2023-02-07 Josef Hruska <hrusjos@gmail.com> + + po: update translations using Weblate (Czech) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/cs/ + +2023-02-07 Seong-ho Cho <darkcircle.0426@gmail.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2023-02-07 Gogo Gogsi <linux.hr@protonmail.com> + + po: update translations using Weblate (Croatian) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/hr/ + +2023-02-07 Baurzhan Muftakhidinov <baurthefirst@gmail.com> + + po: update translations using Weblate (Kazakh) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/kk/ + +2023-02-07 Ettore Atalan <atalanttore@googlemail.com> + + po: update translations using Weblate (German) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/de/ + +2023-02-07 Luna Jernberg <bittin@reimu.nl> + + po: update translations using Weblate (Swedish) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/sv/ + +2023-02-07 Jan Kuparinen <copper_fin@hotmail.com> + + po: update translations using Weblate (Finnish) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fi/ + +2023-02-07 Yuri Chornoivan <yurchor@ukr.net> + + po: update translations using Weblate (Ukrainian) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/uk/ + +2023-02-07 Oğuz Ersen <oguz@ersen.moe> + + po: update translations using Weblate (Turkish) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/tr/ + +2023-02-07 Piotr Drąg <piotrdrag@gmail.com> + + po: update translations using Weblate (Polish) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pl/ + +2023-02-07 김인수 <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2023-02-07 Temuri Doghonadze <temuri.doghonadze@gmail.com> + + po: update translations using Weblate (Georgian) + Currently translated at 100.0% (101 of 101 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ka/ + +2023-02-07 Stefan Schubert <schubi@suse.de> + + build: use <vendordir>/security directory for installation if it has been set + Otherwise the corresponding files are still installed in /etc/security. + + * configure.ac (AC_SUBST): Add VENDOR_SCONFIGDIR. + (AM_CONDITIONAL): Add HAVE_VENDORDIR. + * modules/*/Makefile.am (secureconfdir): Set to VENDOR_SCONFIGDIR + if HAVE_VENDORDIR has been set, otherwise to SCONFIGDIR. + +2023-02-07 Dmitry V. Levin <ldv@strace.io> + + ci: make VENDORDIR based on $prefix for the clang case as well. + * .github/workflows/ci.yml (clang-14): Change VENDORDIR from /usr/etc to + ${prefix}/share/etc, this should help to check that the code no longer + relies on the assumption that VENDORDIR == /usr/etc. + + Complements: 0d1c62eb4733 ("ci: make VENDORDIR based on $prefix") + +2023-02-05 Dmitry V. Levin <ldv@strace.io> + + ci: make VENDORDIR based on $prefix. + * ci/run-build-and-tests.sh: Accept VENDORDIR that does not start with /. + * .github/workflows/ci.yml (VENDORDIR): Change from /usr/etc to + ${prefix}/share/etc, this should help to check that the code no longer + relies on the assumption that VENDORDIR == /usr/etc. + +2023-02-04 Dmitry V. Levin <ldv@strace.io> + + pam_env: do not assume in tests that VENDORDIR is /usr/etc. + * modules/pam_env/tst-pam_env-retval.c: Include <errno.h> and <libgen.h>. + [VENDORDIR] (dir, dir_usr, dir_usr_etc): Remove. + [VENDORDIR] (mkdir_p, rmdir_p): New functions. + (setup, cleanup) [VENDORDIR]: Use them. + +2023-02-03 Dmitry V. Levin <ldv@strace.io> + + pam_env: do not hardcode /usr/etc into tests. + * modules/pam_env/tst-pam_env-retval.c: Replace /usr/etc/security with + VENDOR_SCONFIGDIR, /usr/etc with VENDORDIR. Do not define and use + VENDORDIR based variables unless VENDORDIR is defined. + + Fixes: 6135c45347b6 ("pam_env: Use vendor specific pam_env.conf and environment as fallback") + +2023-02-02 Dmitry V. Levin <ldv@strace.io> + + pam_env: do not hardcode /usr/etc into documentation. + * modules/pam_env/pam_env.conf.5.xml: Replace /usr/etc with %vendordir%. + + Fixes: 6135c45347b6 ("pam_env: Use vendor specific pam_env.conf and environment as fallback") + +2023-02-01 Dmitry V. Levin <ldv@strace.io> + + pam_env: fix VENDOR_DEFAULT_ETC_ENVFILE. + * modules/pam_env/pam_env.c (VENDOR_DEFAULT_ETC_ENVFILE): Assume that + VENDORDIR already includes "/etc". + + Fixes: 6135c45347b6 ("pam_env: Use vendor specific pam_env.conf and environment as fallback") + +2023-01-31 Thorsten Kukuk <kukuk@suse.com> + + pam_unix: don't link against yppasswd_xdr if NIS is disabled. + * configure.ac: Define HAVE_NIS if NIS is enabled. + * modules/pam_unix/Makefile.am: Don't link against yppasswd_xdr.c + if NIS is disabled. + * modules/pam_unix/pam_unix_passwd.c: Don't redefine HAVE_NIS. + + Resolves: https://github.com/linux-pam/linux-pam/issues/523 + +2023-01-30 Christian Göttsche <cgzones@googlemail.com> + + Enable format compiler warnings. + * libpam/include/pam_cc_compat.h (DIAG_PUSH_IGNORE_FORMAT_NONLITERAL, + DIAG_POP_IGNORE_FORMAT_NONLITERAL): New macros. + * libpam/pam_handlers.c (_pam_open_config_file): Use them to exempt + usage of format string literals from a constant array. + * m4/warn_lang_flags.m4 (gl_WARN_ADD): Add -Wformat=2. + + Enable undef warning. + * modules/pam_unix/pam_unix_passwd.c: Wrap checks for configure macros + into defined() operator. + * m4/warn_lang_flags.m4 (gl_WARN_ADD): Add -Wundef. + +2023-01-30 Christian Göttsche <cgzones@googlemail.com> + + Enable additional compiler warnings. + The current codebase should comply with those. + + * m4/warn_lang_flags.m4 (gl_WARN_ADD): Add -Winit-self, + -Wnull-dereference, and -Wunused. + +2023-01-27 Stefan Schubert <schubi@suse.de> + + pam_pwhistory: use vendor specific pwhistory.conf as fallback. + Use the vendor directory defined by --enable-vendordir=DIR configure + option as fallback for the distribution provided default config file + if there is no configuration in /etc. + + * modules/pam_pwhistory/pam_pwhistory.8.xml: Describe pwhistory.conf + * modules/pam_pwhistory/pwhistory_config.c [VENDOR_SCONFIGDIR] + (VENDOR_PWHISTORY_DEFAULT_CONF): New macro. + (parse_config_file) [VENDOR_PWHISTORY_DEFAULT_CONF]: Try to open + VENDOR_PWHISTORY_DEFAULT_CONF if PWHISTORY_DEFAULT_CONF file does not + exist. + +2023-01-27 Stefan Schubert <schubi@suse.de> + + pam_pwhistory: add a basic test for return values. + * modules/pam_pwhistory/tst-pam_pwhistory-retval.c: New file. + * modules/pam_pwhistory/Makefile.am (TESTS): Add $(check_PROGRAMS). + (check_PROGRAMS, tst_pam_pwhistory_retval_LDADD): New variables. + +2023-01-25 Christian Göttsche <cgzones@googlemail.com> + + examples: ignore generated tty_conv. + +2023-01-24 Thorsten Kukuk <kukuk@suse.com> + + pam_unix: regenerate yppasswd.h/yppasswd_xdr.c (#480) + Regenerate yppasswd.h and yppasswd_xdr.c from yppasswd.x (libnsl) to + avoid GPL code in a PAM module. + + Link: https://github.com/thkukuk/libnsl/blob/master/src/rpcsvc/yppasswd.x + +2023-01-24 Dmitry V. Levin <ldv@strace.io> + + libpam: remove dead code in pam_dynamic.c. + Apparently, the PAM_SHL variant cannot be compiled since the very first + commit back in 2005 when it was introduced, and another variant uses + PAM_DYLD which is virtually unknown to search engines. + + * libpam/pam_dynamic.c [PAM_SHL || PAM_DYLD]: Remove. + + Resolves: https://github.com/linux-pam/linux-pam/issues/477 + +2023-01-24 Christian Göttsche <cgzones@googlemail.com> + + pam_selinux: treat getenforce failures as enforcing. + security_getenforce(3) can return -1 on error; either because the + selinuxfs is not mounted or reading from /sys/fs/selinux/enforce failed. + + Since security_getenforce(3) is either called after an approving call to + is_selinux_enabled(3) in create_context() or with populated module + data in restore_context(), which requires a previous pass of + create_context(), the selinuxfs should be mounted. + Reading from /sys/fs/selinux/enforce should never fail (except being + prohibited by the SElinux policy itself) since it is a public interface. + + In the unlikely case of security_getenforce(3) nevertheless failing + continue execution as if the result was enforcing (likewise to + pam_sepermit and pam_rootok). + +2023-01-21 Dmitry V. Levin <ldv@strace.io> + + .github: add gcc-12, clang-13, and clang-14 jobs. + * .github/workflows/ci.yml (gcc12-x86_64, clang14-x86_64, + clang13-x86_64): New jobs. + (gcc11-x86_64-vendordir): Rename to gcc12-x86_64-vendordir, + replace gcc-11 with gcc-12. + (clang12-x86_64-vendordir): Rename to clang14-x86_64-vendordir, + replace clang-12 with clang-14. + +2023-01-20 Dmitry V. Levin <ldv@strace.io> + + .github: switch from ubuntu-20.04 to ubuntu-latest. + Switch runners to the latest Ubuntu LTS available, which is currently + Ubuntu 22.04. Also, remove old compiler versions from the ci matrix. + + * .github/workflows/ci.yml (gcc8-x86_64, clang10-x86_64, clang9-x86_64, + clang8-x86_64): Remove. + (gcc11-x86_64-vendordir, gcc11-x86_64, gcc10-x86_64, gcc9-x86_64, + clang12-x86_64-vendordir, clang12-x86_64, clang11-x86_64): Replace + ubuntu-20.04 with ubuntu-latest. + + Link: https://github.blog/changelog/2022-11-09-github-actions-ubuntu-latest-workflows-will-use-ubuntu-22-04/ + +2023-01-19 Dmitry V. Levin <ldv@strace.io> + + pam_unix: silence compiler warning in md5.c. + clang-14 insists on issuing the following warning: + + In file included from md5_good.c:4: + md5.c:92:15: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'byteReverse' may result in an unaligned pointer access [-Werror,-Walign-mismatch] + byteReverse(ctx->in.c, 16); + ^ + md5.c:101:15: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'byteReverse' may result in an unaligned pointer access [-Werror,-Walign-mismatch] + byteReverse(ctx->in.c, 16); + ^ + md5.c:136:15: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'byteReverse' may result in an unaligned pointer access [-Werror,-Walign-mismatch] + byteReverse(ctx->in.c, 16); + ^ + md5.c:145:14: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'byteReverse' may result in an unaligned pointer access [-Werror,-Walign-mismatch] + byteReverse(ctx->in.c, 14); + ^ + md5.c:151:14: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'byteReverse' may result in an unaligned pointer access [-Werror,-Walign-mismatch] + byteReverse(ctx->buf.c, 4); + ^ + + * modules/pam_unix/md5.c (byteReverse): Use uint32 instead of + uint8_aligned, update all users. + (uint8_aligned): Remove unused type. + +2023-01-19 Dmitry V. Levin <ldv@strace.io> + + pam_client.h: silence compiler warning. + gcc-12 insists on issuing the following warning: + + In file included from libpamc.h:13, + from pamc_converse.c:9: + pamc_converse.c: In function 'pamc_converse': + include/security/pam_client.h:129:27: error: array subscript 'struct <anonymous>[0]' is partly outside array bounds of 'unsigned char[6]' [-Werror=array-bounds] + 129 | (*(old_p))->control = cntrl; \ + | ^~ + pamc_converse.c:209:5: note: in expansion of macro 'PAM_BP_RENEW' + 209 | PAM_BP_RENEW(prompt_p, PAM_BPC_FAIL, 0); + | ^~~~~~~~~~~~ + include/security/pam_client.h:87:29: note: object of size 6 allocated by 'calloc' + 87 | # define PAM_BP_CALLOC calloc + | ^ + include/security/pam_client.h:124:29: note: in expansion of macro 'PAM_BP_CALLOC' + 124 | if ((*(old_p) = PAM_BP_CALLOC(1, 1+__size))) { \ + | ^~~~~~~~~~~~~ + pamc_converse.c:209:5: note: in expansion of macro 'PAM_BP_RENEW' + 209 | PAM_BP_RENEW(prompt_p, PAM_BPC_FAIL, 0); + | ^~~~~~~~~~~~ + + * libpamc/include/security/pam_client.h (pamc_bp_t): Decorate the + structure pointed by pamc_bp_t pointer as packed. Despite being a part + of the API, the structure is not supposed to be used directly, and all + the interface macros were assuming from the very beginning that this + structure is packed. + +2023-01-19 Dmitry V. Levin <ldv@strace.io> + + pam_limits: silence compiler warning. + gcc-12 insists on issuing the following warning: + + In file included from /usr/include/string.h:535, + from pam_limits.c:24: + In function 'strncat', + inlined from 'check_logins' at pam_limits.c:287:6, + inlined from 'setup_limits' at pam_limits.c:1066:13, + inlined from 'pam_sm_open_session' at pam_limits.c:1267:14: + /usr/include/x86_64-linux-gnu/bits/string_fortified.h:138:10: error: '__builtin___strncat_chk' argument 2 declared attribute 'nonstring' [-Werror=stringop-overread] + 138 | return __builtin___strncat_chk (__dest, __src, __len, + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 139 | __glibc_objsize (__dest)); + | ~~~~~~~~~~~~~~~~~~~~~~~~~ + In file included from /usr/include/utmp.h:29, + from pam_limits.c:37: + /usr/include/x86_64-linux-gnu/bits/utmp.h: In function 'pam_sm_open_session': + /usr/include/x86_64-linux-gnu/bits/utmp.h:66:8: note: argument 'ut_user' declared here + 66 | char ut_user[UT_NAMESIZE] + | ^~~~~~~ + + * modules/pam_limits/pam_limits.c (check_logins): Use memcpy instead of + strncat to pacify the compiler. + +2023-01-18 Dmitry V. Levin <ldv@altlinux.org> + + .github: remove x86 and x32 jobs. + These types of jobs were implemented using the old version of the OS + that is currently being deprecated by github actions. + + * .github/workflows/ci.yml (gcc11-x86-vendordir, gcc11-x86, gcc10-x86, + gcc9-x86, gcc8-x86, clang10-x86, clang9-x86, clang8-x86, gcc11-x32, + gcc10-x32, gcc9-x32, gcc8-x32): Remove. + + Link: https://github.com/actions/runner-images/issues/6002 + +2023-01-18 Cyril Duval <cyril.duval@diabolocom.com> + + pam_listfile: fix pointer misuse leading to data corruption. + pam_listfile assumes the group being tested will be written at the end + of the argument list by carrying only a pointer to the value being + examined in 'myval'. + + Therefore example + + ''' + auth required pam_listfile.so \ + onerr=succeed apply=ftp item=user sense=deny file=/etc/ftpusers + ''' + + modified from https://linux.die.net/man/8/pam_listfile is not working because + 'apply_val' will point to the latest value of 'myval', which in this case will + be "/etc/ftpusers" instead of "ftp". + + Fix this issue by copying the value of 'myval' instead of just taking + a reference pointer. + +2022-12-16 Stefan Schubert <schubi@suse.de> + + doc: Update PAM documentation from DockBook 4 to DocBook 5. + Changed files + -------------- + + Make.xml.rules.in: + - Using RNG file instead of DTD file for checking XML files. + - Taking the correct stylesheet for README files. + + doc/sag/Makefile.am, doc/adg/Makefile.am, doc/mwg/Makefile.am: + - Using RNG file instead of DTD file for checking XML files. + + configure.ac: + - Adding a new option for selecting RNG check file (-enable-docbook-rng) + - Switching stylesheets to docbook 5 + - Checking DocBook 5 environment instead of DocBook 4 environment + + *.xml: + Update from DockBook 4 to DocBook 5 + +2022-12-14 Stefan Schubert <schubi@suse.de> + + pam_env: Use vendor specific pam_env.conf and environment as fallback. + Use the vendor directory as fallback for a distribution provided default + config if there is no one in /etc. + + * Makefile.am: Add libeconf setting. + * pam_env.c: Take care about the fallback configuration in the vendor directory. + * pam_env.8.xml: Add description for the vendor directory. + * pam_env.conf.5.xml: Add description for the vendor directory. + * tst-pam_env-retval.c: Add tests for libeconf. + * configure.ac: Add ECONF settings for building man pages. + +2022-12-12 Stefan Schubert <schubi@suse.de> + + pam_shells: Use the vendor directory as fallback for a distribution provided default config if there is no one in /etc. + If pam will be compiled with the option --enable-vendordir=<vendor_dir> and + NOT defined --disable-econf, the files which define valid login shells will + be parsed in following order: + - <vendor_dir>/shells + - <vendor_dir>/shells.d/* + - /etc/shells.d/shells + But all files in <vendor_dir> will be ingnored if the user has defined his + own file /etc/shells. + This commit solves issue: https://github.com/linux-pam/linux-pam/issues/498 + +2022-12-07 Stefan Schubert <schubi@suse.de> + + pam_shells: Added xtest test case. + Test case for checking pam_authenticate in pam_shells. + +2022-12-06 Thorsten Kukuk <kukuk@suse.com> + + doc/man/Makefile.am: fix XMLS list. + The XMLS list of xml sources for the manual pages missed some xml files + and instead contained some nroff sources. + +2022-12-01 Valentin Lefebvre <valentin.lefebvre@suse.com> + + pam_env: _parse_line: fix quoteflg handled. + Check if quote flag is positive before decrementing it. Otherwise, for + some use case, it could become negative, and have an unwanted empty string + instead of an undefined variable. + +2022-12-01 Dmitry V. Levin <ldv@altlinux.org> + + .github: switch from actions/checkout@v2 to actions/checkout@v3. + This fixes the following diagnostic warning: + + Node.js 12 actions are deprecated. For more information see: + https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. + + * .github/workflows/ci.yml: Replace actions/checkout@v2 with + actions/checkout@v3. + +2022-11-11 Dmitry V. Levin <ldv@altlinux.org> + + po: update .pot and .po files. + Regenerate po/Linux-PAM.pot and po/*.po using "make -C po update-po" + command. This updates translations of pam_faillock and pam_mail + modules. + +2022-11-11 ed neville <ed@s5h.net> + + pam_mail: adjust wording for no new mail. + Wording of no new mail message should be significantly different from + new mail so that it does not align in length or similar words. + + * modules/pam_mail/pam_mail.c (report_mail): Change the wording of + no new mail message. + + Resolves: https://github.com/linux-pam/linux-pam/issues/465 + +2022-11-11 Dmitry V. Levin <ldv@altlinux.org> + + pam_faillock: fix typo in usage diagnostics. + * modules/pam_faillock/main.c (usage): Remove extra whitespace from the + usage diagnostics. + + Fixes: 94f0f5ebb ("faillock: add support to print login failure info in legacy format") + +2022-11-11 Emilio Herrera <ehespinosa57@gmail.com> + + po: update translations using Weblate (Spanish) + Currently translated at 90.0% (90 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/es/ + +2022-11-11 김인수 <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2022-11-11 Temuri Doghonadze <temuri.doghonadze@gmail.com> + + po: update translations using Weblate (Georgian) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ka/ + Resolves: https://github.com/linux-pam/linux-pam/pull/485 + +2022-11-07 Davin Shearer <2205472+scholarsmate@users.noreply.github.com> + + pam_lastlog: fix file locking. + Fixed 2 instances in the pam_lastlog module where file locks were + not being enforced when reading and writing last login records. + + * modules/pam_lastlog/pam_lastlog.c (last_login_write): The write lock + failure is fatal after 3 tries. + (last_login_read): The read lock failure is non-fatal after 3 tries. + It is non-fatal in the read case due to concerns about a possible DoS. + +2022-11-07 Deepak Das <ddas@redhat.com> + + pam_faillock: avoid logging an erroneous consecutive login failure message + * modules/pam_faillock/pam_faillock.c (write_tally): Avoid logging + a consecutive login failure message for the root user in case when + even_deny_root is not set. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2082442 + +2022-11-07 Deepak Das <ddas@redhat.com> + + pam_faillock: Clarify missing user faillock files after reboot. + * modules/pam_faillock/faillock.conf.5.xml: Adding note related to missing + user specific faillock files after reboot. + + * modules/pam_faillock/pam_faillock.8.xml: Adding note related to missing + user specific faillock files after reboot. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2062512 + +2022-10-27 Stefan Schubert <schubi@suse.de> + + doc: make stylesheets configurable. + Before this change, all stylesheets were hardcoded. + With this change, stylesheets can be defined at configure stage. + + * configure.ac: Add new options to configure stylesheets: + --enable-html-stylesheet=FILE + --enable-txt-stylesheet=FILE + --enable-pdf-stylesheet=FILE + --enable-man-stylesheet=FILE + * doc/custom-html.xsl: Rename to doc/custom-html.xsl.in, parametrize html + stylesheet. + * doc/custom-man.xsl: Rename to doc/custom-man.xsl.in, parametrize man + stylesheet. + * doc/.gitignore: Add custom-man.xsl and custom-html.xsl. + * doc/adg/Makefile.am: Use stylesheet variables. + * doc/mwg/Makefile.am: Likewise. + * doc/sag/Makefile.am: Likewise. + + Resolves: https://github.com/linux-pam/linux-pam/pull/499 + +2022-09-28 Felix Lechner <felix.lechner@lease-up.com> + + libpam*: For uncommon prefixes, provide substitution variables in pkgconfig files. + Fix undefined references to ${exec_prefix} in pkgconfig files on Guix. + The subsequent declarations of ${libdir} and ${includedir} in the same + files require this commit when ${prefix} is set to something other + than /usr. + + When the pkgconfig files were initially provided, the two lines added + here were dropped for what seemed like a good reason. [1] In the + common case of a /usr prefix, 'configure.ac' sets ${libdir} and + possibly ${includedir} explicitly [2] so the additional lines were + then not needed. + + Guix and probably Nix too, however, depart from the Filesystem + Hierarchy Standard and require the missing lines. Without those lines, + the pkgconfig files are defective on Guix. [3] + + Since working systems are not affected, the lines are added for all. + The fix was confirmed for Guix. One of the files looked like this: + + prefix=/gnu/store/3mcmjilqrivrpb3hvps32lnbnyrxrzr8-linux-pam-1.5.2-1.dc2f566 + exec_prefix=${prefix} + libdir=${exec_prefix}/lib + includedir=/gnu/store/3mcmjilqrivrpb3hvps32lnbnyrxrzr8-linux-pam-1.5.2-1.dc2f566/include/security + + Name: PAM + Description: The primary Linux-PAM library. It is used by PAM modules and PAM-aware applications. + URL: http://www.linux-pam.org/ + Version: 1.5.2 + Cflags: -I${includedir} + Libs: -L${libdir} -lpam + + * libpam/pam.pc.in, libpamc/pamc.pc.in, libpam_misc/pam_misc.pc.in: + Add @prefix@ and @exec_prefix@. + + Resolves: https://github.com/linux-pam/linux-pam/issues/466 + + [1] https://github.com/linux-pam/linux-pam/pull/369#discussion_r650557756 + [2] https://github.com/linux-pam/linux-pam/blob/40c271164dbcebfc5304d0537a42fb42e6b6803c/configure.ac#L28-L36 + [3] https://github.com/linux-pam/linux-pam/issues/466 + +2022-09-27 Iker Pedrosa <ipedrosa@redhat.com> + + pam_lastlog: check localtime_r() return value. + Check the return value of localtime_r() before calling strftime(). This + function crashes if the argument is NULL. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2012871 + +2022-09-12 Sam James <sam@gentoo.org> + + configure.ac: fix implicit function declaration in mail spool directory check + Fixes the following error with Clang 15 (which makes implicit function + declarations an error by default): + ``` + +error: call to undeclared library function 'exit' with type 'void (int) __attribute__((noreturn))'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] + exit(0); + ^ + note: include the header <stdlib.h> or explicitly provide a declaration for 'exit' + ``` + +2022-07-18 H A <contact+fedora@hen.ee> + + po: update translations using Weblate (Estonian) + Currently translated at 28.0% (28 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/et/ + +2022-07-18 김인수 <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2022-07-18 Dingzhong Chen <wsxy162@gmail.com> + + po: update translations using Weblate (Chinese (Simplified) (zh_CN)) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/zh_CN/ + +2022-07-16 Dmitry V. Levin <ldv@altlinux.org> + + pam_namespace: make sure the SIGCHLD handler is not reset too early. + * modules/pam_namespace/pam_namespace.c (inst_init): Make sure + the SIGCHLD handler is not reset too early by moving the sigaction + call right before the fork call. + + pam_mkhomedir: make sure the SIGCHLD handler is not reset too early. + * modules/pam_mkhomedir/pam_mkhomedir.c (create_homedir): Make sure + the SIGCHLD handler is not reset too early by moving the sigaction + call right before the fork call. + +2022-07-15 dengbo <dengbo@uniontech.com> + + pam_xauth: add SIGCHLD protection handle. + * modules/pam_xauth/pam_xauth.c (run_coprocess): Save the SIGCHLD + handler and reset it to the default before calling fork, restore the + handler after waitpid returns. + + Resolves: https://github.com/linux-pam/linux-pam/pull/469 + +2022-07-15 dengbo <dengbo@uniontech.com> + + pam_exec: add SIGCHLD protection handle. + * modules/pam_exec/pam_exec.c (call_exec): Save the SIGCHLD handler and + reset it to the default before calling fork, restore the handler after + waitpid returns. + + Resolves: https://github.com/linux-pam/linux-pam/issues/405 + +2022-07-15 Iker Pedrosa <ipedrosa@redhat.com> + + pam_pwhistory: document config load from file. + * modules/pam_pwhistory/pam_pwhistory.8.xml: Add new option to select + configuration file to read. + * modules/pam_pwhistory/pwhistory.conf.5.xml: Document configuration + options for the file. + * modules/pam_pwhistory/Makefile.am (dist_man_MANS): Add pwhistory.conf.5. + (XMLS): Add pwhistory.conf.5.xml. + +2022-07-15 Iker Pedrosa <ipedrosa@redhat.com> + + pam_pwhistory: load config from file. + * modules/pam_pwhistory/pam_pwhistory.c: Load config from file and + provide new conf option to select the file. + * modules/pam_pwhistory/pwhistory_config.c: Parse config from file and + load to options structure. + * modules/pam_pwhistory/pwhistory_config.h: Move options_t structure and + define parse_config_file(). + * modules/pam_pwhistory/Makefile.am (noinst_HEADERS): Add pwhistory_config.h. + (pam_pwhistory_la_SOURCES): Add pwhistory_config.c. + (dist_secureconf_DATA): Add pwhistory.conf. + * modules/pam_pwhistory/pwhistory.conf: New configuration file. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2068461 + +2022-07-15 Iker Pedrosa <ipedrosa@redhat.com> + + libpam: improve pam_modutil_search_key() doc. + * libpam/include/security/pam_modutil.h: Improve the + pam_modutil_search_key() interface documentation. + +2022-07-15 Dmitry V. Levin <ldv@altlinux.org> + + _pam_add_handler: make sure struct handler is properly initialized on error path + * libpam/pam_handlers.c (_pam_add_handler): Use calloc instead of malloc + for struct handler allocation to avoid returning garbage in some fields + of the structure on error path. + + Resolves: https://github.com/linux-pam/linux-pam/issues/475 + +2022-07-01 Dmitry V. Levin <ldv@altlinux.org> + + .github: switch whitespace-errors job to ubuntu-latest. + While ubuntu-latest in ci is not necessarily the latest version of the + OS available in ci, whitespace-errors job should be agnostic to the + version being used, so use the default one. + + * .github/workflows/ci.yml (whitespace-errors) <runs-on>: Change from + ubuntu-20.04 to ubuntu-latest. + +2022-07-01 Shreenidhi Shedi <sshedi@vmware.com> + + faillock: add support to print login failure info in legacy format. + pam_tally2 had a simple and minimalstic output to show login failure + info, new output of faillock makes the output look a bit complex and + doesn't show failure counts in a straight manner. + + This patch fixes the above issue by adding "--legacy-output" flag to + faillock which makes it possible to get output in pam_tally2 style. + +2022-07-01 Shreenidhi Shedi <sshedi@vmware.com> + + faillock: refactor faillock info printing code. + Move the code to it's own function. + +2022-07-01 Shreenidhi Shedi <sshedi@vmware.com> + + faillock: error out if user does not exist. + No need to do any further processing if a non existent username is given + to faillock. + + For first time successful login, failure field should be 0 and faillock + should show something like pam_tally2 did. + +2022-06-30 Per Jessen <per@jessen.ch> + + pam_motd: do not rely on all filesystems providing a filetype. + When using scandir() to look for MOTD files to display, we wrongly + relied on all filesystems providing a filetype. This is a fix to divert + to lstat() when we have no filetype. To maintain MT safety, it isn't + possible to use lstat() in the scandir() filter function, so all of the + filtering has been moved to an additional loop after scanning all the + motd dirs. + Also, remove superfluous alphasort from scandir(), we are doing + a qsort() later. + + Resolves: https://github.com/linux-pam/linux-pam/issues/455 + +2022-06-30 Stefan Schubert <schubi@suse.de> + + pam_namespace: use vendor specific namespace.conf and namespace.init as fallback + Use the vendor directory as fallback for a distribution provided default + config and scripts if there is no configuration in /etc. + + pam_namespace.c: Take care about the fallback configuration in vendor directory. + pam_namespace.h: Define vendor specific files and directories. + pam_namespace.8.xml: Add description for vendor directories and files. + namespace.conf.5.xml: Add description for vendor directories and files. + +2022-06-30 Stefan Schubert <schubi@suse.de> + + pam_limits: use vendor specific content in limits.d directory as fallback + Use the vendor directory as fallback for a distribution provided default + config if there is no configuration in /etc. + + pam_limits.c: Take care about the fallback configuration in vendor directory. + pam_limits.8.xml: Add description for vendor directory. + +2022-06-30 Stefan Schubert <schubi@suse.de> + + pam_access: use vendor specific access.conf as fallback. + Use the vendor directory as fallback for a distribution provided default config if there is no configuration in /etc. + + * pam_access.c: Take care about the fallback configuration in vendor directory. + * pam_access.8.xml: Added description for vendor directory. + +2022-06-19 Dmitry V. Levin <ldv@altlinux.org> + + .github: add a few vendordir enabled jobs. + * .github/workflows/ci.yml (gcc11-x86_64-vendordir, + clang12-x86_64-vendordir, gcc11-x86-vendordir): New jobs. + + ci: add vendor directory configuration support. + * ci/run-build-and-tests.sh: Configure using --enable-vendordir option + when VENDORDIR environment variable is set. + +2022-05-24 liaohanqin <liaohanqin@uniontech.com> + + doc: add pam_faillock module to SAG. + +2022-05-24 Iker Pedrosa <ipedrosa@redhat.com> + + faillock: load configuration from file. + * modules/pam_faillock/main.c: Load configuration from file + * modules/pam_faillock/pam_faillock: Improve tally directory management + * modules/pam_faillock/faillock_config.c: Print errors + * modules/pam_faillock/faillock_config.h: Extend options structure and + define get_tally_dir(). + * modules/pam_faillock/Makefile.am: Compile faillock_config.c for + faillock binary. + * modules/pam_faillock/faillock.8.xml: Update with the new configuration + option. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1978029 + +2022-05-24 Iker Pedrosa <ipedrosa@redhat.com> + + pam_faillock: move config to its own file. + The configuration load can be reused by faillock. + + * modules/pam_faillock/faillock_config.c: Move configuration loading + functions (read_config_file and set_conf_opt) to this file. + * modules/pam_faillock/faillock_config.h: Move configuration loading + macros and structures. + * modules/pam_faillock/Makefile.am: Add faillock_config. + * modules/pam_faillock/faillock.h: Remove configuration loading macros. + * modules/pam_faillock/pam_faillock.c: Remove configuration loading + functions, macros and structures. + +2022-04-24 Dmitry V. Levin <ldv@altlinux.org> + + pam_env: reorder definitions of static functions to avoid forward declarations + * modules/pam_env/pam_env.c (_assemble_line, _parse_line, _check_var, + _clean_var, _expand_arg, _pam_get_item_byname, _define_var, + _undefine_var): Move definitions of static functions before their first + use to avoid forward declarations cluttering the code. + + pam_issue: reorder definitions of static functions to avoid forward declarations + * modules/pam_issue/pam_issue.c (read_issue_raw, read_issue_quoted): + Move definitions of static functions before their first use to avoid + forward declarations cluttering the code. + +2022-04-18 A S Alam <amanpreet.alam@gmail.com> + + po: update translations using Weblate (Punjabi) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pa/ + +2022-04-18 Seong-ho Cho <darkcircle.0426@gmail.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2022-03-11 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_env: add a test of return values. + * modules/pam_env/tst-pam_env-retval.c: New file. + * modules/pam_env/Makefile.am (TESTS): Add $(check_PROGRAMS). + (check_PROGRAMS, tst_pam_env_retval_LDADD): New variables. + +2022-03-11 Thorsten Kukuk <kukuk@suse.com> + + pam_access: handle hostnames in access.conf. + According to the manual page, the following entry is valid but does not + work: + -:root:ALL EXCEPT localhost + + See https://bugzilla.suse.com/show_bug.cgi?id=1019866 + + Patched is based on PR#226 from Josef Moellers + +2022-02-24 Dmitry V. Levin <ldv@altlinux.org> + + pam_exec: remove redundant free() invocations. + In the child process, freeing memory right before pam_syslog() + followed by _exit(ENOMEM) is useless. + + * modules/pam_exec/pam_exec.c (call_exec): Do not call free(envlist). + + Resolves: https://github.com/linux-pam/linux-pam/issues/444 + +2022-02-24 Dmitry V. Levin <ldv@altlinux.org> + + pam_exec: remove redundant strdup. + In the child process, the elements of argv[] are not modified, so there + is no need to copy strings. + + * modules/pam_exec/pam_exec.c (call_exec): Do not call strdup on argv[] + elements during arggv[] initialization. + + Resolves: https://github.com/linux-pam/linux-pam/pull/446 + +2022-02-24 Thorsten Kukuk <kukuk@suse.com> + + pam_nologin: don't print empty message. + +2022-02-21 Stefan Schubert <schubi@suse.de> + + pam_time: fix clang compilation warning. + Fix the following compilation warning reported by clang: + "result of comparison against a string literal is unspecified + (use strcmp instead)". + + * pam_time.c (_pam_parse): Do not compare char* string with a constant. + +2022-02-21 Iker Pedrosa <ipedrosa@redhat.com> + + pam_usertype: only use SYS_UID_MAX for system users. + * modules/pam_usertype/pam_usertype.c (pam_usertype_is_system): Stop + using SYS_UID_MIN to check if it is a system account, because all + accounts below the SYS_UID_MAX are system users. + * modules/pam_usertype/pam_usertype.8.xml: Remove reference to SYS_UID_MIN + as it is no longer used to calculate the system accounts. + * configure.ac: Remove PAM_USERTYPE_SYSUIDMIN. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1949137 + +2022-02-21 Iker Pedrosa <ipedrosa@redhat.com> + + pam_keyinit: thread-safe implementation. + * modules/pam_keyinit/pam_keyinit.c: Bypass setre*id() C library calls + with kernel calls and change global variables definitions to be + thread-safe. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1997969 + Co-Authored-By: Andreas Schneider <asn@samba.org> + +2022-02-09 pan chenbo <panchenbo@uniontech.com> + + po: update translations using Weblate (Chinese (Simplified) (zh_CN)) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/zh_CN/ + +2022-02-09 Gogo Gogsi <linux.hr@protonmail.com> + + po: update translations using Weblate (Croatian) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/hr/ + +2022-02-09 Emilio Herrera <ehespinosa57@gmail.com> + + po: update translations using Weblate (Spanish) + Currently translated at 82.0% (82 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/es/ + +2022-02-09 simmon <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2022-02-09 Ondrej Sulek <feonsu@gmail.com> + + po: update translations using Weblate (Slovak) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/sk/ + +2022-02-09 chong gao <zhuzaifangxuele@gmail.com> + + po: update translations using Weblate (Chinese (Hong Kong) (zh_HK)) + Currently translated at 1.0% (1 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/zh_HK/ + +2022-02-09 Tomohiro KATO <tomop@teamgedoh.net> + + po: update translations using Weblate (Japanese) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ja/ + +2022-02-08 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_time: use vendor specific time.conf as fallback. + Use the vendor directory defined by --enable-vendordir=DIR configure + option as fallback for the distribution provided default config file + if there is no configuration in /etc. + + * modules/pam_time/pam_time.8.xml: Describe this. + * modules/pam_time/time.h [VENDOR_SCONFIGDIR] (VENDOR_PAM_TIME_CONF): + New macro. + * modules/pam_time/pam_time.c (_pam_parse) [VENDOR_PAM_TIME_CONF]: + Try to open VENDOR_PAM_TIME_CONF file when no conffile= option was + specified and PAM_TIME_CONF file does not exist. + + Resolves: https://github.com/linux-pam/linux-pam/pull/409 + +2022-02-08 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_time: add a test of return values. + * modules/pam_time/tst-pam_time-retval.c: New file. + * modules/pam_time/Makefile.am (TESTS): Add $(check_PROGRAMS). + (check_PROGRAMS, tst_pam_time_retval_LDADD): New variables. + +2022-02-07 Martyn Welch <martyn@welchs.me.uk> + + pam_pwhistory: Enable alternate location for password history file (#396) + Sometimes, especially in embedded devices, the /etc directory can be
+ read-only and/or not saved over upgrades. In order to ensure password
+ policies are maintained across upgrades and the module functions on
+ read-only file systems, allow the location of the password history file
+ to be set in the PAM configuration.
+
+ Signed-off-by: Edward <jinzhou.zhu1@ge.com>
+ [Martyn Welch: Updated commit message and ported to latest version]
+ Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
+ +2022-02-04 Jakov Smolić <jsmolic@gentoo.org> + + libpam: Fix undefined reference to `libintl_dgettext` on musl. + * libpam/Makefile.am (libpam_la_LIBADD): Add @LTLIBINTL@. + + Resolves: https://github.com/linux-pam/linux-pam/pull/433 + +2022-02-04 Stefan Schubert <schubi@suse.de> + + pam_faillock: add a test of return values. + * modules/pam_faillock/tst-pam_faillock-retval.c: New file. + * modules/pam_faillock/Makefile.am (TESTS): Add $(check_PROGRAMS). + (check_PROGRAMS, tst_pam_faillock_retval_LDADD): New variables. + + Resolves: https://github.com/linux-pam/linux-pam/pull/431 + +2022-02-01 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_faillock: use vendor specific faillock.conf as fallback. + Use the vendor directory defined by --enable-vendordir=DIR configure + option as fallback for the distribution provided default config file + if there is no configuration in /etc. + + * modules/pam_faillock/pam_faillock.8.xml: Describe this. + * modules/pam_faillock/faillock.h [VENDOR_SCONFIGDIR] + (VENDOR_FAILLOCK_DEFAULT_CONF): New macro. + * modules/pam_faillock/pam_faillock.c (read_config_file) + [VENDOR_FAILLOCK_DEFAULT_CONF]: Try to open VENDOR_FAILLOCK_DEFAULT_CONF + file when FAILLOCK_DEFAULT_CONF file does not exist. + + Resolves: https://github.com/linux-pam/linux-pam/pull/423 + +2022-01-25 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_group: use vendor specific group.conf as fallback. + Use the vendor directory defined by --enable-vendordir=DIR configure + option as fallback for the distribution provided default config file + if there is no configuration in /etc. + + * modules/pam_group/pam_group.c: Include <errno.h>. + [VENDOR_SCONFIGDIR] (VENDOR_PAM_GROUP_CONF): New macro. + (read_field): Add conf_filename argument, use it instead of PAM_GROUP_CONF. + (check_account) <conf_filename>: New variable, initialize it to + PAM_GROUP_CONF, pass it to read_field(). + [VENDOR_PAM_GROUP_CONF]: Assign VENDOR_PAM_GROUP_CONF to conf_filename + when PAM_GROUP_CONF file does not exist. + * modules/pam_group/pam_group.8.xml: Describe it. + + Resolves: https://github.com/linux-pam/linux-pam/pull/412 + +2022-01-24 Stefan Schubert <schubi@suse.de> + Dmitry V. Levin <ldv@altlinux.org> + + pam_sepermit: use vendor specific sepermit.conf as fallback. + Use the vendor directory defined by --enable-vendordir=DIR configure + option as fallback for the distribution provided default config file + if there is no configuration in /etc. + + * modules/pam_sepermit/pam_sepermit.c [VENDOR_SCONFIGDIR] + (SEPERMIT_VENDOR_CONF_FILE): New macro. + (pam_sm_authenticate) [SEPERMIT_VENDOR_CONF_FILE]: Use it as default + config file when conf= option is not specified and the file pointed + by SEPERMIT_CONF_FILE does not exist. + * modules/pam_sepermit/pam_sepermit.8.xml: Describe it. + + Resolves: https://github.com/linux-pam/linux-pam/pull/411 + +2022-01-24 Dmitry V. Levin <ldv@altlinux.org> + + Drop Travis CI support. + The last build of Linux-PAM by travis-ci.org was in March of 2020, + and travis-ci.org says that all building is ceased since June of 2021. + + Given that in foreseeable future travis-ci.com is not going to welcome + free software projects, there is no use to keep Travis CI support + in the tree. + + * .travis.yml: Remove. + + Link: https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing + +2022-01-24 Dmitry V. Levin <ldv@altlinux.org> + + ci: add a git status check. + * ci/run-build-and-tests.sh: Check that "git status" does not report + any untracked files. + + Update .gitignore file. + * .gitignore: Add Make.xml.rules. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + pam_limits: use VENDOR_SCONFIGDIR macro. + * modules/pam_limits/pam_limits.c (parse_config_file): Use + VENDOR_SCONFIGDIR macro instead of VENDORDIR. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + Introduce VENDOR_SCONFIGDIR macro. + This is a VENDORDIR version of SCONFIGDIR macro, defined to + VENDORDIR"/security" when --enable-vendordir is used for build. + + * configure.ac (AC_DEFINE_UNQUOTED): Add VENDOR_SCONFIGDIR. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + modules: move SCONFIGDIR-based macro definitions from Makefile.am to the source code + Since SCONFIGDIR macro is available, the is no need to define macros + based on SCONFIGDIR in Makefile.am files. + + * modules/pam_access/Makefile.am (AM_CFLAGS): Move definitions of + PAM_ACCESS_CONFIG and ACCESS_CONF_GLOB macros ... + * modules/pam_access/pam_access.c: ... here. + * modules/pam_env/Makefile.am (AM_CFLAGS): Move definition of + DEFAULT_CONF_FILE macro ... + * modules/pam_env/pam_env.c: ... here. + * modules/pam_group/Makefile.am (AM_CFLAGS): Move definition of + PAM_GROUP_CONF macro ... + * modules/pam_group/pam_group.c: ... here. + * modules/pam_limits/Makefile.am (AM_CFLAGS): Move definition of + LIMITS_FILE macro ... + * modules/pam_limits/pam_limits.c: ... here. + * modules/pam_sepermit/Makefile.am (AM_CFLAGS): Move definition of + SEPERMIT_CONF_FILE macro ... + * modules/pam_sepermit/pam_sepermit.c: ... here. + * modules/pam_time/Makefile.am (AM_CFLAGS): Move definition of + PAM_TIME_CONF macro ... + * modules/pam_time/pam_time.c: ... here. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + pam_limits: make LIMITS_FILE_DIR macro consistent. + LIMITS_FILE_DIR used to define a glob pattern instead of a directory + name, fix that inconsistency. + + * modules/pam_limits/Makefile.am (AM_CFLAGS): Move "/*.conf" ending of + LIMITS_FILE_DIR macro ... + * modules/pam_limits/pam_limits.c (LIMITS_CONF_GLOB): ... here. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + modules: use SCONFIGDIR macro. + Use SCONFIGDIR macro instead of open-coding "/etc/security", + the latter is not correct when configured using --enable-sconfigdir + with an argument different from /etc/security. + + * modules/pam_faillock/faillock.h (FAILLOCK_DEFAULT_CONF): Use + SCONFIGDIR. + * modules/pam_namespace/pam_namespace.h (SECURECONF_DIR): Remove. + (PAM_NAMESPACE_CONFIG, NAMESPACE_INIT_SCRIPT, NAMESPACE_D_DIR, + NAMESPACE_D_GLOB): Use SCONFIGDIR. + * modules/pam_namespace/Makefile.am (AM_CFLAGS): Remove + -DSECURECONF_DIR. + * modules/pam_pwhistory/opasswd.c (OLD_PASSWORDS_FILE): Use SCONFIGDIR. + * modules/pam_unix/passverify.h: Likewise. + * modules/pam_unix/passverify.c (OPW_TMPFILE): Use SCONFIGDIR. + +2022-01-23 Dmitry V. Levin <ldv@altlinux.org> + + Introduce SCONFIGDIR macro. + Follow the VENDORDIR example and introduce a macro defined to the + argument of --enable-sconfigdir option. Unlike --enable-vendordir, + --enable-sconfigdir has a default value, so when --enable-sconfigdir + is not used for build, SCONFIGDIR will be defined to that default value. + + * configure.ac (AC_DEFINE_UNQUOTED): Add SCONFIGDIR. + +2022-01-22 Dmitry V. Levin <ldv@altlinux.org> + Stefan Schubert <schubi@suse.de> + + pam_sepermit: fix conf= option support. + The parser of conf= option failed to recognize the option unless + it was specified without an argument, making it useless. + + * modules/pam_sepermit/pam_sepermit.c: Include "pam_inline.h". + (pam_sm_authenticate): Fix parsing of conf= option. + * modules/pam_sepermit/tst-pam_sepermit-retval.c: Check conf= option. + + Resolves: https://github.com/linux-pam/linux-pam/pull/429 + +2022-01-22 Dmitry V. Levin <ldv@altlinux.org> + + pam_sepermit: add a basic test for return values. + * modules/pam_sepermit/tst-pam_sepermit-retval.c: New file. + * modules/pam_sepermit/Makefile.am (TESTS): Add $(check_PROGRAMS). + (check_PROGRAMS, tst_pam_sepermit_retval_LDADD): New variables. + +2022-01-18 liaohanqin <liaohanqin@gmail.com> + + Update xsh.c. + fix: typing error + +2022-01-14 planc <hubenchang0515@outlook.com> + + Add a conversation function example. + * examples/Makefile.am: Add tty_conv to noinst_PROGRAMS + * examples/tty_conv.c: A new example of conversation function. + +2022-01-14 Thorsten Kukuk <5908016+thkukuk@users.noreply.github.com> + + pam_limits: adjust docu if config file is missing (#426) + This adjustes the documentation for the changes from PR#418
+ We no longer fail if the config file does not exist. + +2022-01-13 Stefan Schubert <schubi@suse.de> + + pam_rootok: fix compilation warning when HAVE_LIBAUDIT is not defined. + * modules/pam_rootok/pam_rootok.c (log_callback): Move audit_fd + definition under HAVE_LIBAUDIT guard. + +2022-01-13 Ludwig Nussel <ludwig.nussel@suse.de> + + pam_limits: don't fail on missing config files (#418) + A config with only comments or an empty one is completely fine for
+ pam_limits. So don't complain about missing config files either. + +2022-01-12 pyllyukko <pyllyukko@maimed.org> + + Check the return value of localtime in faillock (#421) + +2022-01-06 Dmitry V. Levin <ldv@altlinux.org> + + README: fix typo. + * README: Rename install_dependencies.sh to install-dependencies.sh. + + Fixes: v1.4.0~211 ("Adjust README with instructions for package prerequsities") + +2021-11-24 Mingli Yu <mingli.yu@windriver.com> + + run-xtests.sh: check whether files exist. + Fixes: + # ./run-xtests.sh . tst-pam_access1 + mv: cannot stat '/etc/security/opasswd': No such file or directory + PASS: tst-pam_access1 + mv: cannot stat '/etc/security/opasswd-pam-xtests': No such file or directory + ================== + 1 tests passed + 0 tests not run + ================== + +2021-11-24 Dmitry V. Levin <ldv@altlinux.org> + + modules/pam_limits: fix build with old Linux kernel headers. + As PR_SET_NO_NEW_PRIVS was introduced by Linux kernel commit + v3.5-rc1~161^2~37, provide a fallback definition to fix build + with older Linux kernel headers. + + * modules/pam_limits/pam_limits.c [!PR_SET_NO_NEW_PRIVS] + (PR_SET_NO_NEW_PRIVS): New macro. + + Resolves: https://github.com/linux-pam/linux-pam/issues/406 + Fixes: dd9cf929 ("modules/pam_limits: add support for nonewprivs") + +2021-11-03 Thorsten Kukuk <5908016+thkukuk@users.noreply.github.com> + + Use vendor specific limits.conf as fallback (#402) + * Use vendor specific limits.conf as fallback + +2021-11-02 Thorsten Kukuk <5908016+thkukuk@users.noreply.github.com> + + Only include vendordir in manual page if set (#401) + + Include pam_xauth_data.3.xml in source archive (#400) + +2021-09-03 Dmitry V. Levin <ldv@altlinux.org> + + Fix a typo found using codespell tool. + * modules/pam_pwhistory/pam_pwhistory.c: Replace "crypted password" with + "hashed password" in comment. + * modules/pam_unix/passverify.c (create_password_hash): Rename "crypted" + local variable to "hashed". + +2021-08-30 Fabrice Fontaine <fontaine.fabrice@gmail.com> + + configure.ac: also search libcrypt through pkg-config. + libxcrypt provides a libcrypt.pc file so use it if available as this + will allow to retrieve the library path (e.g. + -L/home/buildroot/output/host//riscv64-buildroot-linux-musl/sysroot/usr/lib) + which is useful when cross-compiling and will avoid the following build + failure on buildroot: + + /home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/riscv64-buildroot-linux-musl/10.2.0/../../../../riscv64-buildroot-linux-musl/bin/ld: .libs/passverify.o: in function `.L30': + passverify.c:(.text+0x368): undefined reference to `crypt_checksalt' + + Fixes: + - http://autobuild.buildroot.org/results/20b14e222b35c2d1269960075832b784ba81aa1a + +2021-08-19 Dmitry V. Levin <ldv@altlinux.org> + + pam_unix: workaround the problem caused by libnss_systemd. + The getspnam(3) manual page says that errno shall be set to EACCES when + the caller does not have permission to access the shadow password file. + Unfortunately, this contract is broken when libnss_systemd is used in + the nss stack. + + Workaround this problem by falling back to the helper invocation when + pam_modutil_getspnam returns NULL regardless of errno. As pam_unix + already behaves this way when selinux is enabled, it should be OK + for the case when selinux is not enabled, too. + + * modules/pam_unix/passverify.c (get_account_info): When + pam_modutil_getspnam returns NULL, unconditionally fall back + to the helper invocation. + + Complements: f220cace2053 ("Permit unix_chkpwd & pam_unix.so to run without being setuid-root") + Resolves: https://github.com/linux-pam/linux-pam/issues/379 + +2021-08-18 Jérôme Fenal <jfenal@free.fr> + + po: update translations using Weblate (French) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fr/ + +2021-08-02 panchenbo <panchenbo@uniontech.com> + + po/zh_CN.po: fix pam_lastlog translation errors. + Closes: https://github.com/linux-pam/linux-pam/issues/383 + +2021-07-24 simmon <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Swedish) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/sv/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Portuguese (Brazil)) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pt_BR/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Portuguese (Brazil)) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pt/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Dutch) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/nl/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Italian) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/it/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Hebrew) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Finnish) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fi/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Danish) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/da/ + +2021-07-22 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Catalan) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ca/ + +2021-07-22 Yuri Chornoivan <yurchor@ukr.net> + + po: update translations using Weblate (Ukrainian) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/uk/ + +2021-07-22 Oğuz Ersen <oguzersen@protonmail.com> + + po: update translations using Weblate (Turkish) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/tr/ + +2021-07-21 Piotr Drąg <piotrdrag@gmail.com> + + po: update translations using Weblate (Polish) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pl/ + +2021-07-21 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (German) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/de/ + +2021-07-21 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Russian) + Currently translated at 100.0% (100 of 100 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ru/ + +2021-07-21 Seong-ho Cho <darkcircle.0426@gmail.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2021-07-20 Dmitry V. Levin <ldv@altlinux.org> + + po: update .pot and .po files. + Regenerate po/Linux-PAM.pot and po/*.po using "make -C po update-po" + command. + + Prepare for 1.5.2 release. + * configure.ac (AC_INIT): Raise version to 1.5.2. + * NEWS: Update. + + pam_faillock: remove confusing comment. + * modules/pam_faillock/pam_faillock.c (faillock_message): Remove the + comment that meant to help translators but actually confused xgettext. + +2021-07-09 Iker Pedrosa <ipedrosa@redhat.com> + + pam_filter: Close file after controlling tty. + Failing to check the descriptor value meant that there was a bug in the + attempt to close the controlling tty. Moreover, this would lead to a + file descriptor leak as pointed out by the static analyzer tool: + + Error: RESOURCE_LEAK (CWE-772): [#def26] + Linux-PAM-1.5.1/modules/pam_filter/pam_filter.c:356: open_fn: Returning handle opened by "open". [Note: The source code implementation of the function has been overridden by a user model.] + Linux-PAM-1.5.1/modules/pam_filter/pam_filter.c:356: var_assign: Assigning: "t" = handle returned from "open("/dev/tty", 2)". + Linux-PAM-1.5.1/modules/pam_filter/pam_filter.c:357: off_by_one: Testing whether handle "t" is strictly greater than zero is suspicious. "t" leaks when it is zero. + Linux-PAM-1.5.1/modules/pam_filter/pam_filter.c:357: remediation: Did you intend to include equality with zero? + Linux-PAM-1.5.1/modules/pam_filter/pam_filter.c:367: leaked_handle: Handle variable "t" going out of scope leaks the handle. + 365| pam_syslog(pamh, LOG_ERR, + 366| "child cannot become new session: %m"); + 367|-> return PAM_ABORT; + 368| } + 369| + +2021-06-29 Andrew G. Morgan <morgan@kernel.org> + + Permit unix_chkpwd & pam_unix.so to run without being setuid-root. + Remove the hard-coding of the idea that the only way pam_unix.so can + read the shadow file is if it can, in some way, run setuid-root. + Linux capabilities only require cap_dac_override to read the /etc/shadow + file. + + This change achieves two things: it opens a path for a linux-pam + application to run without being setuid-root; further, it allows + unix_chkpwd to run non-setuid-root if it is installed: + + sudo setcap cap_dac_override=ep unix_chkpwd + + If we wanted to link against libcap, we could install this binary with + cap_dac_override=p, and use cap_set_proc() to raise the effective bit + at runtime. However, some distributions already link unix_chkpwd + against libcap-ng for some, likely spurious, reason so "ep" is fine + for now. + +2021-06-15 Fabrice Fontaine <fontaine.fabrice@gmail.com> + + configure.ac: fix build with libxcrypt and uclibc-ng. + Fix the following build failure with libxcrypt and uclibc-ng: + + ld: unix_chkpwd-passverify.o: in function `verify_pwd_hash': + passverify.c:(.text+0xab4): undefined reference to `crypt_checksalt' + + Fixes: + - http://autobuild.buildroot.org/results/65d68b7c9c7de1c7cb0f941ff9982f93a49a56f8 + +2021-06-14 Mathieu Trossevin <mathieu.trossevin@gmail.com> + + Add pkgconfig files for provided libraries. + * .gitignore: Add .pc files as they are generated by autoconf. + * configure.ac: Generate .pc files for libpam, libpam_misc and libpamc. + * libpam/Makefile.am: Install pam.pc. + * libpam/pam.pc.in: New file. + * libpam_misc/Makefile.am: Install pam_misc.pc + * libpam_misc/pam_misc.pc.in: New file. + * libpamc/Makefile.am: Install pamc.pc + + This allow applications and PAM modules to automatically find libpam, + libpam_misc and libpamc if they are installed instead of having to + manually search for them. + +2021-06-14 Björn Esser <besser82@fedoraproject.org> + + Remove support for legacy xcrypt. + Since many distributions are shipping a version of libxcrypt >= 4.0.0 + as a replacement for glibc's libcrypt now, older versions of xcrypt, + which could be installed in parallel, are not relevant anymore. + + * configure.ac (AC_CHECK_HEADERS): Remove xcrypt.h. + (AC_SEARCH_LIBS): Remove xcrypt. + (AC_CHECK_FUNCS): Remove crypt_gensalt_r. + (AC_DEFINE): Remove HAVE_LIBXCRYPT. + * modules/pam_pwhistory/opasswd.c [HAVE_LIBXCRYPT]: Remove. + * modules/pam_unix/bigcrypt.c [HAVE_LIBXCRYPT]: Likewise. + * modules/pam_userdb/pam_userdb.c [HAVE_LIBXCRYPT]: Likewise. + * modules/pam_unix/passverify.c [HAVE_LIBXCRYPT]: Likewise. + (create_password_hash) [HAVE_LIBXCRYPT]: Likewise. + +2021-06-14 Jeff Squyres <jsquyres@cisco.com> + + pam_misc: set default length of misc_conv() buffer to 4096. + + pam_misc: make length of misc_conv() configurable. + Add --with-misc-conv-bufsize=<number> option to configure to allow + a longer buffer size for libpam_misc's misc_conv() function (it still + defaults to 512 bytes). + +2021-06-14 Iker Pedrosa <ipedrosa@redhat.com> + + pam_timestamp: replace hmac implementation. + sha1 is no longer recommended as a cryptographic algorithm for + authentication. Thus, the idea of this change is to replace the + implementation provided by hmacsha1 included in pam_timestamp module by + the one in the openssl library. This way, there's no need to maintain + the cryptographic algorithm implementation and it can be easily changed + with a single configuration change. + + modules/pam_timestamp/hmac_openssl_wrapper.c: implement wrapper + functions around openssl's hmac implementation. Moreover, manage the key + generation and its read and write in a file. Include an option to + configure the cryptographic algorithm in login.defs file. + modules/pam_timestamp/hmac_openssl_wrapper.h: likewise. + modules/pam_timestamp/pam_timestamp.c: replace calls to functions + provided by hmacsha1 by functions provided by openssl's wrapper. + configure.ac: include openssl dependecy if it is enabled. + modules/pam_timestamp/Makefile.am: include new files and openssl library + to compilation. + ci/install-dependencies.sh: include openssl library to dependencies. + NEWS: add new item to next release. + Make.xml.rules.in: add stringparam profiling for hmac + doc/custom-man.xsl: change import docbook to one with profiling + modules/pam_timestamp/pam_timestamp.8.xml: add conditional paragraph to + indicate the value in /etc/login.defs that holds the value for the + encryption algorithm + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1947294 + +2021-06-13 Dmitry V. Levin <ldv@altlinux.org> + + .github: add gcc-11, clang-12, and clang-11 jobs. + * .github/workflows/ci.yml (gcc11-x86_64, gcc11-x86, gcc11-x32, + clang12-x86_64, clang11-x86_64): New jobs. + +2021-06-13 Dmitry V. Levin <ldv@altlinux.org> + + tests: fix -Wmaybe-uninitialized warnings. + Fix the following class of compilation warnings reported by gcc 11: + + tst-pam_end.c: In function ‘main’: + tst-pam_end.c:55:12: error: ‘conv’ may be used uninitialized [-Werror=maybe-uninitialized] + 55 | retval = pam_start (service, user, &conv, &pamh); + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + In file included from tst-pam_end.c:41: + ../libpam/include/security/pam_appl.h:23:1: note: by argument 3 of type ‘const struct pam_conv *’ to ‘pam_start’ declared here + 23 | pam_start(const char *service_name, const char *user, + | ^~~~~~~~~ + tst-pam_end.c:49:19: note: ‘conv’ declared here + 49 | struct pam_conv conv; + | ^~~~ + + * tests/tst-pam_end.c (main): Initialize conv variable. + * tests/tst-pam_fail_delay.c: Likewise. + * tests/tst-pam_get_item.c: Likewise. + * tests/tst-pam_getenvlist.c: Likewise. + * tests/tst-pam_set_data.c: Likewise. + * tests/tst-pam_set_item.c: Likewise. + * tests/tst-pam_start.c: Likewise. + * tests/tst-pam_start_confdir.c: Likewise. + +2021-06-10 Dmitry V. Levin <ldv@altlinux.org> + + pam_unix: do not use crypt_checksalt when checking for password expiration + According to Zack Weinberg, the intended meaning of + CRYPT_SALT_METHOD_LEGACY is "passwd(1) should not use this hashing + method", it is not supposed to mean "force a password change on next + login for any user with an existing stored hash using this method". + + This reverts commit 4da9febc39b955892a30686e8396785b96bb8ba5. + + * modules/pam_unix/passverify.c (check_shadow_expiry) + [CRYPT_CHECKSALT_AVAILABLE]: Remove. + + Closes: https://github.com/linux-pam/linux-pam/issues/367 + +2021-06-10 Patrick Schleizer <adrelanos@whonix.org> + + pam_exec: implement quiet_log option. + * modules/pam_exec/pam_exec.c (call_exec): Implement quiet_log option. + * modules/pam_exec/pam_exec.8.xml: Document it. + + Resolves: https://github.com/linux-pam/linux-pam/issues/334 + +2021-05-24 Jeff Squyres <jsquyres@cisco.com> + + pam.conf: clarify default action for unspecified return codes. + Add short blurbs explaining that if a return code is not specified in + the "[value1=action1 value2=action2 ...]" form and "default=action" is + not specified, that return code's action defaults to "bad". + +2021-05-01 Hasan <aliyevH@hotmail.com> + + man: fix spelling bug in pam_end.3.xml. + * doc/man/pam_end.3.xml: Fix repeated words. + +2021-04-25 simmon <simmon@nplob.com> + + po: update translations using Weblate (Korean) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ko/ + +2021-04-25 Emilio Herrera <ehespinosa57@gmail.com> + + po: update translations using Weblate (Spanish) + Currently translated at 81.8% (81 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/es/ + +2021-04-22 Josef Moellers <jmoellers@suse.de> + + pam_limits: "Unlimited" is not a valid value for RLIMIT_NOFILE. + Replace it with a value obtained from /proc/sys/fs/nr_open + + * modules/pam_limits/limits.conf.5.xml: Document the replacement. + * modules/pam_limits/pam_limits.c: Replace unlimited RLIMIT_NOFILE + value with a value obtained from /proc/sys/fs/nr_open + +2021-04-21 Stanislav Zidek <szidek@redhat.com> + + pam_userdb: Prevent garbage characters from db. + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1791965 + +2021-04-12 Tomas Mraz <tmraz@fedoraproject.org> + + misc_conv: Flush the terminal input after the password is read. + Fixes #347 + + * libpam_misc/misc_conv.c (read_string): Use TCSAFLUSH instead + of TCSADRAIN when resetting the terminal echo state + +2021-04-12 Tomas Mraz <tmraz@fedoraproject.org> + + pam_access: clean up the remote host matching code. + * modules/pam_access/pam_access.c (from_match): Split out remote_match() + function and avoid calling it when matching against LOCAL keyword. + There is also no point in doing domain match against TTY or SERVICE. + +2021-03-25 chuanqin <chuanqing.qin@nokia-sbell.com> + + pam_faillock: convert spaces to tab to keep code style. + convert spaces to tab which mixture use in modules/pam_faillock/main.c + +2021-03-08 theslimshaney <33791263+theslimshaney@users.noreply.github.com> + + pam_env: fix example in pam_env.conf.5 for setting variable. + +2021-03-05 dshein-alt <76520100+dshein-alt@users.noreply.github.com> + + pam_mkhomedir: use HOME_MODE or UMASK from /etc/login.defs. + Follow the example of useradd(8) and set the user home directory mode
+ to the value of HOME_MODE or UMASK configuration item from
+ /etc/login.defs when umask option is not specified.
+ +2021-02-13 Ricky Tigg <ricky.tigg@gmail.com> + Ricky Tigg <ricky.tigg@gmail.com> + + po: update translations using Weblate (Finnish) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fi/ + +2021-02-13 Balázs Meskó <meskobalazs@mailbox.org> + Balázs Meskó <meskobalazs@mailbox.org> + + po: update translations using Weblate (Hungarian) + Currently translated at 77.7% (77 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/hu/ + +2021-02-13 Carmen Bianca Bakker <carmen@carmenbianca.eu> + Carmen Bianca Bakker <carmen@carmenbianca.eu> + + po: update translations using Weblate (Esperanto) + Currently translated at 43.4% (43 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/eo/ + +2021-02-13 Weblate <noreply@weblate.org> + Weblate <noreply@weblate.org> + + Update translation files. + Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ + Translation: linux-pam/master + +2021-01-27 Changqing Li <changqing.li@windriver.com> + + configure.ac: add --with-systemdunitdir option. + * Add this option to support the following scenario: + prefix = '/usr' + servicedir = '/lib/systemd/system' + + * The default behavior is changed: + If this option is not given, servicedir will be set to the value that is + obtained from systemd pkg-config file. If the value cannot be obtained, + servicedir will be set to the default value '$(prefix)/lib/systemd/system'. + +2021-01-27 Changqing Li <changqing.li@windriver.com> + + faillock: create tallydir before creating tallyfile. + The default tallydir is "/var/run/faillock", and this default + tallydir may not exist. + + Function open may fail as tallydir does not exist when creating + the tallyfile. Therefore, faillock will not work well. + + Fix this problem by creating tallydir before creating tallyfile + when the tallydir does not exist. + +2021-01-27 Ludwig Nussel <ludwig.nussel@suse.de> + + pam_securetty: don't complain about missing config. + Not shipping a config file should be perfectly valid for distros while + still having eg login pre-configured to honor securetty when present. + PAM itself doesn't ship any template either. So avoid spamming the log + file if /etc/securetty wasn't found. + +2021-01-25 Kolja <razzeee@gmail.com> + + faillock: Use pluralization via dngettext or fallback. + +2021-01-18 Andreas-Johann Ø Ulvestad <aj@aju.no> + Andreas-Johann Ø Ulvestad <aj@aju.no> + + po: update translations using Weblate (Norwegian Nynorsk) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/nn/ + +2021-01-18 Jan Kuparinen <copper_fin@hotmail.com> + Jan Kuparinen <copper_fin@hotmail.com> + + po: update translations using Weblate (Finnish) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fi/ + +2020-12-28 Dmitry V. Levin <ldv@altlinux.org> + + pam_umask: fix handling of umask parameter. + Potential failures of strdup(3) were ignored, fix this by not using + strdup(3) at all. + + * modules/pam_umask/pam_umask.c (struct options_t): Add const to umask + field, add login_umask field. + (parse_option): Do not use strdup. + (get_options): Assign pam_modutil_search_key return values + to options->login_umask. + (pam_sm_open_session): Free options.login_umask instead of + options.umask. + +2020-12-28 Sven Hartge <sven@svenhartge.de> + + pam_setquota: Minor whitespace, spelling and mail address fixes. + +2020-12-26 Vlad <milovlad@outlook.com> + Vlad <milovlad@outlook.com> + + po: update translations using Weblate (Romanian) + Currently translated at 100.0% (99 of 99 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ro/ + +2020-12-23 Dmitry V. Levin <ldv@altlinux.org> + + pam_mkhomedir: fix umask wording in documentation. + * modules/pam_mkhomedir/pam_mkhomedir.8.xml (umask): Fix wording. + +2020-12-20 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Bulgarian) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/bg/ + +2020-12-17 Issam E. Maghni <issam.e.maghni@mailbox.org> + + configure: test -a|o is not POSIX. + Fixes `test: too many arguments` when building Linux-PAM using sbase. + This is due to a non-POSIX syntax test ... -a ... and test ... -o .... + + > The XSI extensions specifying the -a and -o binary primaries and the + > '(' and ')' operators have been marked obsolescent. + + See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html + +2020-12-08 Christian Göttsche <cgzones@googlemail.com> + + pam_namespace: check for string_to_security_class failure. + Check for the unlikely case string_to_security_class() does not find the + associated SELinux security class. + This will only happen if the loaded SELinux policy does not define the + class "dir" (which no sane policy does) or querying the selinuxfs + fails. + + Suggested by #309 + +2020-12-08 Christian Göttsche <cgzones@googlemail.com> + + pam_selinux: check for string_to_security_class failure. + Check for the unlikely case string_to_security_class() does not find the + associated SELinux security class. + This will only happen if the loaded SELinux policy does not define the + class "chr_file" (which no sane policy does) or querying the selinuxfs + fails. + + Suggested by #309 + +2020-12-07 Tomas Mraz <tmraz@fedoraproject.org> + + Clarify the effect of 'done' in documentation. + The done action does not terminate the stack processing in case + there is a failing module with bad action up in the stack. + + Fixes #307 + + * doc/man/pam.conf-syntax.xml: Clarify the effect of 'done'. + +2020-11-28 Dmitry V. Levin <ldv@altlinux.org> + + .github: partially migrate from ubuntu-18.04 to ubuntu-20.04. + * .github/workflows/ci.yml (runs-on): Switch from ubuntu-latest to + ubuntu-20.04 for whitespace-errors and *-x86_64 jobs. Stick with + ubuntu-18.04 for *-x86 and *-x32 jobs until we figure out how to + obtain -lcrypt on ubuntu-20.04 for these architectures. + +2020-11-28 Dmitry V. Levin <ldv@altlinux.org> + + ci: do not install libxcrypt-dev. + Apparently, both -lcrypt and -lxcrypt from ubuntu-18.04 already provide + crypt_r. + + * ci/install-dependencies.sh (packages): Remove libxcrypt-dev. + +2020-11-24 Thomas M. DuBuisson <tommd@muse.dev> + + pam_unix: fix memory leak on error path. + * modules/pam_unix/bigcrypt.c (bigcrypt) [HAVE_CRYPT_R]: Do not leak + cdata if crypt_r() fails. + +2020-11-24 Dmitry V. Levin <ldv@altlinux.org> + + maint: update release procedure. + * maint/README-release: Update. + +2020-11-24 Dmitry V. Levin <ldv@altlinux.org> + + po: update .po and .pot files. + Regenerate po/Linux-PAM.pot and po/*.po using "make -C po update-po" + command. This removes translations of pam_cracklib, pam_tally, and + pam_tally2 modules that were removed in v1.5.0. + + Complements: v1.5.0~10 "Remove deprecated pam_cracklib module" + Complements: v1.5.0~9 "Remove deprecated pam_tally and pam_tally2 modules" + +2020-11-24 Dmitry V. Levin <ldv@altlinux.org> + + po: cleanup POTFILES.in. + * po/POTFILES.in: Strip "./" prefix, sort the list. + +2020-11-24 Jan Kuparinen <copper_fin@hotmail.com> + Jan Kuparinen <copper_fin@hotmail.com> + + po: update translations using Weblate (Finnish) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/fi/ + +2020-11-24 Dmitry V. Levin <ldv@altlinux.org> + + Prepare for 1.5.1 release. + * configure.ac (AC_INIT): Raise version to 1.5.1. + + Fix various typos found using codespell tool. + * modules/pam_limits/limits.conf: Replace "overriden" with "overridden". + * modules/pam_mkhomedir/mkhomedir_helper.c (create_homedir): Replace + "preseves" with "preserves". + * modules/pam_setquota/pam_setquota.8.xml: Replace "specifed" with + "specified". + * modules/pam_setquota/pam_setquota.c (pam_sm_open_session): Replace + "fileystem" with "filesystem", "conditons" with "conditions". + + Fix grammar: replace "an user" with "a user" everywhere. + * NEWS: Replace "an user" with "a user". + * modules/pam_faillock/pam_faillock.8.xml: Likewise. + * modules/pam_lastlog/pam_lastlog.8.xml: Likewise. + * modules/pam_limits/pam_limits.c: Likewise. + * modules/pam_sepermit/sepermit.conf: Likewise. + * modules/pam_tty_audit/pam_tty_audit.8.xml: Likewise. + * modules/pam_userdb/pam_userdb.c: Likewise. + +2020-11-24 Tomas Mraz <tmraz@fedoraproject.org> + + pam_wheel: Use pam_modutil_user_in_group_uid_gid instead of reimplementation + The pam_modutil_user_in_group... functions use getgrouplist to check + the membership so they work also in setups with remote services which do + not provide group members in struct group. + + Fixes #297 + + * modules/pam_wheel/pam_wheel.c (perform_check): Call pam_modutil_user_in_group_uid_gid + to do the group check. + +2020-11-24 Tomas Mraz <tmraz@fedoraproject.org> + + Add NEWS entries for the 1.5.1 security fix release. + +2020-11-20 Tomas Mraz <tmraz@fedoraproject.org> + + Second blank check with root for non-existent users must never return 1. + The commit af0faf66 ("pam_unix: avoid determining if user exists") introduced + a regression where the blank check could return 1 if root had an empty + password hash because in the second case the password hash of root was + used. We now always return 0 in this case. + + The issue was found by Johannes Löthberg. + + Fixes #284 + + * modules/pam_unix/support.c (_unix_blankpasswd): Make the loop + to cover the complete blank check so both existing and non existing + cases are identical except for the possible return value. + +2020-11-12 Tavian Barnes <tavianator@tavianator.com> + + faillock: Add a nodelay option. + Fixes #295 + +2020-11-10 Allison Karlitskaya <allison.karlitskaya@redhat.com> + + libpam: add supplementary groups on priv drop. + Replace the setgroups(0, NULL) call in pam_modutil_drop_priv() with a + call to initgroups(). This makes sure that the user's supplementary + groups are also configured. Fall back to setgroups(0, NULL) in case the + initgroups() call fails. + + This fixes the permission check in pam_motd: this feature was intended + to allow setting permissions on a motd file to prevent it from being + shown to users who are not a member of a particular group (for example, + wheel). + + Closes #292 + +2020-11-05 Tomas Mraz <tmraz@fedoraproject.org> + + pam_env: deprecation notice of reading the user environment. + * modules/pam_env/pam_env.8.xml: Add the notice to the manual. + * modules/pam_env/pam_env.c (_pam_parse): Log deprecation warning + if user_readenv is set. + +2020-11-04 Andreas Schneider <asn@cryptomilk.org> + + libpam: Fix memory leak on error path in _pam_start_internal() + +2020-11-04 Andreas Schneider <asn@cryptomilk.org> + + libpam: Fix memory leak with pam_start_confdir() + Found with AddressSanitzer in pam_wrapper tests. + + ==985738== 44 bytes in 4 blocks are definitely lost in loss record 18 of 18 + ==985738== at 0x4839809: malloc (vg_replace_malloc.c:307) + ==985738== by 0x48957E1: _pam_strdup (pam_misc.c:129) + ==985738== by 0x489851B: _pam_start_internal (pam_start.c:85) + ==985738== by 0x4849C8C: libpam_pam_start_confdir (pam_wrapper.c:418) + ==985738== by 0x484AF94: pwrap_pam_start (pam_wrapper.c:1461) + ==985738== by 0x484AFEE: pam_start (pam_wrapper.c:1483) + ==985738== by 0x401723: setup_noconv (test_pam_wrapper.c:189) + ==985738== by 0x4889E82: ??? (in /usr/lib64/libcmocka.so.0.7.0) + ==985738== by 0x488A444: _cmocka_run_group_tests (in /usr/lib64/libcmocka.so.0.7.0) + ==985738== by 0x403EE5: main (test_pam_wrapper.c:1059) + +2020-11-04 Tomas Mraz <tmraz@fedoraproject.org> + + pam_env: allow environment files without EOL at EOF. + Fixes #263 + + * modules/pam_env/pam_env.c (_assemble_line): Do not error out if at feof() + +2020-11-03 Dmitry V. Levin <ldv@altlinux.org> + + Prepare for 1.5.0 release. + * configure.ac (AC_INIT): Raise version to 1.5.0. + * NEWS: Update. + +2020-11-03 ikerexxe <ipedrosa@redhat.com> + + pam_ftp: fix potential memory leak. + modules/pam_ftp/pam_ftp.c: free anon_user before returning as it may be + still in use. + + pam_faillock: fix unread store statement. + modules/pam_faillock/main.c: remove store statement since the value is + only read in the enclosing expression. + + pam_dispatch: fix unread store statement. + libpam/pam_dispatch: remove store statement since the value is never + read. + +2020-10-29 Dmitry V. Levin <ldv@altlinux.org> + + Remove deprecated pam_tally and pam_tally2 modules. + * ci/run-build-and-tests.sh (DISTCHECK_CONFIGURE_FLAGS): Remove + --enable-tally --enable-tally2. + * configure.ac: Remove --enable-tally and --enable-tally2 options. + (AM_CONDITIONAL): Remove COND_BUILD_PAM_TALLY and COND_BUILD_PAM_TALLY2. + (AC_CONFIG_FILES): Remove modules/pam_tally/Makefile and + modules/pam_tally2/Makefile. + * doc/sag/pam_tally.xml: Remove. + * doc/sag/pam_tally2.xml: Likewise. + * doc/sag/Linux-PAM_SAG.xml: Do not include pam_tally.xml and + pam_tally2.xml. + * modules/Makefile.am (MAYBE_PAM_TALLY, MAYBE_PAM_TALLY2): Remove. + (SUBDIRS): Remove MAYBE_PAM_TALLY and MAYBE_PAM_TALLY2. + * modules/pam_tally/.gitignore: Remove. + * modules/pam_tally/Makefile.am: Likewise. + * modules/pam_tally/README.xml: Likewise. + * modules/pam_tally/faillog.h: Likewise. + * modules/pam_tally/pam_tally.8.xml: Likewise. + * modules/pam_tally/pam_tally.c: Likewise. + * modules/pam_tally/pam_tally_app.c: Likewise. + * modules/pam_tally/tst-pam_tally: Likewise. + * modules/pam_tally2/.gitignore: Likewise. + * modules/pam_tally2/Makefile.am: Likewise. + * modules/pam_tally2/README.xml: Likewise. + * modules/pam_tally2/pam_tally2.8.xml: Likewise. + * modules/pam_tally2/pam_tally2.c: Likewise. + * modules/pam_tally2/pam_tally2_app.c: Likewise. + * modules/pam_tally2/tallylog.h: Likewise. + * modules/pam_tally2/tst-pam_tally2: Likewise. + * modules/pam_timestamp/pam_timestamp_check.8.xml: Fix typo by replacing + pam_tally with pam_timestamp. + * po/POTFILES.in: Remove ./modules/pam_tally/pam_tally_app.c, + ./modules/pam_tally/pam_tally.c, ./modules/pam_tally2/pam_tally2_app.c, + and ./modules/pam_tally2/pam_tally2.c. + * NEWS: Document this change. + + Remove deprecated pam_cracklib module. + * ci/install-dependencies.sh: Remove libcrack2-dev. + * ci/run-build-and-tests.sh (DISTCHECK_CONFIGURE_FLAGS): Remove + --enable-cracklib=check. + * conf/pam.conf: Remove references to pam_cracklib.so. + * configure.ac: Remove --enable-cracklib option. + (AC_SUBST): Remove LIBCRACK. + (AM_CONDITIONAL): Remove COND_BUILD_PAM_CRACKLIB. + (AC_CONFIG_FILES): Remove modules/pam_cracklib/Makefile. + * doc/sag/pam_cracklib.xml: Remove. + * doc/sag/Linux-PAM_SAG.xml: Do not include pam_cracklib.xml. + * modules/Makefile.am (MAYBE_PAM_CRACKLIB): Remove. + (SUBDIRS): Remove MAYBE_PAM_CRACKLIB. + * modules/pam_cracklib/Makefile.am: Remove. + * modules/pam_cracklib/README.xml: Likewise. + * modules/pam_cracklib/pam_cracklib.8.xml: Likewise. + * modules/pam_cracklib/pam_cracklib.c: Likewise. + * modules/pam_cracklib/tst-pam_cracklib: Likewise. + * xtests/tst-pam_cracklib1.c: Likewise. + * xtests/tst-pam_cracklib1.pamd: Likewise. + * xtests/tst-pam_cracklib2.c: Likewise. + * xtests/tst-pam_cracklib2.pamd: Likewise. + * modules/pam_pwhistory/pam_pwhistory.8.xml: Replace pam_cracklib + in examples with pam_passwdqc. + * modules/pam_unix/pam_unix.8.xml: Likewise. + * po/POTFILES.in: Remove ./modules/pam_cracklib/pam_cracklib.c. + * xtests/.gitignore: Remove tst-pam_cracklib1 and tst-pam_cracklib2. + * xtests/Makefile.am (EXTRA_DIST): Remove tst-pam_cracklib1.pamd + and tst-pam_cracklib2.pamd. + (XTESTS): Remove tst-pam_cracklib1 and tst-pam_cracklib2. + * NEWS: Document this change. + +2020-10-27 DDoSolitary <DDoSolitary@gmail.com> + + pam_env: fix a typo in doc of pam_env.conf. + +2020-10-25 Christian Göttsche <cgzones@googlemail.com> + + Add missing format function attributes and enable -Wmissing-format-attribute + Exported functions already have these attributes, add them to other functions. + This enables compilers to find format specifier mismatches, like: + + foo_print("Hello %d", "world") + + * m4/warn_lang_flags.m4 (gl_WARN_ADD): Add -Wmissing-format-attribute. + * conf/pam_conv1/Makefile.am (AM_CFLAGS): Add -I$(top_srcdir)/libpam/include. + * conf/pam_conv1/pam_conv_y.y: Include <security/_pam_types.h>. + (yyerror): Add printf format attribute. + * modules/pam_pwhistory/opasswd.c (helper_log_err): Likewise. + * modules/pam_rootok/pam_rootok.c (log_callback): Likewise. + * modules/pam_tally/pam_tally.c (tally_log): Likewise. + * modules/pam_tally2/pam_tally2.c (tally_log): Likewise. + * modules/pam_unix/passverify.c (helper_log_err): Likewise. + +2020-10-21 Milo Casagrande <milo@milo.name> + Milo Casagrande <milo@milo.name> + + po: update translations using Weblate (Italian) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/it/ + +2020-10-21 Yaron Shahrabani <sh.yaron@gmail.com> + Yaron Shahrabani <sh.yaron@gmail.com> + + po: update translations using Weblate (Hebrew) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + +2020-10-21 ikerexxe <ipedrosa@redhat.com> + + pam_motd: unset prompt value to drop privileges. + modules/pam_motd/pam_motd.c: set NULL value instead of "key user" for the + prompt when dropping privileges. + +2020-10-20 Tomas Mraz <tmraz@fedoraproject.org> + + pam_modutil_sanitize_fds: Add explicit casts to avoid warnings. + + Revert "libpam/pam_modutil_sanitize.c: optimize the way to close fds" + This reverts commit 1b087edc7f05237bf5eccc405704cd82b848e761. + +2020-10-14 ikerexxe <ipedrosa@redhat.com> + + pam_motd: document file filtering. + modules/pam_motd/pam_motd.8.xml: document file filtering of motd + messages. + NEWS: annotate change. + +2020-10-14 ikerexxe <ipedrosa@redhat.com> + + pam_motd: filter motd by user and group. + modules/pam_motd/pam_motd.c: filter motd by user and group owning the + proper files. This is achieved by changing the ids of the process + reading the files from root to the target user. + + Resolves: + https://bugzilla.redhat.com/show_bug.cgi?id=1861640 + +2020-10-13 Mikhail Labiuk <m.labyuk@omprussia.ru> + + pam_faillock: fix invalid error message. + args_parse function pass "conf=" argument to set_conf_opt() after handling by self. + set_conf_opt is not able to handle "conf" argument and write error: + sddm-helper[415]: pam_faillock(sddm:auth): Unknown option: conf + +2020-10-05 ikerexxe <ipedrosa@redhat.com> + + pam_namespace: polyinstantiation refer to gdm doc. + modules/pam_namespace/pam_namespace.8.xml: delete obsolete information + about polyinstantiation and refer to gdm's documentation. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1861841 + +2020-09-30 Anton D. Kachalov <rnouse@google.com> + + Prevent SEGFAULT for unknown UID. + When running systemd service with DynamicUser being set, the dynamic UID + might be not mapped to user name (/etc/nsswitch.conf is not configured + with systemd nss module). + + The getuidname() routine might return NULL and this is not checked by callee. + +2020-09-10 ikerexxe <ipedrosa@redhat.com> + + pam_wheel: clarify use_uid option in man page. + modules/pam_wheel/pam_wheel.8.xml: indicate that use_uid option uses the + real uid of the calling process. + +2020-09-10 ikerexxe <ipedrosa@redhat.com> + + pam_wheel: if getlogin fails fallback to PAM_RUSER. + modules/pam_wheel/pam_wheel.c: if getlogin fails to obtain the real user + ID, then try with PAM_RUSER. + + Resolves: + https://bugzilla.redhat.com/show_bug.cgi?id=1866866 + +2020-09-10 ikerexxe <ipedrosa@redhat.com> + + pam_wheel: improve coding style. + modules/pam_wheel/pam_wheel.c: improve indentation and explicitly state + condition statements + +2020-08-08 Dmitry V. Levin <ldv@altlinux.org> + + configure: add --disable-unix option. + Some distributions do not build pam_unix, e.g. ALT uses pam_tcb instead. + Add a configure option to disable build of pam_unix so that those who + choose not to build pam_unix no longer have to edit modules/Makefile.am + file. The default is unchanged, i.e. build of pam_unix is enabled. + + * configure.ac (AC_ARG_ENABLE): Add unix. + (AM_CONDITIONAL): Add COND_BUILD_PAM_UNIX. + * modules/Makefile.am [COND_BUILD_PAM_UNIX] (MAYBE_PAM_UNIX): Define. + (SUBDIRS): Replace pam_unix with $(COND_BUILD_PAM_UNIX). + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + Build all installed executables with -Wl,-z,now if available. + This makes them built with full RELRO if -Wl,-z,relro is specified. + + * m4/ld-z-now.m4: New file. + * m4/.gitignore: Add it to exclude list. + * configure.ac: Call PAM_LD_Z_NOW. + (EXE_LDFLAGS): Append $ZNOW_LDFLAGS. + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + modules: build all helpers with proper CFLAGS and LDFLAGS. + This makes all installed executables built with @EXE_CFLAGS@ and + @EXE_LDFLAGS@. + + * modules/pam_mkhomedir/Makefile.am (mkhomedir_helper_CFLAGS, + mkhomedir_helper_LDFLAGS): New variables. + * modules/pam_tally/Makefile.am (pam_tally_CFLAGS, pam_tally_LDFLAGS): + Likewise. + * modules/pam_tally2/Makefile.am (pam_tally2_CFLAGS, + pam_tally2_LDFLAGS): Likewise. + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + build: rename PIE_* AC_SUBST variables to EXE_* + There are going to be other options added to CFLAGS and LDFLAGS + of executables made along with modules. + + * configure.ac (EXE_CFLAGS, EXE_LDFLAGS): New variables initialized from + PIE_CFLAGS and PIE_LDFLAGS, respectively. AC_SUBST them instead of + PIE_CFLAGS and PIE_LDFLAGS. All users updated. + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + m4: make libprelude-config diagnostics less noisy. + Before this change, every normal build of Linux-PAM used to contain + the following diagnostics: + + checking for libprelude-config... no + checking for libprelude - version >= 0.9.0... no + *** The libprelude-config script installed by LIBPRELUDE could not be found + *** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in + *** your path, or set the LIBPRELUDE_CONFIG environment variable to the + *** full path to libprelude-config. + + Given that libprelude-config is rarely used nowadays, + the first two lines of diagnostics should be enough. + + * m4/libprelude.m4 (AM_PATH_LIBPRELUDE): When libprelude-config + is not found, do not print the lengthy diagnostics unless + --with-libprelude-prefix was specified. + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + configure.ac: rewrite --disable-pie and -fpie/pie check. + * configure.ac: Rewrite -fpie/pie check using AC_LINK_IFELSE to make + the code more readable. Add --enable-pie=check support and make it + the default, terminate if --enable-pie is specified but -fpie/pie + support is not available. + + m4: rewrite ld --no-undefined check. + * m4/ld-no-undefined.m4: Rewrite using AC_LINK_IFELSE to create a more readable + autoconf macro. + + m4: rewrite ld --as-needed check. + * m4/ld-as-needed.m4: Rewrite using AC_LINK_IFELSE to create a more readable + autoconf macro. + + m4: rewrite ld -O1 check. + * m4/ld-O1.m4: Rewrite using AC_LINK_IFELSE to create a more readable + autoconf macro. + +2020-08-07 Dmitry V. Levin <ldv@altlinux.org> + + m4: rewrite __attribute__((unused)) check. + Rewrite using AC_CACHE_CHECK to create a more readable autoconf macro. + + * m4/attribute.m4: New file. + * m4/japhar_grep_cflags.m4: Remove. + * m4/.gitignore: Replace japhar_grep_cflags.m4 with attribute.m4. + * configure.ac: Replace AC_C___ATTRIBUTE__ with PAM_ATTRIBUTE_UNUSED. + +2020-08-06 Dmitry V. Levin <ldv@altlinux.org> + + build: add -Wcast-align=strict to WARN_CFLAGS. + This way -Wcast-align will be tested regardless of the target machine. + + * m4/warn_lang_flags.m4: Add gl_WARN_ADD([-Wcast-align=strict]). + +2020-08-06 Dmitry V. Levin <ldv@altlinux.org> + + configure.ac: rewrite WARN_CFLAGS initialization. + As the old machinery was not prepared for adding compiler options + conditionally when the compiler supports them, replace it with + a new machinery that implements this. + + * m4/warnings.m4: New file. + * m4/warn_lang_flags.m4: Likewise. + * m4/.gitignore: Add exclusions for them. + * m4/japhar_grep_cflags.m4 (JAPHAR_GREP_CFLAGS): Remove. + * configure.ac: Call pam_WARN_LANG_FLAGS. Remove all uses + of JAPHAR_GREP_CFLAGS. + +2020-08-06 Dmitry V. Levin <ldv@altlinux.org> + + Fix -Wcast-align compilation warnings on arm. + Apparently, gcc is also not smart enough to infer the alignment + of structure fields, for details see + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89133 + + Use unions to avoid these casts altogether, this fixes compilation + warnings reported by gcc on arm, e.g.: + + md5.c: In function 'MD5Update': + md5.c:92:35: error: cast increases required alignment of target type [-Werror=cast-align] + 92 | MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); + | ^ + md5.c:101:35: error: cast increases required alignment of target type [-Werror=cast-align] + 101 | MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); + | ^ + md5.c: In function 'MD5Final': + md5.c:136:35: error: cast increases required alignment of target type [-Werror=cast-align] + 136 | MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); + | ^ + md5.c:147:9: error: cast increases required alignment of target type [-Werror=cast-align] + 147 | memcpy((uint32 *)ctx->in + 14, ctx->bits, 2*sizeof(uint32)); + | ^ + md5.c:149:34: error: cast increases required alignment of target type [-Werror=cast-align] + 149 | MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); + | ^ + + * modules/pam_namespace/md5.h (struct MD5Context): Replace "buf" and + "in" fields with unions. All users updated. + * modules/pam_unix/md5.h (struct MD5Context): Likewise. + * modules/pam_timestamp/sha1.h (struct sha1_context.pending): Replace + with a union. All users updated. + + Complements: v1.4.0~195 ("Fix most of clang -Wcast-align compilation warnings") + +2020-08-05 Dmitry V. Levin <ldv@altlinux.org> + + pam_namespace: fix big-endian check in md5 implementation. + * modules/pam_namespace/md5.c: Do not check against the list of + architectures that are known to be little-endian, instead check + for WORDS_BIGENDIAN macro defined by AC_C_BIGENDIAN autoconf macro + on big-endian platforms. + +2020-08-05 Christian Göttsche <cgzones@googlemail.com> + + pam_namespace: skip context translation. + These retrieved contexts are just passed to libselinux functions and not + printed or otherwise made available to the outside, so a context + translation to human readable MCS/MLS labels is not needed. + (see man:setrans.conf(5)) + + pam_xauth: skip context translation. + The retrieved context is just passed to libselinux functions and not + printed or otherwise made available to the outside, so a context + translation to human readable MCS/MLS labels is not needed. + (see man:setrans.conf(5)) + + pam_xauth: replace deprecated security_context_t. + libselinux 3.1 deprecated the typedef security_context_t. + Use the underlaying type. + + pam_unix: skip context translation. + These retrieved contexts are just passed to libselinux functions and not + printed or otherwise made available to the outside, so a context + translation to human readable MCS/MLS labels is not needed. + (see man:setrans.conf(5)) + + pam_unix: replace deprecated security_context_t. + libselinux 3.1 deprecated the typedef security_context_t. + Use the underlaying type. + + pam_rootok: skip context translation. + The retrieved context is just passed to the libselinux function + 'selinux_check_access()', so a context translation to human readable + MCS/MLS labels is not needed. (see man:setrans.conf(5)) + + pam_rootok: replace deprecated security_context_t. + libselinux 3.1 deprecated the typedef security_context_t. + Use the underlaying type. + + pam_namespace: replace deprecated matchpathcon. + The matchpathcon family is deprecated. + Use the selabel family. + + pam_namespace: replace deprecated security_context_t. + libselinux 3.1 deprecated the typedef security_context_t. + Use the underlaying type. + +2020-08-03 Christian Göttsche <cgzones@googlemail.com> + + autotools: enable warnings. + +2020-08-03 Christian Göttsche <cgzones@googlemail.com> + + autotools: update deprecated macros. + see https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Obsolete-Macros.html + + - update AC_HELP_STRING to AS_HELP_STRING + - update AC_TRY_COMPILE to AC_COMPILE_IFELSE + - update AC_TRY_RUN to AC_RUN_IFELSE + - update AC_TRY_LINK to AC_LINK_IFELSE + +2020-08-03 Issam Maghni <concatime@users.noreply.github.com> + + configure.ac: fix typo in --with-kernel-overflow-uid= option to match its documentation + +2020-07-22 Tomas Mraz <tmraz@fedoraproject.org> + + pam_unix: Add comment for the ignored PAM_AUTHTOK_ERR case. + * modules/pam_unix/pam_unix_acct.c (pam_sm_acct_mgmt): Add comment + about the reason for ignoring PAM_AUTHTOK_ERR. + +2020-07-22 Tomas Mraz <tmraz@fedoraproject.org> + + Fix missing initialization of daysleft. + The daysleft otherwise stays uninitialized if there is no shadow entry. + + Regression from commit f5adefa. + + Fixes #255 + + * modules/pam_unix/pam_unix_acct.c (pam_sm_acct_mgmt): Initialize daysleft. + +2020-07-20 Charles Lee <lchopn@gmail.com> + + po: update translations using Weblate (Chinese (Simplified)) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/zh_CN/ + +2020-07-20 ikerexxe <ipedrosa@redhat.com> + + pam_pwhistory: add helper to handle SELinux. + The purpose of the helper is to enable tighter confinement of login and + password changing services. The helper is thus called only when SELinux + is enabled on the system. + + Resolves: https://github.com/linux-pam/linux-pam/pull/247 + +2020-07-19 A S Alam <amanpreet.alam@gmail.com> + + po: update translations using Weblate (Punjabi) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pa/ + +2020-07-15 Dmitry V. Levin <ldv@altlinux.org> + + pam_inline.h: cleanup pam_read_passwords a bit. + * libpam/include/pam_inline.h (pam_read_passwords): Increment pptr once + instead of using pptr+1 several times. This change is not expected + to affect the code generated by the compiler as the latter is likely + to perform the optimization itself. + +2020-07-15 ikerexxe <ipedrosa@redhat.com> + + Move read_passwords function from pam_unix to pam_inline.h. + [ldv: rewrote commit message] + + * modules/pam_unix/passverify.h (read_passwords): Remove prototype. + * modules/pam_unix/passverify.c (read_passwords): Move ... + * libpam/include/pam_inline.h: ... here, rename to pam_read_passwords, + add static inline qualifiers. + Include <unistd.h> and <errno.h>. + * modules/pam_unix/unix_chkpwd.c: Include "pam_inline.h". + (main): Replace read_passwords with pam_read_passwords. + * modules/pam_unix/unix_update.c: Include "pam_inline.h". + (set_password): Replace read_passwords with pam_read_passwords. + +2020-07-15 Dmitry V. Levin <ldv@altlinux.org> + + pam_unix: use PAM_MAX_RESP_SIZE instead of its alias MAXPASS. + * modules/pam_unix/passverify.h (MAXPASS): Remove. + * modules/pam_unix/passverify.c (read_passwords): Replace MAXPASS + with PAM_MAX_RESP_SIZE. + * modules/pam_unix/pam_unix_passwd.c (_pam_unix_approve_pass): Likewise. + * modules/pam_unix/support.c (_unix_verify_password): Likewise. + * modules/pam_unix/unix_chkpwd.c (main): Likewise. + * modules/pam_unix/unix_update.c (set_password): Likewise. + +2020-07-09 Lucas Ramage <ramage.lucas@protonmail.com> + + pam_stress: create man page. + Resolves: https://github.com/linux-pam/linux-pam/issues/148 + + * modules/pam_stress/README: Remove. + * modules/pam_stress/README.xml: New file. + * modules/pam_stress/pam_stress.8.xml: Likewise. + * modules/pam_stress/Makefile.am (MAINTAINERCLEANFILES): Add + $(MANS) and README. + (EXTRA_DIST): Add $(XMLS). + (XMLS): Add README.xml and pam_stress.8.xml. + [HAVE_DOC] (dist_man_MANS): Add pam_stress.8. + [ENABLE_REGENERATE_MAN] (dist_noinst_DATA): Add README. + [ENABLE_REGENERATE_MAN]: Include $(top_srcdir)/Make.xml.rules. + * modules/pam_stress/.gitignore: Remove. + + Resolves: https://github.com/linux-pam/linux-pam/pull/184 + +2020-07-05 Dmitry V. Levin <ldv@altlinux.org> + + po: update translations using Weblate (Slovak) + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/sk/ + + po: update translations using Weblate (Portuguese (Brazil)) + + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/pt_BR/ + + po: update translations using Weblate (Dutch) + + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/nl/ + + po: update translations using Weblate (Italian) + + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/it/ + + po: update translations using Weblate (German) + + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/de/ + + po: update translations using Weblate (Catalan) + + Currently translated at 100.0% (122 of 122 strings). + + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ca/ + +2020-07-05 Yaron Shahrabani <sh.yaron@gmail.com> + + Translated using Weblate (Hebrew) + Currently translated at 75.4% (92 of 122 strings) + + Translation: linux-pam/master + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + + Translated using Weblate (Arabic) + + Currently translated at 61.4% (75 of 122 strings) + + Translation: linux-pam/master + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/ar/ + +2020-07-02 Dmitry V. Levin <ldv@altlinux.org> + + misc_conv: fix potential information leak on error path. + * libpam_misc/misc_conv.c (read_string): Clear the stack buffer from + data read earlier from stdin in case of a read error. + +2020-07-01 ikerexxe <ipedrosa@redhat.com> + + pam_loginuid: fix unlikely negative 3rd argument of strncmp on error path + [ldv: rewrote commit message] + + * modules/pam_loginuid/pam_loginuid.c (set_loginuid): Do not pass to + strncmp the return value of pam_modutil_read in an unlikely case when + the latter fails to read from /proc/self/uid_map. + +2020-07-01 ikerexxe <ipedrosa@redhat.com> + + pam_namespace, pam_mkhomedir: fix unlikely descriptor leaks on error path + [ldv: rewrote commit message] + + * modules/pam_mkhomedir/mkhomedir_helper.c (create_homedir): Close just + opened file descriptor "srcfd" in an unlikely case when it cannot be + fstat'ed. + * modules/pam_namespace/pam_namespace.c (create_instance): Close just + opened file descriptor "fd" in an unlikely case when it cannot be + fstat'ed. + +2020-07-01 ikerexxe <ipedrosa@redhat.com> + + pam_rootok: fix use of va_list. + CPPCHECK_WARNING (CWE-843): + error[va_end_missing]: va_list 'ap' was opened but not closed by + va_end(). + + [ldv: According to POSIX documentation, each invocation of va_start() + must be matched by a corresponding invocation of va_end(). + + According to the GNU libc documentation, "with most C compilers, + calling 'va_end' does nothing. This is always true in the GNU C + compiler. But you might as well call 'va_end' just in case your + program is someday compiled with a peculiar compiler." + + The main reason for applying this change is to pacify static analysis + tools like cppcheck that insist on strict POSIX conformance in this + respect.] + +2020-07-01 ikerexxe <ipedrosa@redhat.com> + + misc_conv: fix potential stack buffer overflow. + [ldv: rewrote commit message] + + * libpam_misc/misc_conv.c (read_string): Use _pam_overwrite_n instead + of _pam_overwrite to clear stack buffer "line" because the latter does + not have to be null-terminated. + +2020-07-01 Yaron Shahrabani <sh.yaron@gmail.com> + + Translated using Weblate (Hebrew) + Currently translated at 60.6% (74 of 122 strings) + + Translation: linux-pam/master + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + +2020-06-30 Dmitry V. Levin <ldv@altlinux.org> + + misc_conv: remove redundant check. + * libpam_misc/misc_conv.c (read_string): Remove redundant nc > 0 + check as it has already been tested in the previous condition. + +2020-06-29 ikerexxe <ipedrosa@redhat.com> + + pam_limits: clarify configuration file. + Resolves: https://github.com/linux-pam/linux-pam/pull/249 + +2020-06-26 Dmitry V. Levin <ldv@altlinux.org> + + .gitignore: move doc-specific entries to doc/.gitignore. + + .gitignore: move module-specific entries to modules/.gitignore. + +2020-06-26 ikerexxe <ipedrosa@redhat.com> + + pam_namespace: add systemd service file to gitignore. + * modules/pam_namespace/.gitignore: Add pam_namespace.service. + + Complements: v1.4.0~247 ("pam_namespace: secure tmp-inst directories") + +2020-06-26 ikerexxe <ipedrosa@redhat.com> + + pam_faillock: add faillock executable to gitignore. + * modules/pam_faillock/.gitignore: Add faillock. + + Complements: v1.4.0~76 ("pam_faillock: New module for locking after multiple auth failures") + +2020-06-25 ikerexxe <ipedrosa@redhat.com> + + pam_env: clarify user_readenv option. + +2020-06-24 Baurzhan Muftakhidinov <baurthefirst@gmail.com> + + Translated using Weblate (Kazakh) + Currently translated at 100.0% (122 of 122 strings) + + Translation: linux-pam/master + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/kk/ + +2020-06-24 Yaron Shahrabani <sh.yaron@gmail.com> + + Translated using Weblate (Hebrew) + Currently translated at 44.2% (54 of 122 strings) + + Translation: linux-pam/master + Translate-URL: https://translate.fedoraproject.org/projects/linux-pam/master/he/ + +2020-06-22 Vito Caputo <vcaputo@pengaru.com> + + modules/pam_limits: add support for nonewprivs. + Expose prctl(PR_SET_NO_NEW_PRIVS) as "nonewprivs" item. + + The valid values are a boolean toggle 0/1 to keep semi-consistent + with the other numeric limits. It's slightly awkward as this is + an oddball relative to the other items in pam_limits but outside + of the item value itself this does seem at home in pam_limits. + + Resolves: https://github.com/linux-pam/linux-pam/issues/224 + Resolves: https://github.com/linux-pam/linux-pam/pull/225 + +2020-06-17 ikerexxe <ipedrosa@redhat.com> + + pam_usertype: avoid determining if user exists. + Taking a look at the time for the password prompt to appear it was + possible to determine if a user existed in a system. Solved it by + matching the runtime until the password prompt was shown by always + checking the password hash for an existing and a non-existing user. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1629598 + +2020-06-17 ikerexxe <ipedrosa@redhat.com> + + pam_unix: avoid determining if user exists. + Taking a look at the time for the password prompt to appear it was + possible to determine if a user existed in a system. Solved it by + matching the runtime until the password prompt was shown by always + checking the password hash for an existing and a non-existing user. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1629598 + +2020-06-17 ikerexxe <ipedrosa@redhat.com> + + pam_faillock: change /run/faillock/$USER permissions to 0660. + Nowadays, /run/faillock/$USER files have user:root ownership and 0600 + permissions. This forces the process that writes to these files to have + CAP_DAC_OVERRIDE capabilites. Just by changing the permissions to 0660 + the capability can be removed, which leads to a more secure system. + + Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1661822 + +2020-06-16 Dmitry V. Levin <ldv@altlinux.org> + + pam_modutil_check_user_in_passwd: avoid timing attacks. + * libpam/pam_modutil_check_user.c (pam_modutil_check_user_in_passwd): Do + not exit the file reading loop when the user is found, continue reading + the file to avoid timing attacks. + +2020-06-15 Fabrice Fontaine <fontaine.fabrice@gmail.com> + + pam_faillock: fix build on musl. + Use pam_modutil_check_user_in_passwd in pam_faillock.c instead of + fgetpwent_r which is not available on musl. + + Resolves: https://github.com/linux-pam/linux-pam/issues/236 + Resolves: https://github.com/linux-pam/linux-pam/pull/237 + Fixes: http://autobuild.buildroot.org/results/0432736ffee376dd84757469434a4bbcfdcdaf4b + +2020-06-15 Fabrice Fontaine <fontaine.fabrice@gmail.com> + Dmitry V. Levin <ldv@altlinux.org> + + Move check_user_in_passwd from pam_localuser.c to pam_modutil. + + * modules/pam_localuser/pam_localuser.c: Include + <security/pam_modutil.h>. + (pam_sm_authenticate): Replace check_user_in_passwd with + pam_modutil_check_user_in_passwd. + (check_user_in_passwd): Rename to pam_modutil_check_user_in_passwd, + move to ... + * libpam/pam_modutil_check_user.c: ... new file. + * libpam/Makefile.am (libpam_la_SOURCES): Add pam_modutil_check_user.c. + * libpam/include/security/pam_modutil.h + (pam_modutil_check_user_in_passwd): New function declaration. + * libpam/libpam.map (LIBPAM_MODUTIL_1.4.1): New interface. + +2020-06-15 Dmitry V. Levin <ldv@altlinux.org> + + configure.ac: fix non-portable use of test builtin. + Portable code should not assume that test builtin supports == operator. + + * configure.ac (opt_uidmin, opt_sysuidmin, opt_kerneloverflowuid): Fix + initialization. + + Resolves: https://github.com/linux-pam/linux-pam/issues/241 + Fixes: 926d7935e ("pam_usertype: new module to tell if uid is in login.defs ranges") + +2020-06-11 Fabrice Fontaine <fontaine.fabrice@gmail.com> + + configure.ac: fix build failure when crypt() does not require libcrypt. + Since commit 522246d20e4cd92fadc2d760228cb7e78cbeb4c5, the build fails + if "none required" is returned by AC_SEARCH_LIBS for libcrypt. + + Resolves: https://github.com/linux-pam/linux-pam/pull/235 + Fixes: http://autobuild.buildroot.org/results/92b3dd7c984d2b843ac9aacacd69eec99f28743e + Fixes: v1.4.0~228 ("Use cached 'crypt' library result correctly") + +2020-06-04 Dmitry V. Levin <ldv@altlinux.org> + + build: do not generate tarballs compressed with bzip2 and gzip. + There are tarballs compressed with xz, that should be enough. + + * Makefile.am (AUTOMAKE_OPTIONS): Remove dist-bzip2, add no-dist-gzip. + (releasedocs): Do not create Linux-PAM-$(VERSION)-docs.tar.bz2 + and Linux-PAM-$(VERSION)-docs.tar.gz. + 2020-06-04 Dmitry V. Levin <ldv@altlinux.org> maint: document release procedure. |