summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1547
-rw-r--r--Make.xml.rules.in2
-rw-r--r--Makefile.am6
-rw-r--r--Makefile.in58
-rw-r--r--NEWS40
-rw-r--r--aclocal.m462
-rwxr-xr-xbuild-aux/compile6
-rwxr-xr-xbuild-aux/config.guess1411
-rwxr-xr-xbuild-aux/config.sub685
-rwxr-xr-xbuild-aux/depcomp2
-rwxr-xr-xbuild-aux/install-sh161
-rw-r--r--build-aux/ltmain.sh4
-rwxr-xr-xbuild-aux/missing2
-rwxr-xr-xbuild-aux/test-driver10
-rwxr-xr-xbuild-aux/ylwrap2
-rw-r--r--conf/Makefile.in31
-rw-r--r--conf/pam.conf5
-rw-r--r--conf/pam_conv1/Makefile.am2
-rw-r--r--conf/pam_conv1/Makefile.in38
-rw-r--r--conf/pam_conv1/pam_conv_y.c977
-rw-r--r--conf/pam_conv1/pam_conv_y.h37
-rw-r--r--conf/pam_conv1/pam_conv_y.y3
-rw-r--r--config.h.in26
-rwxr-xr-xconfigure2938
-rw-r--r--configure.ac269
-rw-r--r--debian/changelog35
-rw-r--r--debian/compat1
-rw-r--r--debian/control14
-rw-r--r--debian/libpam-cracklib.install2
-rw-r--r--debian/libpam-cracklib.manpages1
-rw-r--r--debian/libpam-cracklib.postinst9
-rw-r--r--debian/libpam-cracklib.prerm9
-rw-r--r--debian/libpam-modules-bin.install2
-rw-r--r--debian/libpam-modules-bin.lintian-overrides2
-rw-r--r--debian/libpam-modules-bin.manpages3
-rw-r--r--debian/libpam-modules.lintian-overrides17
-rw-r--r--debian/libpam-runtime.lintian-overrides10
-rw-r--r--debian/libpam0g-dev.install.in1
-rw-r--r--debian/libpam0g.lintian-overrides2
-rw-r--r--debian/libpam0g.symbols3
-rw-r--r--debian/not-installed8
-rw-r--r--debian/pam-configs/cracklib9
-rw-r--r--debian/patches-applied/008_modules_pam_limits_chroot40
-rw-r--r--debian/patches-applied/022_pam_unix_group_time_miscfixes2
-rw-r--r--debian/patches-applied/026_pam_unix_passwd_unknown_user8
-rw-r--r--debian/patches-applied/027_pam_limits_better_init_allow_explicit_root28
-rw-r--r--debian/patches-applied/031_pam_include6
-rw-r--r--debian/patches-applied/032_pam_limits_EPERM_NOT_FATAL2
-rw-r--r--debian/patches-applied/036_pam_wheel_getlogin_considered_harmful74
-rw-r--r--debian/patches-applied/040_pam_limits_log_failure2
-rw-r--r--debian/patches-applied/PAM-manpage-section118
-rw-r--r--debian/patches-applied/make_documentation_reproducible.patch2
-rw-r--r--debian/patches-applied/pam-limits-nofile-fd-setsize-cap2
-rw-r--r--debian/patches-applied/pam_env-allow-environment-files-without-EOL-at-EOF.patch30
-rw-r--r--debian/patches-applied/pam_faillock_create_directory31
-rw-r--r--debian/patches-applied/pam_mkhomedir_stat_before_opendir4
-rw-r--r--debian/patches-applied/pam_unix_avoid_checksalt43
-rw-r--r--debian/patches-applied/pam_unix_dont_trust_chkpwd_caller.patch4
-rw-r--r--debian/patches-applied/pam_unix_fix_sgid_shadow_auth.patch25
-rw-r--r--debian/patches-applied/pam_unix_initialize_daysleft29
-rw-r--r--debian/patches-applied/series6
-rw-r--r--debian/patches-applied/update-motd12
-rw-r--r--debian/po/ro.po47
-rwxr-xr-xdebian/rules7
-rw-r--r--debian/source.lintian-overrides1
-rw-r--r--doc/Makefile.in31
-rw-r--r--doc/adg/Makefile.in31
-rw-r--r--doc/custom-man.xsl2
-rw-r--r--doc/man/Makefile.in31
-rw-r--r--doc/man/PAM.84
-rw-r--r--doc/man/misc_conv.34
-rw-r--r--doc/man/pam.34
-rw-r--r--doc/man/pam.conf-syntax.xml20
-rw-r--r--doc/man/pam.conf.521
-rw-r--r--doc/man/pam_acct_mgmt.34
-rw-r--r--doc/man/pam_authenticate.34
-rw-r--r--doc/man/pam_chauthtok.34
-rw-r--r--doc/man/pam_close_session.34
-rw-r--r--doc/man/pam_conv.34
-rw-r--r--doc/man/pam_end.36
-rw-r--r--doc/man/pam_end.3.xml2
-rw-r--r--doc/man/pam_error.34
-rw-r--r--doc/man/pam_fail_delay.34
-rw-r--r--doc/man/pam_get_authtok.34
-rw-r--r--doc/man/pam_get_data.34
-rw-r--r--doc/man/pam_get_item.34
-rw-r--r--doc/man/pam_get_user.34
-rw-r--r--doc/man/pam_getenv.34
-rw-r--r--doc/man/pam_getenvlist.34
-rw-r--r--doc/man/pam_info.34
-rw-r--r--doc/man/pam_misc_drop_env.34
-rw-r--r--doc/man/pam_misc_paste_env.34
-rw-r--r--doc/man/pam_misc_setenv.34
-rw-r--r--doc/man/pam_open_session.34
-rw-r--r--doc/man/pam_prompt.34
-rw-r--r--doc/man/pam_putenv.34
-rw-r--r--doc/man/pam_set_data.34
-rw-r--r--doc/man/pam_set_item.34
-rw-r--r--doc/man/pam_setcred.34
-rw-r--r--doc/man/pam_sm_acct_mgmt.34
-rw-r--r--doc/man/pam_sm_authenticate.34
-rw-r--r--doc/man/pam_sm_chauthtok.34
-rw-r--r--doc/man/pam_sm_close_session.34
-rw-r--r--doc/man/pam_sm_open_session.34
-rw-r--r--doc/man/pam_sm_setcred.34
-rw-r--r--doc/man/pam_start.34
-rw-r--r--doc/man/pam_strerror.34
-rw-r--r--doc/man/pam_syslog.34
-rw-r--r--doc/man/pam_xauth_data.34
-rw-r--r--doc/mwg/Makefile.in31
-rw-r--r--doc/sag/Linux-PAM_SAG.xml6
-rw-r--r--doc/sag/Makefile.in31
-rw-r--r--doc/sag/pam_cracklib.xml34
-rw-r--r--doc/sag/pam_tally.xml38
-rw-r--r--doc/sag/pam_tally2.xml46
-rw-r--r--doc/specs/Makefile.in36
-rw-r--r--doc/specs/parse_y.c1029
-rw-r--r--doc/specs/parse_y.h45
-rw-r--r--examples/Makefile.in31
-rw-r--r--libpam/Makefile.am5
-rw-r--r--libpam/Makefile.in100
-rw-r--r--libpam/include/pam_inline.h51
-rw-r--r--libpam/include/security/pam_modutil.h5
-rw-r--r--libpam/libpam.map5
-rw-r--r--libpam/pam.pc.in9
-rw-r--r--libpam/pam_dispatch.c1
-rw-r--r--libpam/pam_end.c3
-rw-r--r--libpam/pam_modutil_check_user.c92
-rw-r--r--libpam/pam_modutil_priv.c17
-rw-r--r--libpam/pam_modutil_sanitize.c73
-rw-r--r--libpam/pam_start.c3
-rw-r--r--libpam_misc/Makefile.am4
-rw-r--r--libpam_misc/Makefile.in82
-rw-r--r--libpam_misc/misc_conv.c14
-rw-r--r--libpam_misc/pam_misc.pc.in9
-rw-r--r--libpamc/Makefile.am4
-rw-r--r--libpamc/Makefile.in89
-rw-r--r--libpamc/pamc.pc.in9
-rw-r--r--libpamc/test/Makefile.in31
-rw-r--r--m4/attribute.m416
-rw-r--r--m4/japhar_grep_cflags.m447
-rw-r--r--m4/jh_path_xml_catalog.m44
-rw-r--r--m4/ld-O1.m437
-rw-r--r--m4/ld-as-needed.m437
-rw-r--r--m4/ld-no-undefined.m437
-rw-r--r--m4/ld-z-now.m416
-rw-r--r--m4/libprelude.m429
-rw-r--r--m4/warn_lang_flags.m433
-rw-r--r--m4/warnings.m485
-rw-r--r--modules/Makefile.am21
-rw-r--r--modules/Makefile.in58
-rw-r--r--modules/pam_access/Makefile.in34
-rw-r--r--modules/pam_access/access.conf.54
-rw-r--r--modules/pam_access/pam_access.84
-rw-r--r--modules/pam_access/pam_access.c44
-rw-r--r--modules/pam_cracklib/Makefile.am33
-rw-r--r--modules/pam_cracklib/Makefile.in1148
-rw-r--r--modules/pam_cracklib/README254
-rw-r--r--modules/pam_cracklib/README.xml41
-rw-r--r--modules/pam_cracklib/pam_cracklib.8363
-rw-r--r--modules/pam_cracklib/pam_cracklib.8.xml592
-rw-r--r--modules/pam_cracklib/pam_cracklib.c899
-rwxr-xr-xmodules/pam_cracklib/tst-pam_cracklib2
-rw-r--r--modules/pam_debug/Makefile.in34
-rw-r--r--modules/pam_debug/pam_debug.84
-rw-r--r--modules/pam_deny/Makefile.in34
-rw-r--r--modules/pam_deny/pam_deny.84
-rw-r--r--modules/pam_echo/Makefile.in34
-rw-r--r--modules/pam_echo/pam_echo.84
-rw-r--r--modules/pam_env/Makefile.in34
-rw-r--r--modules/pam_env/README9
-rw-r--r--modules/pam_env/pam_env.88
-rw-r--r--modules/pam_env/pam_env.8.xml10
-rw-r--r--modules/pam_env/pam_env.c5
-rw-r--r--modules/pam_env/pam_env.conf.58
-rw-r--r--modules/pam_env/pam_env.conf.5.xml4
-rw-r--r--modules/pam_exec/Makefile.in34
-rw-r--r--modules/pam_exec/README5
-rw-r--r--modules/pam_exec/pam_exec.811
-rw-r--r--modules/pam_exec/pam_exec.8.xml16
-rw-r--r--modules/pam_exec/pam_exec.c6
-rw-r--r--modules/pam_faildelay/Makefile.in34
-rw-r--r--modules/pam_faildelay/pam_faildelay.84
-rw-r--r--modules/pam_faillock/Makefile.am4
-rw-r--r--modules/pam_faillock/Makefile.in38
-rw-r--r--modules/pam_faillock/README2
-rw-r--r--modules/pam_faillock/faillock.84
-rw-r--r--modules/pam_faillock/faillock.c17
-rw-r--r--modules/pam_faillock/faillock.conf.59
-rw-r--r--modules/pam_faillock/faillock.conf.5.xml10
-rw-r--r--modules/pam_faillock/main.c7
-rw-r--r--modules/pam_faillock/pam_faillock.86
-rw-r--r--modules/pam_faillock/pam_faillock.8.xml2
-rw-r--r--modules/pam_faillock/pam_faillock.c75
-rw-r--r--modules/pam_filter/Makefile.in34
-rw-r--r--modules/pam_filter/pam_filter.84
-rw-r--r--modules/pam_filter/pam_filter.c2
-rw-r--r--modules/pam_filter/upperLOWER/Makefile.am4
-rw-r--r--modules/pam_filter/upperLOWER/Makefile.in35
-rw-r--r--modules/pam_ftp/Makefile.in34
-rw-r--r--modules/pam_ftp/pam_ftp.84
-rw-r--r--modules/pam_ftp/pam_ftp.c2
-rw-r--r--modules/pam_group/Makefile.in34
-rw-r--r--modules/pam_group/group.conf.54
-rw-r--r--modules/pam_group/pam_group.84
-rw-r--r--modules/pam_issue/Makefile.in34
-rw-r--r--modules/pam_issue/pam_issue.84
-rw-r--r--modules/pam_keyinit/Makefile.in34
-rw-r--r--modules/pam_keyinit/pam_keyinit.84
-rw-r--r--modules/pam_lastlog/Makefile.in34
-rw-r--r--modules/pam_lastlog/README2
-rw-r--r--modules/pam_lastlog/pam_lastlog.86
-rw-r--r--modules/pam_lastlog/pam_lastlog.8.xml2
-rw-r--r--modules/pam_limits/Makefile.in34
-rw-r--r--modules/pam_limits/README1
-rw-r--r--modules/pam_limits/limits.conf11
-rw-r--r--modules/pam_limits/limits.conf.518
-rw-r--r--modules/pam_limits/limits.conf.5.xml13
-rw-r--r--modules/pam_limits/pam_limits.84
-rw-r--r--modules/pam_limits/pam_limits.c98
-rw-r--r--modules/pam_listfile/Makefile.in34
-rw-r--r--modules/pam_listfile/pam_listfile.84
-rw-r--r--modules/pam_localuser/Makefile.in34
-rw-r--r--modules/pam_localuser/pam_localuser.84
-rw-r--r--modules/pam_localuser/pam_localuser.c86
-rw-r--r--modules/pam_loginuid/Makefile.in34
-rw-r--r--modules/pam_loginuid/pam_loginuid.84
-rw-r--r--modules/pam_loginuid/pam_loginuid.c2
-rw-r--r--modules/pam_mail/Makefile.in34
-rw-r--r--modules/pam_mail/pam_mail.84
-rw-r--r--modules/pam_mkhomedir/Makefile.am2
-rw-r--r--modules/pam_mkhomedir/Makefile.in68
-rw-r--r--modules/pam_mkhomedir/mkhomedir_helper.811
-rw-r--r--modules/pam_mkhomedir/mkhomedir_helper.8.xml7
-rw-r--r--modules/pam_mkhomedir/mkhomedir_helper.c41
-rw-r--r--modules/pam_mkhomedir/pam_mkhomedir.813
-rw-r--r--modules/pam_mkhomedir/pam_mkhomedir.8.xml13
-rw-r--r--modules/pam_mkhomedir/pam_mkhomedir.c41
-rw-r--r--modules/pam_motd/Makefile.in34
-rw-r--r--modules/pam_motd/README5
-rw-r--r--modules/pam_motd/pam_motd.86
-rw-r--r--modules/pam_motd/pam_motd.8.xml5
-rw-r--r--modules/pam_motd/pam_motd.c97
-rw-r--r--modules/pam_namespace/Makefile.am2
-rw-r--r--modules/pam_namespace/Makefile.in36
-rw-r--r--modules/pam_namespace/md5.c48
-rw-r--r--modules/pam_namespace/md5.h10
-rw-r--r--modules/pam_namespace/namespace.conf.54
-rw-r--r--modules/pam_namespace/pam_namespace.836
-rw-r--r--modules/pam_namespace/pam_namespace.8.xml41
-rw-r--r--modules/pam_namespace/pam_namespace.c63
-rw-r--r--modules/pam_namespace/pam_namespace.h1
-rw-r--r--modules/pam_namespace/pam_namespace_helper.84
-rw-r--r--modules/pam_nologin/Makefile.in34
-rw-r--r--modules/pam_nologin/pam_nologin.84
-rw-r--r--modules/pam_permit/Makefile.in34
-rw-r--r--modules/pam_permit/pam_permit.84
-rw-r--r--modules/pam_pwhistory/Makefile.am21
-rw-r--r--modules/pam_pwhistory/Makefile.in218
-rw-r--r--modules/pam_pwhistory/README6
-rw-r--r--modules/pam_pwhistory/opasswd.c72
-rw-r--r--modules/pam_pwhistory/opasswd.h31
-rw-r--r--modules/pam_pwhistory/pam_pwhistory.810
-rw-r--r--modules/pam_pwhistory/pam_pwhistory.8.xml6
-rw-r--r--modules/pam_pwhistory/pam_pwhistory.c220
-rw-r--r--modules/pam_pwhistory/pwhistory_helper.854
-rw-r--r--modules/pam_pwhistory/pwhistory_helper.8.xml68
-rw-r--r--modules/pam_pwhistory/pwhistory_helper.c119
-rw-r--r--modules/pam_rhosts/Makefile.in34
-rw-r--r--modules/pam_rhosts/pam_rhosts.84
-rw-r--r--modules/pam_rootok/Makefile.in34
-rw-r--r--modules/pam_rootok/pam_rootok.84
-rw-r--r--modules/pam_rootok/pam_rootok.c18
-rw-r--r--modules/pam_securetty/Makefile.in34
-rw-r--r--modules/pam_securetty/pam_securetty.84
-rw-r--r--modules/pam_securetty/pam_securetty.c6
-rw-r--r--modules/pam_selinux/Makefile.in34
-rw-r--r--modules/pam_selinux/pam_selinux.84
-rw-r--r--modules/pam_selinux/pam_selinux.c13
-rw-r--r--modules/pam_sepermit/Makefile.in34
-rw-r--r--modules/pam_sepermit/pam_sepermit.84
-rw-r--r--modules/pam_sepermit/sepermit.conf2
-rw-r--r--modules/pam_sepermit/sepermit.conf.54
-rw-r--r--modules/pam_setquota/Makefile.in34
-rw-r--r--modules/pam_setquota/README6
-rw-r--r--modules/pam_setquota/pam_setquota.810
-rw-r--r--modules/pam_setquota/pam_setquota.8.xml10
-rw-r--r--modules/pam_setquota/pam_setquota.c4
-rw-r--r--modules/pam_shells/Makefile.in34
-rw-r--r--modules/pam_shells/pam_shells.84
-rw-r--r--modules/pam_stress/Makefile.am12
-rw-r--r--modules/pam_stress/Makefile.in126
-rw-r--r--modules/pam_stress/README93
-rw-r--r--modules/pam_stress/README.xml31
-rw-r--r--modules/pam_stress/pam_stress.8190
-rw-r--r--modules/pam_stress/pam_stress.8.xml356
-rw-r--r--modules/pam_succeed_if/Makefile.in34
-rw-r--r--modules/pam_succeed_if/pam_succeed_if.84
-rw-r--r--modules/pam_tally/Makefile.am39
-rw-r--r--modules/pam_tally/Makefile.in1221
-rw-r--r--modules/pam_tally/README145
-rw-r--r--modules/pam_tally/README.xml41
-rw-r--r--modules/pam_tally/faillog.h55
-rw-r--r--modules/pam_tally/pam_tally.8256
-rw-r--r--modules/pam_tally/pam_tally.8.xml459
-rw-r--r--modules/pam_tally/pam_tally.c853
-rw-r--r--modules/pam_tally/pam_tally_app.c6
-rwxr-xr-xmodules/pam_tally/tst-pam_tally2
-rw-r--r--modules/pam_tally2/Makefile.am43
-rw-r--r--modules/pam_tally2/Makefile.in1227
-rw-r--r--modules/pam_tally2/README156
-rw-r--r--modules/pam_tally2/README.xml46
-rw-r--r--modules/pam_tally2/pam_tally2.8244
-rw-r--r--modules/pam_tally2/pam_tally2.8.xml450
-rw-r--r--modules/pam_tally2/pam_tally2.c1035
-rw-r--r--modules/pam_tally2/pam_tally2_app.c6
-rw-r--r--modules/pam_tally2/tallylog.h52
-rwxr-xr-xmodules/pam_tally2/tst-pam_tally22
-rw-r--r--modules/pam_time/Makefile.in34
-rw-r--r--modules/pam_time/pam_time.84
-rw-r--r--modules/pam_time/time.conf.54
-rw-r--r--modules/pam_timestamp/Makefile.am19
-rw-r--r--modules/pam_timestamp/Makefile.in90
-rw-r--r--modules/pam_timestamp/README3
-rw-r--r--modules/pam_timestamp/hmac_openssl_wrapper.c381
-rw-r--r--modules/pam_timestamp/hmac_openssl_wrapper.h57
-rw-r--r--modules/pam_timestamp/pam_timestamp.89
-rw-r--r--modules/pam_timestamp/pam_timestamp.8.xml5
-rw-r--r--modules/pam_timestamp/pam_timestamp.c53
-rw-r--r--modules/pam_timestamp/pam_timestamp_check.86
-rw-r--r--modules/pam_timestamp/pam_timestamp_check.8.xml2
-rw-r--r--modules/pam_timestamp/sha1.c21
-rw-r--r--modules/pam_timestamp/sha1.h5
-rw-r--r--modules/pam_tty_audit/Makefile.in34
-rw-r--r--modules/pam_tty_audit/README2
-rw-r--r--modules/pam_tty_audit/pam_tty_audit.86
-rw-r--r--modules/pam_tty_audit/pam_tty_audit.8.xml2
-rw-r--r--modules/pam_umask/Makefile.in34
-rw-r--r--modules/pam_umask/pam_umask.84
-rw-r--r--modules/pam_umask/pam_umask.c18
-rw-r--r--modules/pam_unix/Makefile.am8
-rw-r--r--modules/pam_unix/Makefile.in42
-rw-r--r--modules/pam_unix/README6
-rw-r--r--modules/pam_unix/bigcrypt.c10
-rw-r--r--modules/pam_unix/lckpwdf.-c10
-rw-r--r--modules/pam_unix/md5.c40
-rw-r--r--modules/pam_unix/md5.h10
-rw-r--r--modules/pam_unix/pam_unix.810
-rw-r--r--modules/pam_unix/pam_unix.8.xml6
-rw-r--r--modules/pam_unix/pam_unix_acct.c6
-rw-r--r--modules/pam_unix/pam_unix_passwd.c2
-rw-r--r--modules/pam_unix/passverify.c173
-rw-r--r--modules/pam_unix/passverify.h4
-rw-r--r--modules/pam_unix/support.c48
-rw-r--r--modules/pam_unix/unix_chkpwd.84
-rw-r--r--modules/pam_unix/unix_chkpwd.c9
-rw-r--r--modules/pam_unix/unix_update.84
-rw-r--r--modules/pam_unix/unix_update.c13
-rw-r--r--modules/pam_userdb/Makefile.in34
-rw-r--r--modules/pam_userdb/README3
-rw-r--r--modules/pam_userdb/pam_userdb.86
-rw-r--r--modules/pam_userdb/pam_userdb.8.xml3
-rw-r--r--modules/pam_userdb/pam_userdb.c62
-rw-r--r--modules/pam_usertype/Makefile.in34
-rw-r--r--modules/pam_usertype/pam_usertype.84
-rw-r--r--modules/pam_usertype/pam_usertype.c3
-rw-r--r--modules/pam_warn/Makefile.in34
-rw-r--r--modules/pam_warn/pam_warn.84
-rw-r--r--modules/pam_wheel/Makefile.in34
-rw-r--r--modules/pam_wheel/README6
-rw-r--r--modules/pam_wheel/pam_wheel.86
-rw-r--r--modules/pam_wheel/pam_wheel.8.xml6
-rw-r--r--modules/pam_wheel/pam_wheel.c61
-rw-r--r--modules/pam_xauth/Makefile.in34
-rw-r--r--modules/pam_xauth/pam_xauth.84
-rw-r--r--modules/pam_xauth/pam_xauth.c16
-rw-r--r--po/Linux-PAM.pot187
-rw-r--r--po/POTFILES.in195
-rw-r--r--po/af.po185
-rw-r--r--po/am.po185
-rw-r--r--po/ar.gmobin7955 -> 6560 bytes
-rw-r--r--po/ar.po259
-rw-r--r--po/as.gmobin13006 -> 10333 bytes
-rw-r--r--po/as.po277
-rw-r--r--po/az.po187
-rw-r--r--po/be.po187
-rw-r--r--po/bg.gmobin11504 -> 12566 bytes
-rw-r--r--po/bg.po356
-rw-r--r--po/bn.gmobin13587 -> 10846 bytes
-rw-r--r--po/bn.po279
-rw-r--r--po/bn_IN.gmobin13591 -> 10850 bytes
-rw-r--r--po/bn_IN.po279
-rw-r--r--po/bs.po186
-rw-r--r--po/ca.gmobin12189 -> 10400 bytes
-rw-r--r--po/ca.po288
-rw-r--r--po/cs.gmobin12016 -> 9857 bytes
-rw-r--r--po/cs.po275
-rw-r--r--po/cy.po187
-rw-r--r--po/da.gmobin11797 -> 9846 bytes
-rw-r--r--po/da.po278
-rw-r--r--po/de.gmobin11986 -> 10185 bytes
-rw-r--r--po/de.po288
-rw-r--r--po/de_CH.po185
-rw-r--r--po/el.po185
-rw-r--r--po/eo.gmobin494 -> 3833 bytes
-rw-r--r--po/eo.po289
-rw-r--r--po/es.gmobin9682 -> 7937 bytes
-rw-r--r--po/es.po302
-rw-r--r--po/et.gmobin2764 -> 2251 bytes
-rw-r--r--po/et.po222
-rw-r--r--po/eu.gmobin1015 -> 968 bytes
-rw-r--r--po/eu.po188
-rw-r--r--po/fa.po184
-rw-r--r--po/fi.gmobin11031 -> 10046 bytes
-rw-r--r--po/fi.po321
-rw-r--r--po/fr.gmobin12820 -> 10700 bytes
-rw-r--r--po/fr.po281
-rw-r--r--po/ga.gmobin9758 -> 7693 bytes
-rw-r--r--po/ga.po282
-rw-r--r--po/gl.po185
-rw-r--r--po/gu.gmobin13074 -> 10377 bytes
-rw-r--r--po/gu.po277
-rw-r--r--po/he.gmobin2889 -> 10834 bytes
-rw-r--r--po/he.po459
-rw-r--r--po/hi.gmobin12447 -> 9833 bytes
-rw-r--r--po/hi.po277
-rw-r--r--po/hr.po186
-rw-r--r--po/hu.gmobin9185 -> 7349 bytes
-rw-r--r--po/hu.po291
-rw-r--r--po/ia.gmobin9268 -> 7077 bytes
-rw-r--r--po/ia.po278
-rw-r--r--po/id.gmobin4136 -> 4025 bytes
-rw-r--r--po/id.po191
-rw-r--r--po/is.po185
-rw-r--r--po/it.gmobin11823 -> 10029 bytes
-rw-r--r--po/it.po287
-rw-r--r--po/ja.gmobin9940 -> 7744 bytes
-rw-r--r--po/ja.po276
-rw-r--r--po/ka.gmobin3293 -> 2579 bytes
-rw-r--r--po/ka.po216
-rw-r--r--po/kk.gmobin11518 -> 12453 bytes
-rw-r--r--po/kk.po357
-rw-r--r--po/km.gmobin10771 -> 8868 bytes
-rw-r--r--po/km.po242
-rw-r--r--po/kn.gmobin13861 -> 10850 bytes
-rw-r--r--po/kn.po276
-rw-r--r--po/ko.gmobin9240 -> 10148 bytes
-rw-r--r--po/ko.po407
-rw-r--r--po/kw_GB.po187
-rw-r--r--po/ky.po184
-rw-r--r--po/lt.po186
-rw-r--r--po/lv.po186
-rw-r--r--po/mk.po185
-rw-r--r--po/ml.gmobin15749 -> 12685 bytes
-rw-r--r--po/ml.po277
-rw-r--r--po/mn.po185
-rw-r--r--po/mr.gmobin13288 -> 10413 bytes
-rw-r--r--po/mr.po277
-rw-r--r--po/ms.po184
-rw-r--r--po/my.po184
-rw-r--r--po/nb.gmobin11581 -> 9536 bytes
-rw-r--r--po/nb.po272
-rw-r--r--po/ne.po185
-rw-r--r--po/nl.gmobin11750 -> 10020 bytes
-rw-r--r--po/nl.po289
-rw-r--r--po/nn.gmobin473 -> 9531 bytes
-rw-r--r--po/nn.po395
-rw-r--r--po/or.gmobin18696 -> 15523 bytes
-rw-r--r--po/or.po272
-rw-r--r--po/pa.gmobin12506 -> 14212 bytes
-rw-r--r--po/pa.po396
-rw-r--r--po/pl.gmobin12236 -> 10235 bytes
-rw-r--r--po/pl.po283
-rw-r--r--po/pt.gmobin12413 -> 10388 bytes
-rw-r--r--po/pt.po282
-rw-r--r--po/pt_BR.gmobin11561 -> 9795 bytes
-rw-r--r--po/pt_BR.po286
-rw-r--r--po/ro.gmobin534 -> 10103 bytes
-rw-r--r--po/ro.po403
-rw-r--r--po/ru.gmobin15994 -> 13398 bytes
-rw-r--r--po/ru.po283
-rw-r--r--po/si.gmobin10236 -> 8618 bytes
-rw-r--r--po/si.po243
-rw-r--r--po/sk.gmobin11788 -> 9917 bytes
-rw-r--r--po/sk.po287
-rw-r--r--po/sl.po187
-rw-r--r--po/sq.po185
-rw-r--r--po/sr.gmobin11558 -> 9013 bytes
-rw-r--r--po/sr.po280
-rw-r--r--po/sr@latin.gmobin8742 -> 6926 bytes
-rw-r--r--po/sr@latin.po279
-rw-r--r--po/sv.gmobin11832 -> 9864 bytes
-rw-r--r--po/sv.po280
-rw-r--r--po/ta.gmobin13871 -> 10884 bytes
-rw-r--r--po/ta.po277
-rw-r--r--po/te.gmobin13868 -> 11038 bytes
-rw-r--r--po/te.po277
-rw-r--r--po/tg.po185
-rw-r--r--po/th.po184
-rw-r--r--po/tr.gmobin11983 -> 9969 bytes
-rw-r--r--po/tr.po279
-rw-r--r--po/uk.gmobin15849 -> 13290 bytes
-rw-r--r--po/uk.po285
-rw-r--r--po/ur.po185
-rw-r--r--po/vi.gmobin9369 -> 7349 bytes
-rw-r--r--po/vi.po280
-rw-r--r--po/yo.po185
-rw-r--r--po/zh_CN.gmobin8433 -> 9086 bytes
-rw-r--r--po/zh_CN.po369
-rw-r--r--po/zh_HK.po184
-rw-r--r--po/zh_TW.gmobin11086 -> 9083 bytes
-rw-r--r--po/zh_TW.po271
-rw-r--r--po/zu.gmobin6904 -> 5759 bytes
-rw-r--r--po/zu.po247
-rw-r--r--tests/Makefile.in34
-rw-r--r--tests/tst-pam_end.c2
-rw-r--r--tests/tst-pam_fail_delay.c2
-rw-r--r--tests/tst-pam_get_item.c2
-rw-r--r--tests/tst-pam_getenvlist.c2
-rw-r--r--tests/tst-pam_set_data.c2
-rw-r--r--tests/tst-pam_set_item.c2
-rw-r--r--tests/tst-pam_start.c2
-rw-r--r--tests/tst-pam_start_confdir.c2
-rw-r--r--xtests/Makefile.am2
-rw-r--r--xtests/Makefile.in84
-rw-r--r--xtests/tst-pam_cracklib1.c135
-rw-r--r--xtests/tst-pam_cracklib1.pamd2
-rw-r--r--xtests/tst-pam_cracklib2.c143
-rw-r--r--xtests/tst-pam_cracklib2.pamd2
529 files changed, 19655 insertions, 28770 deletions
diff --git a/ChangeLog b/ChangeLog
index 78690bfd..df5f1749 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1550 @@
+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.
diff --git a/Make.xml.rules.in b/Make.xml.rules.in
index daa1b97b..27bb510e 100644
--- a/Make.xml.rules.in
+++ b/Make.xml.rules.in
@@ -21,6 +21,6 @@ README: README.xml
%.8: %.8.xml
$(XMLLINT) --nonet --xinclude --postvalid --noout $<
- $(XSLTPROC) -o $(srcdir)/$@ --path $(srcdir) --xinclude @STRINGPARAM_VENDORDIR@ --nonet $(top_srcdir)/doc/custom-man.xsl $<
+ $(XSLTPROC) -o $(srcdir)/$@ --path $(srcdir) --xinclude @STRINGPARAM_VENDORDIR@ @STRINGPARAM_HMAC@ --nonet $(top_srcdir)/doc/custom-man.xsl $<
#CLEANFILES += $(man_MANS) README
diff --git a/Makefile.am b/Makefile.am
index 6571e2f7..deb25268 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
# Copyright (c) 2005, 2006, 2007 Thorsten Kukuk <kukuk@thkukuk.de>
#
-AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 dist-xz check-news
+AUTOMAKE_OPTIONS = 1.9 gnu dist-xz no-dist-gzip check-news
SUBDIRS = libpam tests libpamc libpam_misc modules po conf examples xtests
@@ -24,10 +24,6 @@ releasedocs:
rm -rf Linux-PAM-$(VERSION)
mkdir -p Linux-PAM-$(VERSION)/doc
make -C doc releasedocs
- tar zfc Linux-PAM-$(VERSION)-docs.tar.gz \
- Linux-PAM-$(VERSION)/doc
- tar jfc Linux-PAM-$(VERSION)-docs.tar.bz2 \
- Linux-PAM-$(VERSION)/doc
tar Jfc Linux-PAM-$(VERSION)-docs.tar.xz \
Linux-PAM-$(VERSION)/doc
rm -rf Linux-PAM-$(VERSION)
diff --git a/Makefile.in b/Makefile.in
index e9603c1a..92c0d026 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -94,18 +94,21 @@ host_triplet = @host@
@HAVE_DOC_TRUE@am__append_1 = doc
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -151,8 +154,8 @@ am__recursive_targets = \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir distdir-am dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)config.h.in
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+ config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@@ -221,9 +224,11 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).tar.xz
GZIP_ENV = --best
-DIST_TARGETS = dist-xz dist-bzip2 dist-gzip
+DIST_ARCHIVES = $(distdir).tar.xz
+DIST_TARGETS = dist-xz
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -246,6 +251,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -259,6 +267,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -278,7 +288,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -325,8 +334,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -337,6 +344,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -386,7 +394,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -394,9 +401,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -406,11 +410,12 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = 1.9 gnu dist-bzip2 dist-xz check-news
+AUTOMAKE_OPTIONS = 1.9 gnu dist-xz no-dist-gzip check-news
SUBDIRS = libpam tests libpamc libpam_misc modules po conf examples \
xtests $(am__append_1)
CLEANFILES = *~
@@ -666,6 +671,7 @@ distdir-am: $(DISTFILES)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir)
+
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
@@ -677,6 +683,10 @@ dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@@ -719,6 +729,8 @@ distcheck: dist
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
@@ -734,7 +746,7 @@ distcheck: dist
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
@@ -897,7 +909,7 @@ uninstall-am:
am--refresh check check-am clean clean-cscope clean-generic \
clean-libtool cscope cscopelist-am ctags ctags-am dist \
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
- dist-tarZ dist-xz dist-zip distcheck distclean \
+ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \
distclean-generic distclean-hdr distclean-libtool \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
@@ -921,10 +933,6 @@ releasedocs:
rm -rf Linux-PAM-$(VERSION)
mkdir -p Linux-PAM-$(VERSION)/doc
make -C doc releasedocs
- tar zfc Linux-PAM-$(VERSION)-docs.tar.gz \
- Linux-PAM-$(VERSION)/doc
- tar jfc Linux-PAM-$(VERSION)-docs.tar.bz2 \
- Linux-PAM-$(VERSION)/doc
tar Jfc Linux-PAM-$(VERSION)-docs.tar.xz \
Linux-PAM-$(VERSION)/doc
rm -rf Linux-PAM-$(VERSION)
diff --git a/NEWS b/NEWS
index e8c0de87..ca436baf 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,45 @@
Linux-PAM NEWS -- history of user-visible changes.
+Release 1.5.2
+* pam_exec: implemented quiet_log option.
+* pam_mkhomedir: added support of HOME_MODE and UMASK from /etc/login.defs.
+* pam_timestamp: changed hmac algorithm to call openssl instead of the bundled
+ sha1 implementation if selected, added option to select
+ the hash algorithm to use with HMAC.
+* Added pkgconfig files for provided libraries.
+* Added --with-systemdunitdir configure option to specify systemd unit
+ directory.
+* Added --with-misc-conv-bufsize configure option to specify the buffer size
+ in libpam_misc's misc_conv() function, raised the default value for this
+ parameter from 512 to 4096.
+* Multiple minor bug fixes, portability fixes, documentation improvements,
+ and translation updates.
+
+Release 1.5.1
+* pam_unix: fixed CVE-2020-27780 - authentication bypass when a user
+ doesn't exist and root password is blank
+* pam_faillock: added nodelay option to not set pam_fail_delay
+* pam_wheel: use pam_modutil_user_in_group to check for the group membership
+ with getgrouplist where it is available
+
+Release 1.5.0
+* Multiple minor bug fixes, portability fixes, and documentation improvements.
+* Extended libpam API with pam_modutil_check_user_in_passwd function.
+* configure: added --disable-unix option to disable build of pam_unix module.
+* pam_faillock: changed /run/faillock/$USER permissions from 0600 to 0660.
+* pam_limits: added support for nonewprivs item.
+* pam_motd: read motd files with target user credentials skipping unreadable ones.
+* pam_pwhistory: added a SELinux helper executable.
+* pam_unix, pam_usertype: implemented avoidance of certain timing attacks.
+* pam_wheel: implemented PAM_RUSER fallback for the case when getlogin fails.
+* Removed deprecated pam_cracklib module, use pam_passwdqc (from passwdqc project)
+ or pam_pwquality (from libpwquality project) instead.
+* Removed deprecated pam_tally and pam_tally2 modules, use pam_faillock instead.
+* pam_env: Reading of the user environment is deprecated and will be removed
+ at some point in the future.
+* libpam: pam_modutil_drop_priv() now correctly sets the target user's
+ supplementary groups, allowing pam_motd to filter messages accordingly
+
Release 1.4.0
* Multiple minor bug fixes and documentation improvements
* Fixed grammar of messages printed via pam_prompt
diff --git a/aclocal.m4 b/aclocal.m4
index 8ab8da24..1df70401 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -296,7 +296,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -311,7 +311,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.1], [],
+m4_if([$1], [1.16.3], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -327,14 +327,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.3])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -386,7 +386,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -417,7 +417,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -608,7 +608,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -647,7 +647,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
done
if test $am_rc -ne 0; then
AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).])
fi
@@ -674,7 +676,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -871,7 +873,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -892,7 +894,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2018 Free Software Foundation, Inc.
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -911,7 +913,7 @@ fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
-# Copyright (C) 1998-2018 Free Software Foundation, Inc.
+# Copyright (C) 1998-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -931,7 +933,7 @@ fi])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -974,7 +976,7 @@ AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2018 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -995,12 +997,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@@ -1013,7 +1010,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1042,7 +1039,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1089,7 +1086,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1108,7 +1105,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1189,7 +1186,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2018 Free Software Foundation, Inc.
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1249,7 +1246,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2018 Free Software Foundation, Inc.
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1277,7 +1274,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2018 Free Software Foundation, Inc.
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1296,7 +1293,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2018 Free Software Foundation, Inc.
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1427,14 +1424,15 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4/attribute.m4])
m4_include([m4/gettext.m4])
m4_include([m4/iconv.m4])
m4_include([m4/intlmacosx.m4])
-m4_include([m4/japhar_grep_cflags.m4])
m4_include([m4/jh_path_xml_catalog.m4])
m4_include([m4/ld-O1.m4])
m4_include([m4/ld-as-needed.m4])
m4_include([m4/ld-no-undefined.m4])
+m4_include([m4/ld-z-now.m4])
m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4])
@@ -1447,3 +1445,5 @@ m4_include([m4/lt~obsolete.m4])
m4_include([m4/nls.m4])
m4_include([m4/po.m4])
m4_include([m4/progtest.m4])
+m4_include([m4/warn_lang_flags.m4])
+m4_include([m4/warnings.m4])
diff --git a/build-aux/compile b/build-aux/compile
index 99e50524..23fcba01 100755
--- a/build-aux/compile
+++ b/build-aux/compile
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -53,7 +53,7 @@ func_file_conv ()
MINGW*)
file_conv=mingw
;;
- CYGWIN*)
+ CYGWIN* | MSYS*)
file_conv=cygwin
;;
*)
@@ -67,7 +67,7 @@ func_file_conv ()
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
- cygwin/*)
+ cygwin/* | msys/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 28bec27b..e81d3ae7 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2018-12-07'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2021-06-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -27,11 +29,19 @@ timestamp='2018-12-07'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
@@ -50,7 +60,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,6 +94,9 @@ if test $# != 0; then
exit 1
fi
+# Just in case it came from the environment.
+GUESS=
+
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -99,8 +112,10 @@ tmp=
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
: "${TMPDIR=/tmp}"
- # shellcheck disable=SC2039
+ # shellcheck disable=SC2039,SC3028
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
@@ -110,7 +125,7 @@ set_cc_for_build() {
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c89 c99 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$driver"
+ CC_FOR_BUILD=$driver
break
fi
done
@@ -131,14 +146,12 @@ fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
+ LIBC=unknown
set_cc_for_build
cat <<-EOF > "$dummy.c"
@@ -147,24 +160,37 @@ Linux|GNU|GNU/*)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
- #else
+ #elif defined(__GLIBC__)
LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
- # If ldd exists, use it to detect musl libc.
- if command -v ldd >/dev/null && \
- ldd --version 2>&1 | grep -q ^musl
- then
- LIBC=musl
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -176,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- "/sbin/$sysctl" 2>/dev/null || \
- "/usr/sbin/$sysctl" 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown)`
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
@@ -190,13 +216,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
earmv*)
arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine="${arch}${endian}"-unknown
+ machine=${arch}${endian}-unknown
;;
- *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
os=netbsdelf
;;
@@ -217,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
;;
esac
# Determine ABI tags.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
@@ -228,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "$UNAME_VERSION" in
+ case $UNAME_VERSION in
Debian*)
release='-gnu'
;;
@@ -239,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi-}"
- exit ;;
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
*:MidnightBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
*:ekkoBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
*:SolidBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
+ *:OS108:*:*)
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:MirBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:Sortix:*:*)
- echo "$UNAME_MACHINE"-unknown-sortix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
+ *:Twizzler:*:*)
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
*:Redox:*:*)
- echo "$UNAME_MACHINE"-unknown-redox
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ GUESS=mips-dec-osf1
+ ;;
alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -291,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
+ case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
@@ -328,75 +366,76 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
+ GUESS=m68k-unknown-sysv4
+ ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-amigaos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-morphos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
*:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
+ GUESS=i370-ibm-openedition
+ ;;
*:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
+ GUESS=s390-ibm-zvmoe
+ ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
+ GUESS=powerpc-ibm-os400
+ ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix"$UNAME_RELEASE"
- exit ;;
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
+ GUESS=arm-unknown-riscos
+ ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
+ GUESS=pyramid-pyramid-svr4
+ ;;
DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
+ GUESS=sparc-icl-nx6
+ ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
@@ -404,41 +443,44 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
SUN_ARCH=x86_64
fi
fi
- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case `/usr/bin/arch -k` in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
+ case `/bin/arch` in
sun3)
- echo m68k-sun-sunos"$UNAME_RELEASE"
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
- echo sparc-sun-sunos"$UNAME_RELEASE"
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
- exit ;;
+ ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -448,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
m68k:machten:*:*)
- echo m68k-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix"$UNAME_RELEASE"
- exit ;;
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -510,75 +552,76 @@ EOF
dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
+ GUESS=powerpc-motorola-powermax
+ ;;
Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
+ GUESS=powerpc-harris-powerunix
+ ;;
m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
+ GUESS=m88k-harris-cxux7
+ ;;
m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
+ GUESS=m88k-motorola-sysv4
+ ;;
m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
- [ "$TARGET_BINARY_INTERFACE"x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
then
- echo m88k-dg-dgux"$UNAME_RELEASE"
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
else
- echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
- echo i586-dg-dgux"$UNAME_RELEASE"
+ GUESS=i586-dg-dgux$UNAME_RELEASE
fi
- exit ;;
+ ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
+ GUESS=m88k-dolphin-sysv3
+ ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
+ GUESS=m88k-tektronix-sysv3
+ ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
+ GUESS=m68k-tektronix-bsd
+ ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
- exit ;;
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
+ GUESS=i386-ibm-aix
+ ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
+ if test -x /usr/bin/oslevel ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
set_cc_for_build
@@ -595,16 +638,16 @@ EOF
EOF
if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
- echo "$SYSTEM_NAME"
+ GUESS=$SYSTEM_NAME
else
- echo rs6000-ibm-aix3.2.5
+ GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
+ GUESS=rs6000-ibm-aix3.2.4
else
- echo rs6000-ibm-aix3.2
+ GUESS=rs6000-ibm-aix3.2
fi
- exit ;;
+ ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
@@ -612,56 +655,56 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
*:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
+ GUESS=rs6000-ibm-aix
+ ;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
+ GUESS=romp-ibm-bsd4.4
+ ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
+ GUESS=rs6000-bull-bosx
+ ;;
DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
+ GUESS=m68k-bull-sysv3
+ ;;
9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
+ GUESS=m68k-hp-bsd
+ ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
+ GUESS=m68k-hp-bsd4.4
+ ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- case "$UNAME_MACHINE" in
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
+ if test -x /usr/bin/getconf; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "$sc_cpu_version" in
+ case $sc_cpu_version in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "$sc_kernel_bits" in
+ case $sc_kernel_bits in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "$HP_ARCH" = "" ]; then
+ if test "$HP_ARCH" = ""; then
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -700,7 +743,7 @@ EOF
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ "$HP_ARCH" = hppa2.0w ]
+ if test "$HP_ARCH" = hppa2.0w
then
set_cc_for_build
@@ -721,12 +764,12 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
- exit ;;
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux"$HPUX_REV"
- exit ;;
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
3050*:HI-UX:*:*)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -756,36 +799,36 @@ EOF
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- echo hppa1.1-hp-bsd
- exit ;;
+ GUESS=hppa1.1-hp-bsd
+ ;;
9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
+ GUESS=hppa1.0-hp-bsd
+ ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
+ GUESS=hppa1.0-hp-mpeix
+ ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- echo hppa1.1-hp-osf
- exit ;;
+ GUESS=hppa1.1-hp-osf
+ ;;
hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
+ GUESS=hppa1.0-hp-osf
+ ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo "$UNAME_MACHINE"-unknown-osf1mk
+ if test -x /usr/sbin/sysversion ; then
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
else
- echo "$UNAME_MACHINE"-unknown-osf1
+ GUESS=$UNAME_MACHINE-unknown-osf1
fi
- exit ;;
+ ;;
parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
+ GUESS=hppa1.1-hp-lites
+ ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
+ GUESS=c1-convex-bsd
+ ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
@@ -793,17 +836,18 @@ EOF
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
+ GUESS=c34-convex-bsd
+ ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
+ GUESS=c38-convex-bsd
+ ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
+ GUESS=c4-convex-bsd
+ ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -811,114 +855,126 @@ EOF
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
*:BSD/OS:*:*)
- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
arm:FreeBSD:*:*)
UNAME_PROCESSOR=`uname -p`
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
fi
- exit ;;
+ ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case "$UNAME_PROCESSOR" in
+ case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
i*:CYGWIN*:*)
- echo "$UNAME_MACHINE"-pc-cygwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
*:MINGW64*:*)
- echo "$UNAME_MACHINE"-pc-mingw64
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
*:MINGW*:*)
- echo "$UNAME_MACHINE"-pc-mingw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
*:MSYS*:*)
- echo "$UNAME_MACHINE"-pc-msys
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
i*:PW*:*)
- echo "$UNAME_MACHINE"-pc-pw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
*:Interix*:*)
- case "$UNAME_MACHINE" in
+ case $UNAME_MACHINE in
x86)
- echo i586-pc-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
IA64)
- echo ia64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
esac ;;
i*:UWIN*:*)
- echo "$UNAME_MACHINE"-pc-uwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-pc-cygwin
- exit ;;
+ GUESS=x86_64-pc-cygwin
+ ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
- exit ;;
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
- exit ;;
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
*:Minix:*:*)
- echo "$UNAME_MACHINE"-unknown-minix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
aarch64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -929,183 +985,225 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
arm*:Linux:*:*)
set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
- exit ;;
+ ;;
avr32*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
cris:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
crisv32:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
e2k:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
frv:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
hexagon:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
ia64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
k1om:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m32r*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m68*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
- *) echo hppa-unknown-linux-"$LIBC" ;;
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
esac
- exit ;;
+ ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-"$LIBC"
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
sh64*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sh*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
tile*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
vax:Linux:*:*)
- echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
x86_64:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI=${LIBC}x32
+ fi
+ fi
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
xtensa*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
+ GUESS=i386-sequent-sysv4
+ ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo "$UNAME_MACHINE"-pc-os2-emx
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
i*86:XTS-300:*:STOP)
- echo "$UNAME_MACHINE"-unknown-stop
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
i*86:atheos:*:*)
- echo "$UNAME_MACHINE"-unknown-atheos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
i*86:syllable:*:*)
- echo "$UNAME_MACHINE"-pc-syllable
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
i*86:*DOS:*:*)
- echo "$UNAME_MACHINE"-pc-msdosdjgpp
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
i*86:*:4.*:*)
UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
- exit ;;
+ ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
@@ -1113,12 +1211,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1128,11 +1226,11 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv32
+ GUESS=$UNAME_MACHINE-pc-sysv32
fi
- exit ;;
+ ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1140,31 +1238,31 @@ EOF
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ GUESS=i586-pc-msdosdjgpp
+ ;;
Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
+ GUESS=i386-pc-mach3
+ ;;
paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
+ GUESS=i860-intel-osf1
+ ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
- exit ;;
+ ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
- echo m68010-convergent-sysv
- exit ;;
+ GUESS=m68010-convergent-sysv
+ ;;
mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
+ GUESS=m68k-convergent-sysv
+ ;;
M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
+ GUESS=m68k-diab-dnix
+ ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1189,253 +1287,401 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
+ GUESS=m68k-atari-sysv4
+ ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo "$UNAME_MACHINE"-sni-sysv4
+ GUESS=$UNAME_MACHINE-sni-sysv4
else
- echo ns32k-sni-sysv
+ GUESS=ns32k-sni-sysv
fi
- exit ;;
+ ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
+ GUESS=i860-stratus-sysv4
+ ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo "$UNAME_MACHINE"-stratus-vos
- exit ;;
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
+ GUESS=hppa1.1-stratus-vos
+ ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
+ GUESS=mips-sony-newsos6
+ ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv"$UNAME_RELEASE"
+ if test -d /usr/nec; then
+ GUESS=mips-nec-sysv$UNAME_RELEASE
else
- echo mips-unknown-sysv"$UNAME_RELEASE"
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
- exit ;;
+ ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
+ GUESS=powerpc-be-beos
+ ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
+ GUESS=powerpc-apple-beos
+ ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
+ GUESS=i586-pc-beos
+ ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
+ GUESS=i586-pc-haiku
+ ;;
x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
+ GUESS=x86_64-unknown-haiku
+ ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
*:Rhapsody:*:*)
- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
+ arm64:Darwin:*:*)
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
*:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
+ GUESS=i386-pc-qnx
+ ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
NSV-*:NONSTOP_KERNEL:*:*)
- echo nsv-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
*:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
+ GUESS=mips-compaq-nonstopux
+ ;;
BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
+ GUESS=bs2000-siemens-sysv
+ ;;
DS/*:UNIX_System_V:*:*)
- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- # shellcheck disable=SC2154
- if test "$cputype" = 386; then
+ if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
fi
- echo "$UNAME_MACHINE"-unknown-plan9
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
*:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
+ GUESS=pdp10-unknown-tops10
+ ;;
*:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
+ GUESS=pdp10-unknown-tenex
+ ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
+ GUESS=pdp10-dec-tops20
+ ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
+ GUESS=pdp10-xkl-tops20
+ ;;
*:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
+ GUESS=pdp10-unknown-tops20
+ ;;
*:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
+ GUESS=pdp10-unknown-its
+ ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "$UNAME_MACHINE" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
+ GUESS=i386-pc-xenix
+ ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
- exit ;;
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
i*86:rdos:*:*)
- echo "$UNAME_MACHINE"-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo "$UNAME_MACHINE"-pc-aros
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
x86_64:VMkernel:*:*)
- echo "$UNAME_MACHINE"-unknown-esx
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
+ GUESS=x86_64-unknown-onefs
+ ;;
*:Unleashed:*:*)
- echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
esac
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
echo "$0: unable to guess system type" >&2
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
@@ -1452,9 +1698,17 @@ This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions from:
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1482,6 +1736,7 @@ UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9542f985..6a758a60 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2018-12-16'
+timestamp='2021-06-03'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@ timestamp='2018-12-16'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,7 +50,7 @@ timestamp='2018-12-16'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -111,6 +111,7 @@ case $# in
esac
# Split fields of configuration type
+# shellcheck disable=SC2162
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
@@ -123,28 +124,27 @@ case $1 in
;;
*-*-*-*)
basic_machine=$field1-$field2
- os=$field3-$field4
+ basic_os=$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
- | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
- os=$maybe_os
+ basic_os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
- os=linux-android
+ basic_os=linux-android
;;
*)
basic_machine=$field1-$field2
- os=$field3
+ basic_os=$field3
;;
esac
;;
@@ -153,7 +153,7 @@ case $1 in
case $field1-$field2 in
decstation-3100)
basic_machine=mips-dec
- os=
+ basic_os=
;;
*-*)
# Second component is usually, but not always the OS
@@ -161,7 +161,7 @@ case $1 in
# Prevent following clause from handling this valid os
sun*os*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -174,11 +174,11 @@ case $1 in
| microblaze* | sim | cisco \
| oki | wec | wrs | winbond)
basic_machine=$field1-$field2
- os=
+ basic_os=
;;
*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
esac
;;
@@ -190,450 +190,451 @@ case $1 in
case $field1 in
386bsd)
basic_machine=i386-pc
- os=bsd
+ basic_os=bsd
;;
a29khif)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
adobe68k)
basic_machine=m68010-adobe
- os=scout
+ basic_os=scout
;;
alliant)
basic_machine=fx80-alliant
- os=
+ basic_os=
;;
altos | altos3068)
basic_machine=m68k-altos
- os=
+ basic_os=
;;
am29k)
basic_machine=a29k-none
- os=bsd
+ basic_os=bsd
;;
amdahl)
basic_machine=580-amdahl
- os=sysv
+ basic_os=sysv
;;
amiga)
basic_machine=m68k-unknown
- os=
+ basic_os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
- os=amigaos
+ basic_os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
- os=sysv4
+ basic_os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
- os=sysv
+ basic_os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
- os=bsd
+ basic_os=bsd
;;
aros)
basic_machine=i386-pc
- os=aros
+ basic_os=aros
;;
aux)
basic_machine=m68k-apple
- os=aux
+ basic_os=aux
;;
balance)
basic_machine=ns32k-sequent
- os=dynix
+ basic_os=dynix
;;
blackfin)
basic_machine=bfin-unknown
- os=linux
+ basic_os=linux
;;
cegcc)
basic_machine=arm-unknown
- os=cegcc
+ basic_os=cegcc
;;
convex-c1)
basic_machine=c1-convex
- os=bsd
+ basic_os=bsd
;;
convex-c2)
basic_machine=c2-convex
- os=bsd
+ basic_os=bsd
;;
convex-c32)
basic_machine=c32-convex
- os=bsd
+ basic_os=bsd
;;
convex-c34)
basic_machine=c34-convex
- os=bsd
+ basic_os=bsd
;;
convex-c38)
basic_machine=c38-convex
- os=bsd
+ basic_os=bsd
;;
cray)
basic_machine=j90-cray
- os=unicos
+ basic_os=unicos
;;
crds | unos)
basic_machine=m68k-crds
- os=
+ basic_os=
;;
da30)
basic_machine=m68k-da30
- os=
+ basic_os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
- os=
+ basic_os=
;;
delta88)
basic_machine=m88k-motorola
- os=sysv3
+ basic_os=sysv3
;;
dicos)
basic_machine=i686-pc
- os=dicos
+ basic_os=dicos
;;
djgpp)
basic_machine=i586-pc
- os=msdosdjgpp
+ basic_os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
- os=ebmon
+ basic_os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
- os=ose
+ basic_os=ose
;;
gmicro)
basic_machine=tron-gmicro
- os=sysv
+ basic_os=sysv
;;
go32)
basic_machine=i386-pc
- os=go32
+ basic_os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
- os=hms
+ basic_os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
- os=xray
+ basic_os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
- os=hms
+ basic_os=hms
;;
harris)
basic_machine=m88k-harris
- os=sysv3
+ basic_os=sysv3
;;
- hp300)
+ hp300 | hp300hpux)
basic_machine=m68k-hp
+ basic_os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
- os=bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=hpux
+ basic_os=bsd
;;
hppaosf)
basic_machine=hppa1.1-hp
- os=osf
+ basic_os=osf
;;
hppro)
basic_machine=hppa1.1-hp
- os=proelf
+ basic_os=proelf
;;
i386mach)
basic_machine=i386-mach
- os=mach
- ;;
- vsta)
- basic_machine=i386-pc
- os=vsta
+ basic_os=mach
;;
isi68 | isi)
basic_machine=m68k-isi
- os=sysv
+ basic_os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
- os=linux
+ basic_os=linux
;;
magnum | m3230)
basic_machine=mips-mips
- os=sysv
+ basic_os=sysv
;;
merlin)
basic_machine=ns32k-utek
- os=sysv
+ basic_os=sysv
;;
mingw64)
basic_machine=x86_64-pc
- os=mingw64
+ basic_os=mingw64
;;
mingw32)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
- os=mingw32ce
+ basic_os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
morphos)
basic_machine=powerpc-unknown
- os=morphos
+ basic_os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
- os=moxiebox
+ basic_os=moxiebox
;;
msdos)
basic_machine=i386-pc
- os=msdos
+ basic_os=msdos
;;
msys)
basic_machine=i686-pc
- os=msys
+ basic_os=msys
;;
mvs)
basic_machine=i370-ibm
- os=mvs
+ basic_os=mvs
;;
nacl)
basic_machine=le32-unknown
- os=nacl
+ basic_os=nacl
;;
ncr3000)
basic_machine=i486-ncr
- os=sysv4
+ basic_os=sysv4
;;
netbsd386)
basic_machine=i386-pc
- os=netbsd
+ basic_os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
- os=linux
+ basic_os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
- os=newsos
+ basic_os=newsos
;;
news1000)
basic_machine=m68030-sony
- os=newsos
+ basic_os=newsos
;;
necv70)
basic_machine=v70-nec
- os=sysv
+ basic_os=sysv
;;
nh3000)
basic_machine=m68k-harris
- os=cxux
+ basic_os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
- os=cxux
+ basic_os=cxux
;;
nindy960)
basic_machine=i960-intel
- os=nindy
+ basic_os=nindy
;;
mon960)
basic_machine=i960-intel
- os=mon960
+ basic_os=mon960
;;
nonstopux)
basic_machine=mips-compaq
- os=nonstopux
+ basic_os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
- os=os400
+ basic_os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
- os=ose
+ basic_os=ose
;;
os68k)
basic_machine=m68k-none
- os=os68k
+ basic_os=os68k
;;
paragon)
basic_machine=i860-intel
- os=osf
+ basic_os=osf
;;
parisc)
basic_machine=hppa-unknown
- os=linux
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
;;
pw32)
basic_machine=i586-unknown
- os=pw32
+ basic_os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
- os=rdos
+ basic_os=rdos
;;
rdos32)
basic_machine=i386-pc
- os=rdos
+ basic_os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
sa29200)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
sei)
basic_machine=mips-sei
- os=seiux
+ basic_os=seiux
;;
sequent)
basic_machine=i386-sequent
- os=
+ basic_os=
;;
sps7)
basic_machine=m68k-bull
- os=sysv2
+ basic_os=sysv2
;;
st2000)
basic_machine=m68k-tandem
- os=
+ basic_os=
;;
stratus)
basic_machine=i860-stratus
- os=sysv4
+ basic_os=sysv4
;;
sun2)
basic_machine=m68000-sun
- os=
+ basic_os=
;;
sun2os3)
basic_machine=m68000-sun
- os=sunos3
+ basic_os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
- os=sunos4
+ basic_os=sunos4
;;
sun3)
basic_machine=m68k-sun
- os=
+ basic_os=
;;
sun3os3)
basic_machine=m68k-sun
- os=sunos3
+ basic_os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4)
basic_machine=sparc-sun
- os=
+ basic_os=
;;
sun4os3)
basic_machine=sparc-sun
- os=sunos3
+ basic_os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
- os=solaris2
+ basic_os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
- os=
+ basic_os=
;;
sv1)
basic_machine=sv1-cray
- os=unicos
+ basic_os=unicos
;;
symmetry)
basic_machine=i386-sequent
- os=dynix
+ basic_os=dynix
;;
t3e)
basic_machine=alphaev5-cray
- os=unicos
+ basic_os=unicos
;;
t90)
basic_machine=t90-cray
- os=unicos
+ basic_os=unicos
;;
toad1)
basic_machine=pdp10-xkl
- os=tops20
+ basic_os=tops20
;;
tpf)
basic_machine=s390x-ibm
- os=tpf
+ basic_os=tpf
;;
udi29k)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
ultra3)
basic_machine=a29k-nyu
- os=sym1
+ basic_os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
- os=none
+ basic_os=none
;;
vaxv)
basic_machine=vax-dec
- os=sysv
+ basic_os=sysv
;;
vms)
basic_machine=vax-dec
- os=vms
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
;;
vxworks960)
basic_machine=i960-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
- os=vxworks
+ basic_os=vxworks
;;
xbox)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
ymp)
basic_machine=ymp-cray
- os=unicos
+ basic_os=unicos
;;
*)
basic_machine=$1
- os=
+ basic_os=
;;
esac
;;
@@ -685,17 +686,17 @@ case $basic_machine in
bluegene*)
cpu=powerpc
vendor=ibm
- os=cnk
+ basic_os=cnk
;;
decsystem10* | dec10*)
cpu=pdp10
vendor=dec
- os=tops10
+ basic_os=tops10
;;
decsystem20* | dec20*)
cpu=pdp10
vendor=dec
- os=tops20
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
@@ -705,7 +706,7 @@ case $basic_machine in
dpx2*)
cpu=m68k
vendor=bull
- os=sysv3
+ basic_os=sysv3
;;
encore | umax | mmax)
cpu=ns32k
@@ -714,7 +715,7 @@ case $basic_machine in
elxsi)
cpu=elxsi
vendor=elxsi
- os=${os:-bsd}
+ basic_os=${basic_os:-bsd}
;;
fx2800)
cpu=i860
@@ -727,7 +728,7 @@ case $basic_machine in
h3050r* | hiux*)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
cpu=hppa1.0
@@ -768,38 +769,38 @@ case $basic_machine in
vendor=hp
;;
i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv32
+ basic_os=sysv32
;;
i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv4
+ basic_os=sysv4
;;
i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv
+ basic_os=sysv
;;
i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=solaris2
+ basic_os=solaris2
;;
j90 | j90-cray)
cpu=j90
vendor=cray
- os=${os:-unicos}
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
cpu=mips
vendor=sgi
- case $os in
+ case $basic_os in
irix*)
;;
*)
- os=irix4
+ basic_os=irix4
;;
esac
;;
@@ -810,24 +811,26 @@ case $basic_machine in
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
- os=mint
+ basic_os=mint
;;
news-3600 | risc-news)
cpu=mips
vendor=sony
- os=newsos
+ basic_os=newsos
;;
next | m*-next)
cpu=m68k
vendor=next
- case $os in
- nextstep* )
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
;;
ns2*)
- os=nextstep2
+ basic_os=nextstep2
;;
*)
- os=nextstep3
+ basic_os=nextstep3
;;
esac
;;
@@ -838,12 +841,12 @@ case $basic_machine in
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
- os=proelf
+ basic_os=proelf
;;
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
pbd)
cpu=sparc
@@ -880,12 +883,12 @@ case $basic_machine in
sde)
cpu=mipsisa32
vendor=sde
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
simso-wrs)
cpu=sparclite
vendor=wrs
- os=vxworks
+ basic_os=vxworks
;;
tower | tower-32)
cpu=m68k
@@ -902,7 +905,7 @@ case $basic_machine in
w89k-*)
cpu=hppa1.1
vendor=winbond
- os=proelf
+ basic_os=proelf
;;
none)
cpu=none
@@ -914,10 +917,11 @@ case $basic_machine in
;;
leon-*|leon[3-9]-*)
cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ vendor=$(echo "$basic_machine" | sed 's/-.*//')
;;
*-*)
+ # shellcheck disable=SC2162
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
@@ -954,11 +958,11 @@ case $cpu-$vendor in
# some cases the only manufacturer, in others, it is the most popular.
craynv-unknown)
vendor=cray
- os=${os:-unicosmp}
+ basic_os=${basic_os:-unicosmp}
;;
c90-unknown | c90-cray)
vendor=cray
- os=${os:-unicos}
+ basic_os=${Basic_os:-unicos}
;;
fx80-unknown)
vendor=alliant
@@ -1002,7 +1006,7 @@ case $cpu-$vendor in
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
- os=${os:-bosx}
+ basic_os=${basic_os:-bosx}
;;
# Here we normalize CPU types irrespective of the vendor
@@ -1011,7 +1015,7 @@ case $cpu-$vendor in
;;
blackfin-*)
cpu=bfin
- os=linux
+ basic_os=linux
;;
c54x-*)
cpu=tic54x
@@ -1024,7 +1028,7 @@ case $cpu-$vendor in
;;
e500v[12]-*)
cpu=powerpc
- os=$os"spe"
+ basic_os=${basic_os}"spe"
;;
mips3*-*)
cpu=mips64
@@ -1034,7 +1038,7 @@ case $cpu-$vendor in
;;
m68knommu-*)
cpu=m68k
- os=linux
+ basic_os=linux
;;
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
@@ -1044,7 +1048,7 @@ case $cpu-$vendor in
;;
parisc-*)
cpu=hppa
- os=linux
+ basic_os=linux
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
@@ -1080,7 +1084,7 @@ case $cpu-$vendor in
cpu=mipsisa64sb1el
;;
sh5e[lb]-*)
- cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
;;
spur-*)
cpu=spur
@@ -1098,13 +1102,16 @@ case $cpu-$vendor in
cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
+ ;;
+ arm64-*)
+ cpu=aarch64
;;
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
crisv32-* | etraxfs*-*)
cpu=crisv32
@@ -1115,7 +1122,7 @@ case $cpu-$vendor in
vendor=axis
;;
crx-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
neo-tandem)
cpu=neo
@@ -1137,16 +1144,12 @@ case $cpu-$vendor in
cpu=nsx
vendor=tandem
;;
- s390-*)
- cpu=s390
- vendor=ibm
- ;;
- s390x-*)
- cpu=s390x
- vendor=ibm
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
tile*-*)
- os=${os:-linux-gnu}
+ basic_os=${basic_os:-linux-gnu}
;;
*)
@@ -1162,13 +1165,13 @@ case $cpu-$vendor in
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
- | arc | arceb \
+ | arc | arceb | arc32 | arc64 \
| arm | armh | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
| ba \
| be32 | be64 \
- | bfin | bs2000 \
+ | bfin | bpf | bs2000 \
| c[123]* | c30 | [cjt]90 | c4x \
| c8051 | clipper | craynv | csky | cydra \
| d10v | d30v | dlx | dsp16xx \
@@ -1182,14 +1185,15 @@ case $cpu-$vendor in
| k1om \
| le32 | le64 \
| lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
| m32c | m32r | m32rle \
- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
- | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
- | mips64 | mips64el \
+ | mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
@@ -1200,9 +1204,13 @@ case $cpu-$vendor in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
@@ -1216,32 +1224,37 @@ case $cpu-$vendor in
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
- | none | np1 | ns16k | ns32k \
+ | none | np1 | ns16k | ns32k | nvptx \
| open8 \
| or1k* \
| or32 \
| orion \
+ | picochip \
| pdp10 | pdp11 | pj | pjl | pn | power \
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
- | riscv | riscv32 | riscv64 \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
| rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
| sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \
| tahoe \
+ | thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
- | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
| visium \
- | wasm32 \
+ | w65 \
+ | wasm32 | wasm64 \
| we32k \
| x86 | x86_64 | xc16x | xgate | xps100 \
| xstormy16 | xtensa* \
@@ -1271,8 +1284,47 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x$os != x ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+ ;;
+ os2-emx)
+ kernel=os2
+ os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ ;;
+ linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|linux|gnu|')
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
@@ -1284,7 +1336,7 @@ case $os in
os=cnk
;;
solaris1 | solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ os=$(echo $os | sed -e 's|solaris1|sunos4|')
;;
solaris)
os=solaris2
@@ -1292,9 +1344,6 @@ case $os in
unixware*)
os=sysv4.2uw
;;
- gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
# es1800 is here to avoid being matched by es* (a different OS)
es1800*)
os=ose
@@ -1316,12 +1365,9 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- ;;
- sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
+ os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
;;
- scout)
+ sco*v* | scout)
# Don't match below
;;
sco*)
@@ -1330,78 +1376,26 @@ case $os in
psos*)
os=psos
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # sysv* is not here because it comes later, after sysvr4.
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- | sym* | kopensolaris* | plan9* \
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* \
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- | knetbsd* | mirbsd* | netbsd* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* \
- | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
- | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- | linux-newlib* | linux-musl* | linux-uclibc* \
- | uxpv* | beos* | mpeix* | udk* | moxiebox* \
- | interix* | uwin* | mks* | rhapsody* | darwin* \
- | openstep* | oskit* | conix* | pw32* | nonstopux* \
- | storm-chaos* | tops10* | tenex* | tops20* | its* \
- | os2* | vos* | palmos* | uclinux* | nucleus* \
- | morphos* | superux* | rtmk* | windiss* \
- | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
- | skyos* | haiku* | rdos* | toppers* | drops* | es* \
- | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd* | amdhsa* | unleashed*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
qnx*)
- case $cpu in
- x86 | i*86)
- ;;
- *)
- os=nto-$os
- ;;
- esac
+ os=qnx
;;
hiux*)
os=hiuxwe2
;;
- nto-qnx*)
- ;;
- nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- sim | xray | os68k* | v88r* \
- | windows* | osx | abug | netware* | os9* \
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- ;;
- linux-dietlibc)
- os=linux-dietlibc
- ;;
- linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
lynx*178)
os=lynxos178
;;
lynx*5)
os=lynxos5
;;
+ lynxos*)
+ # don't get caught up in next wildcard
+ ;;
lynx*)
os=lynxos
;;
- mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ mac[0-9]*)
+ os=$(echo "$os" | sed -e 's|mac|macos|')
;;
opened*)
os=openedition
@@ -1410,10 +1404,10 @@ case $os in
os=os400
;;
sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
;;
sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
;;
wince*)
os=wince
@@ -1445,12 +1439,9 @@ case $os in
ns2)
os=nextstep2
;;
- nsk*)
- os=nsk
- ;;
# Preserve the version number of sinix5.
sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ os=$(echo $os | sed -e 's|sinix|sysv|')
;;
sinix*)
os=sysv4
@@ -1473,18 +1464,12 @@ case $os in
sysvr4)
os=sysv4
;;
- # This must come after sysvr4.
- sysv*)
- ;;
ose*)
os=ose
;;
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
- zvmoe)
- os=zvmoe
- ;;
dicos*)
os=dicos
;;
@@ -1501,19 +1486,11 @@ case $os in
;;
esac
;;
- nacl*)
- ;;
- ios)
- ;;
- none)
- ;;
- *-eabi)
- ;;
*)
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
- exit 1
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
@@ -1526,6 +1503,7 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
+kernel=
case $cpu-$vendor in
score-*)
os=elf
@@ -1537,7 +1515,8 @@ case $cpu-$vendor in
os=riscix1.2
;;
arm*-rebel)
- os=linux
+ kernel=linux
+ os=gnu
;;
arm*-semi)
os=aout
@@ -1703,84 +1682,178 @@ case $cpu-$vendor in
os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
case $vendor in
unknown)
- case $os in
- riscix*)
+ case $cpu-$os in
+ *-riscix*)
vendor=acorn
;;
- sunos*)
+ *-sunos*)
vendor=sun
;;
- cnk*|-aix*)
+ *-cnk* | *-aix*)
vendor=ibm
;;
- beos*)
+ *-beos*)
vendor=be
;;
- hpux*)
+ *-hpux*)
vendor=hp
;;
- mpeix*)
+ *-mpeix*)
vendor=hp
;;
- hiux*)
+ *-hiux*)
vendor=hitachi
;;
- unos*)
+ *-unos*)
vendor=crds
;;
- dgux*)
+ *-dgux*)
vendor=dg
;;
- luna*)
+ *-luna*)
vendor=omron
;;
- genix*)
+ *-genix*)
vendor=ns
;;
- clix*)
+ *-clix*)
vendor=intergraph
;;
- mvs* | opened*)
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
vendor=ibm
;;
- os400*)
+ s390-* | s390x-*)
vendor=ibm
;;
- ptx*)
+ *-ptx*)
vendor=sequent
;;
- tpf*)
+ *-tpf*)
vendor=ibm
;;
- vxsim* | vxworks* | windiss*)
+ *-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
- aux*)
+ *-aux*)
vendor=apple
;;
- hms*)
+ *-hms*)
vendor=hitachi
;;
- mpw* | macos*)
+ *-mpw* | *-macos*)
vendor=apple
;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
- vos*)
+ *-vos*)
vendor=stratus
;;
esac
;;
esac
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit
# Local variables:
diff --git a/build-aux/depcomp b/build-aux/depcomp
index 65cbf709..6b391623 100755
--- a/build-aux/depcomp
+++ b/build-aux/depcomp
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/install-sh b/build-aux/install-sh
index 8175c640..ec298b53 100755
--- a/build-aux/install-sh
+++ b/build-aux/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2018-03-11.20; # UTC
+scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -69,6 +69,11 @@ posix_mkdir=
# Desired mode of installed file.
mode=0755
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
@@ -99,18 +104,28 @@ Options:
--version display version info and exit.
-c (ignored)
- -C install only if different (preserve the last data modification time)
+ -C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
+ -p pass -p to $cpprog.
-s $stripprog installed files.
+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Email bug reports to bug-automake@gnu.org.
+Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
@@ -137,8 +152,13 @@ while test $# -ne 0; do
-o) chowncmd="$chownprog $2"
shift;;
+ -p) cpprog="$cpprog -p";;
+
-s) stripcmd=$stripprog;;
+ -S) backupsuffix="$2"
+ shift;;
+
-t)
is_target_a_directory=always
dst_arg=$2
@@ -255,6 +275,10 @@ do
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
+ # Don't chown directories that already exist.
+ if test $dstdir_status = 0; then
+ chowncmd=""
+ fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
@@ -301,22 +325,6 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
@@ -326,52 +334,49 @@ do
fi
posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- # Note that $RANDOM variable is not portable (e.g. dash); Use it
- # here however when possible just to lower collision chance.
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-
- trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- # Because "mkdir -p" follows existing symlinks and we likely work
- # directly in world-writeable /tmp, make sure that the '$tmpdir'
- # directory is successfully created first before we actually test
- # 'mkdir -p' feature.
- if (umask $mkdir_umask &&
- $mkdirprog $mkdir_mode "$tmpdir" &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- test_tmpdir="$tmpdir/a"
- ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # The $RANDOM variable is not portable (e.g., dash). Use it
+ # here however when possible just to lower collision chance.
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+ trap '
+ ret=$?
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+ exit $ret
+ ' 0
+
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p'.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
esac
if
@@ -382,7 +387,7 @@ do
then :
else
- # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
@@ -411,7 +416,7 @@ do
prefixes=
else
if $posix_mkdir; then
- (umask=$mkdir_umask &&
+ (umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
@@ -451,7 +456,18 @@ do
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -477,6 +493,13 @@ do
then
rm -f "$dsttmp"
else
+ # If $backupsuffix is set, and the file being installed
+ # already exists, attempt a backup. Don't worry if it fails,
+ # e.g., if mv doesn't support -f.
+ if test -n "$backupsuffix" && test -f "$dst"; then
+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+ fi
+
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
@@ -491,9 +514,9 @@ do
# file should still install successfully.
{
test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
+ $doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
diff --git a/build-aux/ltmain.sh b/build-aux/ltmain.sh
index 0a87cfdd..b5297538 100644
--- a/build-aux/ltmain.sh
+++ b/build-aux/ltmain.sh
@@ -75,7 +75,7 @@ scriptversion=2019-02-19.15; # UTC
# Copyright (C) 2004-2019 Bootstrap Authors
#
# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
# these licenses when using or redistributing this software or any of
# the files within it. See the URLs above, or the file `LICENSE`
@@ -1485,7 +1485,7 @@ func_lt_ver ()
# Copyright (C) 2010-2019 Bootstrap Authors
#
# This file is dual licensed under the terms of the MIT license
-# <https://opensource.org/license/MIT>, and GPL version 3 or later
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
# <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
# these licenses when using or redistributing this software or any of
# the files within it. See the URLs above, or the file `LICENSE`
diff --git a/build-aux/missing b/build-aux/missing
index 625aeb11..8d0eaad2 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/test-driver b/build-aux/test-driver
index b8521a48..9759384a 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 2011-2018 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -42,11 +42,13 @@ print_usage ()
{
cat <<END
Usage:
- test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
- [--expect-failure={yes|no}] [--color-tests={yes|no}]
- [--enable-hard-errors={yes|no}] [--]
+ test-driver --test-name NAME --log-file PATH --trs-file PATH
+ [--expect-failure {yes|no}] [--color-tests {yes|no}]
+ [--enable-hard-errors {yes|no}] [--]
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+See the GNU Automake documentation for information.
END
}
diff --git a/build-aux/ylwrap b/build-aux/ylwrap
index 5943168d..d1533360 100755
--- a/build-aux/ylwrap
+++ b/build-aux/ylwrap
@@ -3,7 +3,7 @@
scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# Written by Tom Tromey <tromey@cygnus.com>.
#
diff --git a/conf/Makefile.in b/conf/Makefile.in
index 40df3983..ee1a12ee 100644
--- a/conf/Makefile.in
+++ b/conf/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -89,18 +89,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = conf
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -208,6 +211,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -221,6 +227,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -240,7 +248,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -287,8 +294,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -299,6 +304,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -348,7 +354,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -356,9 +361,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -368,6 +370,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/conf/pam.conf b/conf/pam.conf
index 3a06bd66..4961a0aa 100644
--- a/conf/pam.conf
+++ b/conf/pam.conf
@@ -13,14 +13,12 @@
#
chfn auth required pam_unix.so
chfn account required pam_unix.so
-chfn password required pam_cracklib.so retry=3
chfn password required pam_unix.so shadow md5 use_authtok
#
# The PAM configuration file for the `chsh' service
#
chsh auth required pam_unix.so
chsh account required pam_unix.so
-chsh password required pam_cracklib.so retry=3
chsh password required pam_unix.so shadow md5 use_authtok
#
# The PAM configuration file for the `ftp' service
@@ -43,7 +41,6 @@ login auth required pam_unix.so
login auth optional pam_group.so
login account requisite pam_time.so
login account required pam_unix.so
-login password required pam_cracklib.so retry=3
login password required pam_unix.so shadow md5 use_authtok
login session required pam_unix.so
#
@@ -63,7 +60,6 @@ other session required pam_deny.so
#
# The PAM configuration file for the `passwd' service
#
-passwd password requisite pam_cracklib.so retry=3
passwd password required pam_unix.so shadow md5 use_authtok
#
# The PAM configuration file for the `rexec' service
@@ -83,7 +79,6 @@ rlogin auth requisite pam_securetty.so
rlogin auth requisite pam_nologin.so
rlogin auth required pam_rhosts_auth.so
rlogin account required pam_unix.so
-rlogin password required pam_cracklib.so retry=3
rlogin password required pam_unix.so shadow md5 use_authtok
rlogin session required pam_unix.so
rlogin session required pam_limits.so
diff --git a/conf/pam_conv1/Makefile.am b/conf/pam_conv1/Makefile.am
index 4c72162b..88993a20 100644
--- a/conf/pam_conv1/Makefile.am
+++ b/conf/pam_conv1/Makefile.am
@@ -8,7 +8,7 @@ EXTRA_DIST = README
AM_YFLAGS = -d
-AM_CFLAGS = $(WARN_CFLAGS)
+AM_CFLAGS = -I$(top_srcdir)/libpam/include $(WARN_CFLAGS)
pam_conv1_CFLAGS = $(AM_CFLAGS) -Wno-unused-function -Wno-sign-compare
diff --git a/conf/pam_conv1/Makefile.in b/conf/pam_conv1/Makefile.in
index 2fc90687..6685d6cc 100644
--- a/conf/pam_conv1/Makefile.in
+++ b/conf/pam_conv1/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -95,18 +95,21 @@ host_triplet = @host@
noinst_PROGRAMS = pam_conv1$(EXEEXT)
subdir = conf/pam_conv1
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -227,6 +230,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -240,6 +246,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -259,7 +267,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -306,8 +313,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -318,6 +323,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -367,7 +373,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -375,9 +380,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -387,6 +389,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -394,7 +397,7 @@ top_srcdir = @top_srcdir@
CLEANFILES = *~
EXTRA_DIST = README
AM_YFLAGS = -d
-AM_CFLAGS = $(WARN_CFLAGS)
+AM_CFLAGS = -I$(top_srcdir)/libpam/include $(WARN_CFLAGS)
pam_conv1_CFLAGS = $(AM_CFLAGS) -Wno-unused-function -Wno-sign-compare
BUILT_SOURCES = pam_conv_y.h
pam_conv1_SOURCES = pam_conv_l.l pam_conv_y.y
@@ -617,7 +620,8 @@ all-am: Makefile $(PROGRAMS)
installdirs:
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -724,7 +728,7 @@ ps-am:
uninstall-am:
-.MAKE: all check install install-am install-strip
+.MAKE: all check install install-am install-exec install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
diff --git a/conf/pam_conv1/pam_conv_y.c b/conf/pam_conv1/pam_conv_y.c
index 7fcf3d44..519307ce 100644
--- a/conf/pam_conv1/pam_conv_y.c
+++ b/conf/pam_conv1/pam_conv_y.c
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -33,6 +34,10 @@
/* C LALR(1) parser skeleton written by Richard Stallman, by
simplifying the original so-called "semantic" parser. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
variables, as they might otherwise be expanded by user macros.
@@ -40,11 +45,11 @@
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
-/* Identify Bison output. */
-#define YYBISON 1
+/* Identify Bison output, and Bison version. */
+#define YYBISON 30706
-/* Bison version. */
-#define YYBISON_VERSION "3.0.5"
+/* Bison version string. */
+#define YYBISON_VERSION "3.7.6"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -61,8 +66,8 @@
-/* Copy the first part of user declarations. */
-#line 1 "pam_conv_y.y" /* yacc.c:339 */
+/* First part of user prologue. */
+#line 1 "pam_conv_y.y"
/*
@@ -85,6 +90,8 @@
#include <ctype.h>
#include <sys/stat.h>
+#include <security/_pam_types.h>
+
extern int yylex(void);
int current_line=1;
@@ -104,26 +111,31 @@
const char *old_to_new_ctrl_flag(const char *old);
void yyerror(const char *format, ...);
-#line 108 "pam_conv_y.c" /* yacc.c:339 */
+#line 115 "pam_conv_y.c"
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
# else
-# define YY_NULLPTR 0
+# define YY_NULLPTR ((void*)0)
# endif
# endif
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
- by #include "y.tab.h". */
+/* Use api.header.include to #include this header
+ instead of duplicating it here. */
#ifndef YY_YY_PAM_CONV_Y_H_INCLUDED
# define YY_YY_PAM_CONV_Y_H_INCLUDED
/* Debug traces. */
@@ -134,34 +146,42 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- NL = 258,
- EOFILE = 259,
- TOK = 260
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ NL = 258, /* NL */
+ EOFILE = 259, /* EOFILE */
+ TOK = 260 /* TOK */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define NL 258
#define EOFILE 259
#define TOK 260
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 43 "pam_conv_y.y" /* yacc.c:355 */
+#line 45 "pam_conv_y.y"
int def;
char *string;
-#line 163 "pam_conv_y.c" /* yacc.c:355 */
-};
+#line 183 "pam_conv_y.c"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -173,37 +193,113 @@ extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_PAM_CONV_Y_H_INCLUDED */
+/* Symbol kind. */
+enum yysymbol_kind_t
+{
+ YYSYMBOL_YYEMPTY = -2,
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYerror = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
+ YYSYMBOL_NL = 3, /* NL */
+ YYSYMBOL_EOFILE = 4, /* EOFILE */
+ YYSYMBOL_TOK = 5, /* TOK */
+ YYSYMBOL_YYACCEPT = 6, /* $accept */
+ YYSYMBOL_complete = 7, /* complete */
+ YYSYMBOL_line = 8, /* line */
+ YYSYMBOL_tokenls = 9, /* tokenls */
+ YYSYMBOL_path = 10, /* path */
+ YYSYMBOL_tok = 11 /* tok */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
-/* Copy the second part of user declarations. */
-#line 180 "pam_conv_y.c" /* yacc.c:358 */
#ifdef short
# undef short
#endif
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+ <limits.h> and (if available) <stdint.h> are included
+ so that the code can choose integer types of a good width. */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_STDINT_H
+# endif
#endif
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+ signed or unsigned integer of at least N bits. In tables they can
+ save space and decrease cache pressure. Promoting to a signed type
+ helps avoid bugs in integer arithmetic. */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
#else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_int16;
+#endif
+
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
#endif
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
#else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+# define YYPTRDIFF_T __PTRDIFF_TYPE__
+# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+# ifndef ptrdiff_t
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYPTRDIFF_T ptrdiff_t
+# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+# define YYPTRDIFF_T long
+# define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
#endif
#ifndef YYSIZE_T
@@ -211,15 +307,28 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned int
+# define YYSIZE_T unsigned
# endif
#endif
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM \
+ YY_CAST (YYPTRDIFF_T, \
+ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
+ ? YYPTRDIFF_MAXIMUM \
+ : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations. */
+typedef int yy_state_fast_t;
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -233,47 +342,37 @@ typedef short int yytype_int16;
# endif
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-# define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define YY_ATTRIBUTE_PURE
+# endif
#endif
#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# define YY_ATTRIBUTE_UNUSED
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
#else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
@@ -286,8 +385,22 @@ typedef short int yytype_int16;
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if !defined yyoverflow
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -352,8 +465,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
@@ -362,17 +474,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss_alloc;
+ yy_state_t yyss_alloc;
YYSTYPE yyvs_alloc;
};
/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
# define YYCOPY_NEEDED 1
@@ -385,11 +497,11 @@ union yyalloc
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
- YYSIZE_T yynewbytes; \
+ YYPTRDIFF_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
+ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / YYSIZEOF (*yyptr); \
} \
while (0)
@@ -401,12 +513,12 @@ union yyalloc
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
# else
# define YYCOPY(Dst, Src, Count) \
do \
{ \
- YYSIZE_T yyi; \
+ YYPTRDIFF_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
@@ -429,17 +541,20 @@ union yyalloc
/* YYNSTATES -- Number of states. */
#define YYNSTATES 17
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
- by yylex, with out-of-bounds checking. */
-#define YYUNDEFTOK 2
+/* YYMAXUTOK -- Last valid token kind. */
#define YYMAXUTOK 260
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, with out-of-bounds checking. */
+#define YYTRANSLATE(YYX) \
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK \
+ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
+ : YYSYMBOL_YYUNDEF)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
-static const yytype_uint8 yytranslate[] =
+ as returned by yylex. */
+static const yytype_int8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -474,38 +589,51 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 56, 56, 58, 59, 60, 66, 130, 136, 139,
- 155, 161
+ 0, 59, 59, 60, 61, 62, 68, 132, 138, 141,
+ 157, 163
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
+/** Accessing symbol of state STATE. */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+ YYSYMBOL. No bounds checking. */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "NL", "EOFILE", "TOK", "$accept",
- "complete", "line", "tokenls", "path", "tok", YY_NULLPTR
+ "\"end of file\"", "error", "\"invalid token\"", "NL", "EOFILE", "TOK",
+ "$accept", "complete", "line", "tokenls", "path", "tok", YY_NULLPTR
};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+ return yytname[yysymbol];
+}
#endif
-# ifdef YYPRINT
+#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
{
0, 256, 257, 258, 259, 260
};
-# endif
+#endif
-#define YYPACT_NINF -9
+#define YYPACT_NINF (-9)
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-9)))
+#define yypact_value_is_default(Yyn) \
+ ((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF -1
+#define YYTABLE_NINF (-1)
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -519,7 +647,7 @@ static const yytype_int8 yypact[] =
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */
-static const yytype_uint8 yydefact[] =
+static const yytype_int8 yydefact[] =
{
2, 0, 1, 0, 3, 5, 11, 4, 0, 7,
0, 0, 10, 8, 0, 6, 9
@@ -534,13 +662,13 @@ static const yytype_int8 yypgoto[] =
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 1, 7, 14, 13, 8
+ 0, 1, 7, 14, 13, 8
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule whose
number is the opposite. If YYTABLE_NINF, syntax error. */
-static const yytype_uint8 yytable[] =
+static const yytype_int8 yytable[] =
{
10, 15, 11, 6, 2, 3, 16, 4, 5, 6,
9, 6, 0, 12
@@ -554,31 +682,31 @@ static const yytype_int8 yycheck[] =
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-static const yytype_uint8 yystos[] =
+static const yytype_int8 yystos[] =
{
0, 7, 0, 1, 3, 4, 5, 8, 11, 3,
11, 11, 5, 10, 9, 3, 11
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
+static const yytype_int8 yyr1[] =
{
0, 6, 7, 7, 7, 7, 8, 8, 9, 9,
10, 11
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
{
0, 2, 0, 2, 2, 2, 6, 2, 0, 2,
1, 1
};
+enum { YYENOMEM = -2 };
+
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
@@ -587,27 +715,26 @@ static const yytype_uint8 yyr2[] =
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (0)
-
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
+#define YYBACKUP(Token, Value) \
+ do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+ while (0)
+
+/* Backward compatibility with an undocumented macro.
+ Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
/* Enable debugging if requested. */
@@ -625,54 +752,58 @@ do { \
} while (0)
/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value); \
+ Kind, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT. |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO. |
+`-----------------------------------*/
static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- FILE *yyo = yyoutput;
- YYUSE (yyo);
+ FILE *yyoutput = yyo;
+ YY_USE (yyoutput);
if (!yyvaluep)
return;
# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+ if (yykind < YYNTOKENS)
+ YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
- YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YY_USE (yykind);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO. |
+`---------------------------*/
static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- YYFPRINTF (yyoutput, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+ YYFPRINTF (yyo, "%s %s (",
+ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
+ yy_symbol_value_print (yyo, yykind, yyvaluep);
+ YYFPRINTF (yyo, ")");
}
/*------------------------------------------------------------------.
@@ -681,7 +812,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
`------------------------------------------------------------------*/
static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -704,21 +835,21 @@ do { \
`------------------------------------------------*/
static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+ int yyrule)
{
- unsigned long int yylno = yyrline[yyrule];
+ int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
+ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+ &yyvsp[(yyi + 1) - (yynrhs)]);
YYFPRINTF (stderr, "\n");
}
}
@@ -733,8 +864,8 @@ do { \
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -757,250 +888,30 @@ int yydebug;
#endif
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
-{
- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULLPTR;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }
- }
-
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- default: /* Avoid compiler warnings. */
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
-}
-#endif /* YYERROR_VERBOSE */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg,
+ yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
- YYUSE (yyvaluep);
+ YY_USE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yytype);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-
-
-/* The lookahead symbol. */
+/* Lookahead token kind. */
int yychar;
/* The semantic value of the lookahead symbol. */
@@ -1009,6 +920,8 @@ YYSTYPE yylval;
int yynerrs;
+
+
/*----------.
| yyparse. |
`----------*/
@@ -1016,43 +929,36 @@ int yynerrs;
int
yyparse (void)
{
- int yystate;
+ yy_state_fast_t yystate = 0;
/* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- 'yyss': related to states.
- 'yyvs': related to semantic values.
+ int yyerrstatus = 0;
- Refer to the stacks through separate pointers, to allow yyoverflow
+ /* Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
+ /* Their size. */
+ YYPTRDIFF_T yystacksize = YYINITDEPTH;
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
+ /* The state stack: array, bottom, top. */
+ yy_state_t yyssa[YYINITDEPTH];
+ yy_state_t *yyss = yyssa;
+ yy_state_t *yyssp = yyss;
- YYSIZE_T yystacksize;
+ /* The semantic value stack: array, bottom, top. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp = yyvs;
int yyn;
+ /* The return value of yyparse. */
int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ /* Lookahead symbol kind. */
+ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -1060,58 +966,60 @@ yyparse (void)
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
-
YYDPRINTF ((stderr, "Starting parse\n"));
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
goto yysetstate;
+
/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
+| yynewstate -- push a new state, which is found in yystate. |
`------------------------------------------------------------*/
- yynewstate:
+yynewstate:
/* In all cases, when you get here, the value and location stacks
have just been pushed. So pushing a state here evens the stacks. */
yyssp++;
- yysetstate:
- *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate. |
+`--------------------------------------------------------------------*/
+yysetstate:
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ YY_IGNORE_USELESS_CAST_BEGIN
+ *yyssp = YY_CAST (yy_state_t, yystate);
+ YY_IGNORE_USELESS_CAST_END
+ YY_STACK_PRINT (yyss, yyssp);
if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+#else
{
/* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
+ YYPTRDIFF_T yysize = yyssp - yyss + 1;
-#ifdef yyoverflow
+# if defined yyoverflow
{
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
memory. */
+ yy_state_t *yyss1 = yyss;
YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
be undefined if yyoverflow is a macro. */
yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
+ &yyss1, yysize * YYSIZEOF (*yyssp),
+ &yyvs1, yysize * YYSIZEOF (*yyvsp),
&yystacksize);
-
yyss = yyss1;
yyvs = yyvs1;
}
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
goto yyexhaustedlab;
@@ -1120,9 +1028,10 @@ yyparse (void)
yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
+ yy_state_t *yyss1 = yyss;
union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ YY_CAST (union yyalloc *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
if (! yyptr)
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
@@ -1132,30 +1041,30 @@ yyparse (void)
YYSTACK_FREE (yyss1);
}
# endif
-#endif /* no yyoverflow */
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ YY_IGNORE_USELESS_CAST_BEGIN
+ YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+ YY_CAST (long, yystacksize)));
+ YY_IGNORE_USELESS_CAST_END
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
if (yystate == YYFINAL)
YYACCEPT;
goto yybackup;
+
/*-----------.
| yybackup. |
`-----------*/
yybackup:
-
/* Do appropriate processing given the current state. Read a
lookahead token if we need one and don't already have one. */
@@ -1166,18 +1075,29 @@ yybackup:
/* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
if (yychar == YYEMPTY)
{
- YYDPRINTF ((stderr, "Reading a token: "));
+ YYDPRINTF ((stderr, "Reading a token\n"));
yychar = yylex ();
}
if (yychar <= YYEOF)
{
- yychar = yytoken = YYEOF;
+ yychar = YYEOF;
+ yytoken = YYSYMBOL_YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
+ else if (yychar == YYerror)
+ {
+ /* The scanner already issued an error message, process directly
+ to error recovery. But do not keep the error token as
+ lookahead, it is too special and may lead us to an endless
+ loop in error recovery. */
+ yychar = YYUNDEF;
+ yytoken = YYSYMBOL_YYerror;
+ goto yyerrlab1;
+ }
else
{
yytoken = YYTRANSLATE (yychar);
@@ -1205,15 +1125,13 @@ yybackup:
/* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
yystate = yyn;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
goto yynewstate;
@@ -1228,7 +1146,7 @@ yydefault:
/*-----------------------------.
-| yyreduce -- Do a reduction. |
+| yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
/* yyn is the number of a rule to reduce with. */
@@ -1248,17 +1166,17 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 5:
-#line 60 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 5: /* complete: complete EOFILE */
+#line 62 "pam_conv_y.y"
+ {
return 0;
}
-#line 1257 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1175 "pam_conv_y.c"
break;
- case 6:
-#line 66 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 6: /* line: tok tok tok path tokenls NL */
+#line 68 "pam_conv_y.y"
+ {
char *filename;
FILE *conf;
int i;
@@ -1322,28 +1240,28 @@ yyreduce:
fclose(conf);
}
-#line 1326 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1244 "pam_conv_y.c"
break;
- case 7:
-#line 130 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 7: /* line: error NL */
+#line 132 "pam_conv_y.y"
+ {
yyerror("malformed line");
}
-#line 1334 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1252 "pam_conv_y.c"
break;
- case 8:
-#line 136 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 8: /* tokenls: %empty */
+#line 138 "pam_conv_y.y"
+ {
(yyval.string)=NULL;
}
-#line 1342 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1260 "pam_conv_y.c"
break;
- case 9:
-#line 139 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 9: /* tokenls: tokenls tok */
+#line 141 "pam_conv_y.y"
+ {
int len;
if ((yyvsp[-1].string)) {
@@ -1356,28 +1274,29 @@ yyreduce:
(yyval.string) = (yyvsp[0].string);
}
}
-#line 1360 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1278 "pam_conv_y.c"
break;
- case 10:
-#line 155 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 10: /* path: TOK */
+#line 157 "pam_conv_y.y"
+ {
/* XXX - this could be used to check if file present */
(yyval.string) = strdup(yytext);
}
-#line 1369 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1287 "pam_conv_y.c"
break;
- case 11:
-#line 161 "pam_conv_y.y" /* yacc.c:1648 */
- {
+ case 11: /* tok: TOK */
+#line 163 "pam_conv_y.y"
+ {
(yyval.string) = strdup(yytext);
}
-#line 1377 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1295 "pam_conv_y.c"
break;
-#line 1381 "pam_conv_y.c" /* yacc.c:1648 */
+#line 1299 "pam_conv_y.c"
+
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1391,25 +1310,23 @@ yyreduce:
case of YYERROR or YYBACKUP, subsequent parser actions might lead
to an incorrect destructor call or verbose syntax error message
before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
YYPOPSTACK (yylen);
yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
/* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
+ {
+ const int yylhs = yyr1[yyn] - YYNTOKENS;
+ const int yyi = yypgoto[yylhs] + *yyssp;
+ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+ ? yytable[yyi]
+ : yydefgoto[yylhs]);
+ }
goto yynewstate;
@@ -1420,50 +1337,14 @@ yyreduce:
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
+ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
-#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
- {
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
- }
-# undef YYSYNTAX_ERROR
-#endif
}
-
-
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
@@ -1492,12 +1373,10 @@ yyerrlab:
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
+ /* Pacify compilers when the user code never invokes YYERROR and the
+ label yyerrorlab therefore never appears in user code. */
+ if (0)
+ YYERROR;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
@@ -1514,13 +1393,14 @@ yyerrorlab:
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
+ /* Pop stack until we find a state that shifts the error token. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
{
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ yyn += YYSYMBOL_YYerror;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
{
yyn = yytable[yyn];
if (0 < yyn)
@@ -1534,7 +1414,7 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ YY_ACCESSING_SYMBOL (yystate), yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -1546,7 +1426,7 @@ yyerrlab1:
/* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
@@ -1559,6 +1439,7 @@ yyacceptlab:
yyresult = 0;
goto yyreturn;
+
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
@@ -1566,16 +1447,21 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#if !defined yyoverflow || YYERROR_VERBOSE
+
+#if !defined yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
yyerror (YY_("memory exhausted"));
yyresult = 2;
- /* Fall through. */
+ goto yyreturn;
#endif
+
+/*-------------------------------------------------------.
+| yyreturn -- parsing is finished, clean up and return. |
+`-------------------------------------------------------*/
yyreturn:
if (yychar != YYEMPTY)
{
@@ -1592,20 +1478,18 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
+
return yyresult;
}
-#line 165 "pam_conv_y.y" /* yacc.c:1907 */
+
+#line 167 "pam_conv_y.y"
const char *old_to_new_ctrl_flag(const char *old)
@@ -1628,6 +1512,7 @@ const char *old_to_new_ctrl_flag(const char *old)
return clist[i];
}
+PAM_FORMAT((printf, 1, 2))
void yyerror(const char *format, ...)
{
va_list args;
diff --git a/conf/pam_conv1/pam_conv_y.h b/conf/pam_conv1/pam_conv_y.h
index a2151d19..17bdcea1 100644
--- a/conf/pam_conv1/pam_conv_y.h
+++ b/conf/pam_conv1/pam_conv_y.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -30,6 +31,10 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
#ifndef YY_YY_PAM_CONV_Y_H_INCLUDED
# define YY_YY_PAM_CONV_Y_H_INCLUDED
/* Debug traces. */
@@ -40,34 +45,42 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- NL = 258,
- EOFILE = 259,
- TOK = 260
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ NL = 258, /* NL */
+ EOFILE = 259, /* EOFILE */
+ TOK = 260 /* TOK */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define NL 258
#define EOFILE 259
#define TOK 260
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 43 "pam_conv_y.y" /* yacc.c:1910 */
+#line 45 "pam_conv_y.y"
int def;
char *string;
-#line 69 "pam_conv_y.h" /* yacc.c:1910 */
-};
+#line 82 "pam_conv_y.h"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
diff --git a/conf/pam_conv1/pam_conv_y.y b/conf/pam_conv1/pam_conv_y.y
index c971abf4..66d80440 100644
--- a/conf/pam_conv1/pam_conv_y.y
+++ b/conf/pam_conv1/pam_conv_y.y
@@ -20,6 +20,8 @@
#include <ctype.h>
#include <sys/stat.h>
+#include <security/_pam_types.h>
+
extern int yylex(void);
int current_line=1;
@@ -184,6 +186,7 @@ const char *old_to_new_ctrl_flag(const char *old)
return clist[i];
}
+PAM_FORMAT((printf, 1, 2))
void yyerror(const char *format, ...)
{
va_list args;
diff --git a/config.h.in b/config.h.in
index b43f19b2..89cf309b 100644
--- a/config.h.in
+++ b/config.h.in
@@ -22,12 +22,6 @@
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-/* Define to 1 if you have the <crack.h> header file. */
-#undef HAVE_CRACK_H
-
-/* Define to 1 if you have the `crypt_gensalt_r' function. */
-#undef HAVE_CRYPT_GENSALT_R
-
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
@@ -145,15 +139,9 @@
/* Define to 1 if audit support should be compiled in. */
#undef HAVE_LIBAUDIT
-/* Define to 1 if xcrypt support should be compiled in. */
-#undef HAVE_LIBXCRYPT
-
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
-/* Define to 1 if you have the <linux/magic.h> header file. */
-#undef HAVE_LINUX_MAGIC_H
-
/* Define to 1 if you have the `logwtmp' function. */
#undef HAVE_LOGWTMP
@@ -264,9 +252,6 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
-/* Define to 1 if you have the <sys/vfs.h> header file. */
-#undef HAVE_SYS_VFS_H
-
/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
@@ -291,9 +276,6 @@
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
-/* Define to 1 if you have the <xcrypt.h> header file. */
-#undef HAVE_XCRYPT_H
-
/* Define to 1 if you have the `yperr_string' function. */
#undef HAVE_YPERR_STRING
@@ -342,6 +324,9 @@
/* libpam should observe a global authentication lock */
#undef PAM_LOCKING
+/* libpam_misc misc_conv() buffer size. */
+#undef PAM_MISC_CONV_BUFSIZE
+
/* Path where mails are stored */
#undef PAM_PATH_MAILDIR
@@ -372,7 +357,7 @@
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
-/* define if your compiler has __att ribute__ ((unused)) */
+/* Define if the compiler supports __attribute__((unused)) */
#undef UNUSED
/* Define to 1 if the lckpwdf function should be used */
@@ -406,6 +391,9 @@
/* Version number of package */
#undef VERSION
+/* OpenSSL provides crypto algorithm for hmac */
+#undef WITH_OPENSSL
+
/* Defined if SE Linux support is compiled in */
#undef WITH_SELINUX
diff --git a/configure b/configure
index b22e1db6..4a12fad7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Linux-PAM 1.4.0.
+# Generated by GNU Autoconf 2.69 for Linux-PAM 1.5.2.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Linux-PAM'
PACKAGE_TARNAME='Linux-PAM'
-PACKAGE_VERSION='1.4.0'
-PACKAGE_STRING='Linux-PAM 1.4.0'
+PACKAGE_VERSION='1.5.2'
+PACKAGE_STRING='Linux-PAM 1.5.2'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -636,12 +636,10 @@ am__EXEEXT_TRUE
LTLIBOBJS
COND_BUILD_PAM_USERDB_FALSE
COND_BUILD_PAM_USERDB_TRUE
+COND_BUILD_PAM_UNIX_FALSE
+COND_BUILD_PAM_UNIX_TRUE
COND_BUILD_PAM_TTY_AUDIT_FALSE
COND_BUILD_PAM_TTY_AUDIT_TRUE
-COND_BUILD_PAM_TALLY2_FALSE
-COND_BUILD_PAM_TALLY2_TRUE
-COND_BUILD_PAM_TALLY_FALSE
-COND_BUILD_PAM_TALLY_TRUE
COND_BUILD_PAM_SETQUOTA_FALSE
COND_BUILD_PAM_SETQUOTA_TRUE
COND_BUILD_PAM_SEPERMIT_FALSE
@@ -656,8 +654,7 @@ COND_BUILD_PAM_LASTLOG_FALSE
COND_BUILD_PAM_LASTLOG_TRUE
COND_BUILD_PAM_KEYINIT_FALSE
COND_BUILD_PAM_KEYINIT_TRUE
-COND_BUILD_PAM_CRACKLIB_FALSE
-COND_BUILD_PAM_CRACKLIB_TRUE
+systemdunitdir
POSUB
LTLIBINTL
LIBINTL
@@ -686,6 +683,10 @@ XML_CATALOG_FILE
XMLLINT
XSLTPROC
LIBOBJS
+COND_USE_OPENSSL_FALSE
+COND_USE_OPENSSL_TRUE
+STRINGPARAM_HMAC
+CRYPTO_LIBS
STRINGPARAM_VENDORDIR
ECONF_LIBS
ECONF_CFLAGS
@@ -696,13 +697,14 @@ NSL_LIBS
NSL_CFLAGS
TIRPC_LIBS
TIRPC_CFLAGS
+LIBDB
+LIBCRYPT
+CRYPT_LIBS
+CRYPT_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
-LIBDB
-LIBCRYPT
LIBAUDIT
-LIBCRACK
LIBDL
pam_xauth_path
SCONFIGDIR
@@ -716,9 +718,8 @@ LIBPRELUDE_CFLAGS
LIBPRELUDE_CONFIG
HAVE_DOC_FALSE
HAVE_DOC_TRUE
-PIE_LDFLAGS
-PIE_CFLAGS
-libc_cv_fpie
+EXE_LDFLAGS
+EXE_CFLAGS
HAVE_VERSIONING_FALSE
HAVE_VERSIONING_TRUE
BUILD_LDFLAGS
@@ -726,9 +727,6 @@ BUILD_CFLAGS
BUILD_CPPFLAGS
CC_FOR_BUILD
WARN_CFLAGS
-pam_cv_ld_O1
-pam_cv_ld_no_undefined
-pam_cv_ld_as_needed
LEXLIB
LEX_OUTPUT_ROOT
LEX
@@ -875,7 +873,6 @@ enable_read_both_confs
enable_lckpwdf
with_mailspool
with_xauth
-enable_cracklib
enable_audit
with_randomdev
enable_db
@@ -885,6 +882,7 @@ enable_usergroups
enable_selinux
enable_econf
enable_vendordir
+enable_openssl
enable_regenerate_docu
with_xml_catalog
enable_nls
@@ -893,9 +891,10 @@ with_libiconv_prefix
with_libintl_prefix
with_uidmin
with_sysuidmin
-with_kerneloverflowuid
-enable_tally
-enable_tally2
+with_kernel_overflow_uid
+with_systemdunitdir
+enable_unix
+with_misc_conv_bufsize
'
ac_precious_vars='build_alias
host_alias
@@ -912,6 +911,8 @@ YFLAGS
PKG_CONFIG
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
+CRYPT_CFLAGS
+CRYPT_LIBS
TIRPC_CFLAGS
TIRPC_LIBS
NSL_CFLAGS
@@ -1458,7 +1459,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Linux-PAM 1.4.0 to adapt to many kinds of systems.
+\`configure' configures Linux-PAM 1.5.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1528,7 +1529,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Linux-PAM 1.4.0:";;
+ short | recursive ) echo "Configuration of Linux-PAM 1.5.2:";;
esac
cat <<\_ACEOF
@@ -1563,7 +1564,6 @@ Optional Features:
--enable-read-both-confs
read both /etc/pam.d and /etc/pam.conf files
--disable-lckpwdf do not use the lckpwdf function
- --enable-cracklib build deprecated pam_cracklib module
--disable-audit do not enable audit support
--enable-db=(db|ndbm|yes|no)
Default behavior 'yes', which is to check for libdb
@@ -1575,12 +1575,12 @@ Optional Features:
--disable-econf do not use libeconf
--enable-vendordir=DIR Directory for distribution provided configuration
files
+ --enable-openssl use OpenSSL crypto libraries
--disable-regenerate-docu
Don't re-build documentation from XML sources
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
- --enable-tally build deprecated pam_tally module
- --enable-tally2 build deprecated pam_tally2 module
+ --disable-unix do not build pam_unix module
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1616,6 +1616,11 @@ Optional Packages:
default value for system user min uid (101)
--with-kernel-overflow-uid=<number>
kernel overflow uid, default (uint16_t)-2=65534
+ --with-systemdunitdir=DIR
+ path to systemd service directory
+ --with-misc-conv-bufsize=<number>
+ Size of input buffer for libpam_misc's misc_conv()
+ conversation function, default=4096
Some influential environment variables:
CC C compiler command
@@ -1639,6 +1644,9 @@ Some influential environment variables:
directories to add to pkg-config's search path
PKG_CONFIG_LIBDIR
path overriding pkg-config's built-in search path
+ CRYPT_CFLAGS
+ C compiler flags for CRYPT, overriding pkg-config
+ CRYPT_LIBS linker flags for CRYPT, overriding pkg-config
TIRPC_CFLAGS
C compiler flags for TIRPC, overriding pkg-config
TIRPC_LIBS linker flags for TIRPC, overriding pkg-config
@@ -1714,7 +1722,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Linux-PAM configure 1.4.0
+Linux-PAM configure 1.5.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2074,7 +2082,7 @@ else
/* Declare this function with the same prototype as __builtin_$2.
This removes a warning about conflicting types for built-in function $2 */
__typeof__(__builtin_$2) $2;
-__typeof__(__builtin_$2) *f = $2;
+__typeof__(__builtin_$2) *volatile f = $2;
int
main ()
@@ -2265,7 +2273,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Linux-PAM $as_me 1.4.0, which was
+It was created by Linux-PAM $as_me 1.5.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2822,12 +2830,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
@@ -3132,7 +3135,7 @@ fi
# Define the identity of the package.
PACKAGE='Linux-PAM'
- VERSION='1.4.0'
+ VERSION='1.5.2'
cat >>confdefs.h <<_ACEOF
@@ -13512,95 +13515,139 @@ $as_echo "no" >&6; }
fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports --as-needed" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports --as-needed" >&5
$as_echo_n "checking whether ld supports --as-needed... " >&6; }
if ${pam_cv_ld_as_needed+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,--as-needed 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- pam_cv_ld_as_needed=yes
- LDFLAGS="$LDFLAGS -Wl,--as-needed"
- else
- pam_cv_ld_as_needed=no
- fi
- rm -f conftest*
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--as-needed"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ pam_cv_ld_as_needed=yes
+else
+ pam_cv_ld_as_needed=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$saved_LDFLAGS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_ld_as_needed" >&5
$as_echo "$pam_cv_ld_as_needed" >&6; }
+ if test $pam_cv_ld_as_needed = yes; then :
+ LDFLAGS="$LDFLAGS -Wl,--as-needed"
+fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports --no-undefined" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports --no-undefined" >&5
$as_echo_n "checking whether ld supports --no-undefined... " >&6; }
if ${pam_cv_ld_no_undefined+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,--no-undefined 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- pam_cv_ld_no_undefined=yes
- LDFLAGS="$LDFLAGS -Wl,--no-undefined"
- else
- pam_cv_ld_no_undefined=no
- fi
- rm -f conftest*
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--no-undefined"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ pam_cv_ld_no_undefined=yes
+else
+ pam_cv_ld_no_undefined=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$saved_LDFLAGS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_ld_no_undefined" >&5
$as_echo "$pam_cv_ld_no_undefined" >&6; }
+ if test $pam_cv_ld_no_undefined = yes; then :
+ LDFLAGS="$LDFLAGS -Wl,--no-undefined"
+fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports -O1" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports -O1" >&5
$as_echo_n "checking whether ld supports -O1... " >&6; }
if ${pam_cv_ld_O1+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,-O1 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- pam_cv_ld_O1=yes
- LDFLAGS="$LDFLAGS -Wl,-O1"
- else
- pam_cv_ld_O1=no
- fi
- rm -f conftest*
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-O1"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ pam_cv_ld_O1=yes
+else
+ pam_cv_ld_O1=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$saved_LDFLAGS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_ld_O1" >&5
$as_echo "$pam_cv_ld_O1" >&6; }
+ if test $pam_cv_ld_O1 = yes; then :
+ LDFLAGS="$LDFLAGS -Wl,-O1"
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports \"-z now\"" >&5
+$as_echo_n "checking whether ld supports \"-z now\"... " >&6; }
+if ${pam_cv_ld_z_now+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-z,now"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int
+main ()
+{
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ pam_cv_ld_z_now=yes
+else
+ pam_cv_ld_z_now=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$saved_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_ld_z_now" >&5
+$as_echo "$pam_cv_ld_z_now" >&6; }
+ if test $pam_cv_ld_z_now = yes; then :
+ ZNOW_LDFLAGS="-Wl,-z,now"
+else
+ ZNOW_LDFLAGS=
+fi
# Check whether --enable-largefile was given.
@@ -13804,72 +13851,1556 @@ rm -rf conftest*
fi
-Werror_option=
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -W" >&5
+$as_echo_n "checking whether $CC handles -W... " >&6; }
+if ${gl_cv_warn_CFLAGS__W+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -W"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__W=yes
+else
+ gl_cv_warn_CFLAGS__W=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__W" >&5
+$as_echo "$gl_cv_warn_CFLAGS__W" >&6; }
+if test "x$gl_cv_warn_CFLAGS__W" = xyes; then :
+ as_fn_append WARN_CFLAGS " -W"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wall" >&5
+$as_echo_n "checking whether $CC handles -Wall... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wall+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wall"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wall=yes
+else
+ gl_cv_warn_CFLAGS__Wall=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wall" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wall" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wall" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wall"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wbad-function-cast" >&5
+$as_echo_n "checking whether $CC handles -Wbad-function-cast... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wbad_function_cast+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wbad-function-cast"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wbad_function_cast=yes
+else
+ gl_cv_warn_CFLAGS__Wbad_function_cast=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wbad_function_cast" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wbad_function_cast" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wbad_function_cast" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wbad-function-cast"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wcast-align" >&5
+$as_echo_n "checking whether $CC handles -Wcast-align... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wcast_align+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wcast-align"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wcast_align=yes
+else
+ gl_cv_warn_CFLAGS__Wcast_align=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wcast_align" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wcast_align" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wcast_align" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wcast-align"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wcast-align=strict" >&5
+$as_echo_n "checking whether $CC handles -Wcast-align=strict... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wcast_align_strict+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wcast-align=strict"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wcast_align_strict=yes
+else
+ gl_cv_warn_CFLAGS__Wcast_align_strict=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wcast_align_strict" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wcast_align_strict" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wcast_align_strict" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wcast-align=strict"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wcast-qual" >&5
+$as_echo_n "checking whether $CC handles -Wcast-qual... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wcast_qual+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wcast-qual"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wcast_qual=yes
+else
+ gl_cv_warn_CFLAGS__Wcast_qual=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wcast_qual" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wcast_qual" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wcast_qual" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wcast-qual"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wdeprecated" >&5
+$as_echo_n "checking whether $CC handles -Wdeprecated... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wdeprecated+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wdeprecated"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wdeprecated=yes
+else
+ gl_cv_warn_CFLAGS__Wdeprecated=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wdeprecated" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wdeprecated" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wdeprecated" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wdeprecated"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Winline" >&5
+$as_echo_n "checking whether $CC handles -Winline... " >&6; }
+if ${gl_cv_warn_CFLAGS__Winline+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Winline"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Winline=yes
+else
+ gl_cv_warn_CFLAGS__Winline=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Winline" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Winline" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Winline" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Winline"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmain" >&5
+$as_echo_n "checking whether $CC handles -Wmain... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wmain+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmain"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wmain=yes
+else
+ gl_cv_warn_CFLAGS__Wmain=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmain" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wmain" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wmain" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wmain"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmissing-declarations" >&5
+$as_echo_n "checking whether $CC handles -Wmissing-declarations... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wmissing_declarations+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-declarations"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wmissing_declarations=yes
+else
+ gl_cv_warn_CFLAGS__Wmissing_declarations=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmissing_declarations" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wmissing_declarations" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wmissing_declarations" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wmissing-declarations"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmissing-format-attribute" >&5
+$as_echo_n "checking whether $CC handles -Wmissing-format-attribute... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wmissing_format_attribute+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-format-attribute"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wmissing_format_attribute=yes
+else
+ gl_cv_warn_CFLAGS__Wmissing_format_attribute=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmissing_format_attribute" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wmissing_format_attribute" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wmissing_format_attribute" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wmissing-format-attribute"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wmissing-prototypes" >&5
+$as_echo_n "checking whether $CC handles -Wmissing-prototypes... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wmissing_prototypes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wmissing-prototypes"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wmissing_prototypes=yes
+else
+ gl_cv_warn_CFLAGS__Wmissing_prototypes=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wmissing_prototypes" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wmissing_prototypes" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wmissing_prototypes" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wmissing-prototypes"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wp64" >&5
+$as_echo_n "checking whether $CC handles -Wp64... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wp64+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wp64"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wp64=yes
+else
+ gl_cv_warn_CFLAGS__Wp64=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wp64" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wp64" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wp64" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wp64"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wpointer-arith" >&5
+$as_echo_n "checking whether $CC handles -Wpointer-arith... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wpointer_arith+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wpointer-arith"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wpointer_arith=yes
+else
+ gl_cv_warn_CFLAGS__Wpointer_arith=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wpointer_arith" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wpointer_arith" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wpointer_arith" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wpointer-arith"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wreturn-type" >&5
+$as_echo_n "checking whether $CC handles -Wreturn-type... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wreturn_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wreturn-type"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wreturn_type=yes
+else
+ gl_cv_warn_CFLAGS__Wreturn_type=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wreturn_type" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wreturn_type" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wreturn_type" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wreturn-type"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wshadow" >&5
+$as_echo_n "checking whether $CC handles -Wshadow... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wshadow+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wshadow"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wshadow=yes
+else
+ gl_cv_warn_CFLAGS__Wshadow=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wshadow" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wshadow" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wshadow" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wshadow"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wstrict-prototypes" >&5
+$as_echo_n "checking whether $CC handles -Wstrict-prototypes... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wstrict_prototypes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wstrict-prototypes"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wstrict_prototypes=yes
+else
+ gl_cv_warn_CFLAGS__Wstrict_prototypes=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wstrict_prototypes" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wstrict_prototypes" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wstrict_prototypes" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wstrict-prototypes"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wuninitialized" >&5
+$as_echo_n "checking whether $CC handles -Wuninitialized... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wuninitialized+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wuninitialized"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wuninitialized=yes
+else
+ gl_cv_warn_CFLAGS__Wuninitialized=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wuninitialized" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wuninitialized" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wuninitialized" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wuninitialized"
+fi
+
+
+if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Wwrite-strings" >&5
+$as_echo_n "checking whether $CC handles -Wwrite-strings... " >&6; }
+if ${gl_cv_warn_CFLAGS__Wwrite_strings+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Wwrite-strings"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Wwrite_strings=yes
+else
+ gl_cv_warn_CFLAGS__Wwrite_strings=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Wwrite_strings" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Wwrite_strings" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Wwrite_strings" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Wwrite-strings"
+fi
+
+
# Check whether --enable-Werror was given.
if test "${enable_Werror+set}" = set; then :
enableval=$enable_Werror; case $enableval in
- yes) Werror_option=-Werror ;;
- no) ;;
- *) as_fn_error $? "bad value $enableval for Werror option" "$LINENO" 5 ;;
- esac
-fi
-
-
-if eval 'test "x$GCC" = "xyes" -a "$CC" != "icc"'; then
- for flag in \
- -W \
- -Wall \
- -Wbad-function-cast \
- -Wcast-align \
- -Wcast-qual \
- -Wmissing-declarations \
- -Wmissing-prototypes \
- -Wpointer-arith \
- -Wreturn-type \
- -Wstrict-prototypes \
- -Wwrite-strings \
- -Winline \
- -Wshadow \
- $Werror_option
- do
- case "$CFLAGS" in
-"$flag" | "$flag "* | *" $flag" | *" $flag "* )
- :
- ;;
-*)
- WARN_CFLAGS="$WARN_CFLAGS $flag"
- ;;
-esac
+ yes) if test x${gl_unknown_warnings_are_errors+set} = x; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror -Wunknown-warning-option" >&5
+$as_echo_n "checking whether $CC handles -Werror -Wunknown-warning-option... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
- done
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror -Wunknown-warning-option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=yes
+else
+ gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option=no
fi
-if eval 'test "x$CC" = "xicc"'; then
- for flag in \
- -Wall \
- -Wmissing-prototypes \
- -Wpointer-arith \
- -Wreturn-type \
- -Wstrict-prototypes \
- -Wwrite-strings \
- -Wshadow \
- -Wp64 \
- -Wdeprecated \
- -Wuninitialized \
- -Wmain
- do
- case "$CFLAGS" in
-"$flag" | "$flag "* | *" $flag" | *" $flag "* )
- :
- ;;
-*)
- WARN_CFLAGS="$WARN_CFLAGS $flag"
- ;;
-esac
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
- done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror__Wunknown_warning_option" = xyes; then :
+ gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'
+else
+ gl_unknown_warnings_are_errors=
fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC handles -Werror" >&5
+$as_echo_n "checking whether $CC handles -Werror... " >&6; }
+if ${gl_cv_warn_CFLAGS__Werror+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_save_compiler_FLAGS="$CFLAGS"
+ as_fn_append CFLAGS " $gl_unknown_warnings_are_errors -Werror"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_warn_CFLAGS__Werror=yes
+else
+ gl_cv_warn_CFLAGS__Werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_CFLAGS__Werror" >&5
+$as_echo "$gl_cv_warn_CFLAGS__Werror" >&6; }
+if test "x$gl_cv_warn_CFLAGS__Werror" = xyes; then :
+ as_fn_append WARN_CFLAGS " -Werror"
+fi
+
+ ;;
+ no) ;;
+ *) as_fn_error $? "bad value $enableval for Werror option" "$LINENO" 5 ;;
+ esac
+fi
+
+
+
if test "x${CC_FOR_BUILD+set}" != "xset" ; then
if test "x$cross_compiling" = "xyes" ; then
@@ -13953,52 +15484,41 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__" >&5
-$as_echo_n "checking for __attribute__... " >&6; }
-if ${ac_cv___attribute__+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((unused))" >&5
+$as_echo_n "checking for __attribute__((unused))... " >&6; }
+if ${pam_cv_attribute_unused+:} false; then :
$as_echo_n "(cached) " >&6
else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-#include <stdlib.h>
-static void foo (void) __attribute__ ((unused));
-
-static void
-foo (void)
-{
- exit(1);
-}
-
+int fun(int i __attribute__((unused)));
int
main ()
{
-
- exit (0);
-
+return fun(0);
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv___attribute__=yes
+ pam_cv_attribute_unused=yes
else
- ac_cv___attribute__=no
+ pam_cv_attribute_unused=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-
-if test "$ac_cv___attribute__" = "yes"; then
-
-$as_echo "#define UNUSED __attribute__ ((unused))" >>confdefs.h
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_attribute_unused" >&5
+$as_echo "$pam_cv_attribute_unused" >&6; }
+ if test "$pam_cv_attribute_unused" = yes; then :
+ unused='__attribute__((unused))'
else
- $as_echo "#define UNUSED /**/" >>confdefs.h
-
+ unused=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv___attribute__" >&5
-$as_echo "$ac_cv___attribute__" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define UNUSED $unused
+_ACEOF
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .symver assembler directive" >&5
@@ -14078,43 +15598,72 @@ fi
# Check whether --enable-pie was given.
if test "${enable_pie+set}" = set; then :
- enableval=$enable_pie; USE_PIE=$enableval
+ enableval=$enable_pie;
else
- USE_PIE=yes
+ enable_pie=check
fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie" >&5
-$as_echo_n "checking for -fpie... " >&6; }
-if ${libc_cv_fpie+:} false; then :
+case "$enable_pie" in
+ no) ;;
+ yes|check)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fpie/-pie support" >&5
+$as_echo_n "checking for -fpie/-pie support... " >&6; }
+if ${pam_cv_pie+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat > conftest.c <<EOF
-int foo;
-main () { return 0;}
-EOF
- if test "$USE_PIE" = "yes" -a "$CC" != "icc" &&
- { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
- -o conftest conftest.c 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }
- then
- libc_cv_fpie=yes
- PIE_CFLAGS="-fpie"
- PIE_LDFLAGS="-pie"
- else
- libc_cv_fpie=no
- PIE_CFLAGS=""
- PIE_LDFLAGS=""
- fi
- rm -f conftest*
+ saved_CFLAGS="$CFLAGS"
+ saved_LDFLAGS="$LDFLAGS"
+ CFLAGS="$CFLAGS -fpie"
+ LDFLAGS="$LDFLAGS -pie"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ pam_cv_pie=yes
+else
+ pam_cv_pie=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$saved_LDFLAGS"
+ CFLAGS="$saved_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pam_cv_pie" >&5
+$as_echo "$pam_cv_pie" >&6; }
+ if test "$pam_cv_pie" = yes; then :
+ enable_pie=yes
+else
+ if test "$enable_pie" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "requested -fpie/-pie support not found
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ enable_pie=no
+fi
+fi
+ ;;
+ *) as_fn_error $? "bad value $enable_pie for --enable-pie option" "$LINENO" 5 ;;
+esac
+
+if test "$enable_pie" = yes; then :
+ PIE_CFLAGS="-fpie"
+ PIE_LDFLAGS="-pie"
+else
+ PIE_CFLAGS=
+ PIE_LDFLAGS=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_fpie" >&5
-$as_echo "$libc_cv_fpie" >&6; }
+EXE_CFLAGS="$PIE_CFLAGS"
+EXE_LDFLAGS="$PIE_LDFLAGS $ZNOW_LDFLAGS"
@@ -14229,6 +15778,7 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -14310,21 +15860,24 @@ $as_echo "yes" >&6; }
$as_echo "no" >&6; }
fi
if test "$LIBPRELUDE_CONFIG" = "no" ; then
- echo "*** The libprelude-config script installed by LIBPRELUDE could not be found"
- echo "*** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in"
- echo "*** your path, or set the LIBPRELUDE_CONFIG environment variable to the"
- echo "*** full path to libprelude-config."
+ if test x$libprelude_config_prefix != x ; then
+ echo "*** The libprelude-config script installed by LIBPRELUDE could not be found"
+ echo "*** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the LIBPRELUDE_CONFIG environment variable to the"
+ echo "*** full path to libprelude-config."
+ fi
else
if test -f conf.libpreludetest ; then
:
else
echo "*** Could not run libprelude test program, checking why..."
CFLAGS="$CFLAGS $LIBPRELUDE_CFLAGS"
- LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
+ LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
LIBS="$LIBS $LIBPRELUDE_LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -14358,7 +15911,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
- LDFLAGS="$ac_save_LDFLAGS"
+ LDFLAGS="$ac_save_LDFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
@@ -14643,81 +16196,6 @@ See \`config.log' for more details" "$LINENO" 5; } ;;
esac
-# Check whether --enable-cracklib was given.
-if test "${enable_cracklib+set}" = set; then :
- enableval=$enable_cracklib;
-else
- enable_cracklib=no
-fi
-
-LIBCRACK=""
-case "$enable_cracklib" in
- no) ;;
- yes|check)
- for ac_header in crack.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "crack.h" "ac_cv_header_crack_h" "$ac_includes_default"
-if test "x$ac_cv_header_crack_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CRACK_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FascistCheck in -lcrack" >&5
-$as_echo_n "checking for FascistCheck in -lcrack... " >&6; }
-if ${ac_cv_lib_crack_FascistCheck+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrack $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char FascistCheck ();
-int
-main ()
-{
-return FascistCheck ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_crack_FascistCheck=yes
-else
- ac_cv_lib_crack_FascistCheck=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crack_FascistCheck" >&5
-$as_echo "$ac_cv_lib_crack_FascistCheck" >&6; }
-if test "x$ac_cv_lib_crack_FascistCheck" = xyes; then :
- LIBCRACK="-lcrack"
-fi
-
-fi
-
-done
-
- if test -z "$LIBCRACK"; then
- if test "$enable_cracklib" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to find cracklib
-See \`config.log' for more details" "$LINENO" 5; }
- fi
- fi
- ;;
- *) as_fn_error $? "bad value $enable_cracklib for --enable-cracklib option" "$LINENO" 5 ;;
-esac
-
-
# Check whether --enable-audit was given.
if test "${enable_audit+set}" = set; then :
enableval=$enable_audit; WITH_LIBAUDIT=$enableval
@@ -14782,7 +16260,7 @@ fi
fi
- if test -n "$LIBAUDIT" -a "$ac_cv_header_libaudit_h" != "no" ; then
+ if test -n "$LIBAUDIT" && test "$ac_cv_header_libaudit_h" != "no" ; then
$as_echo "#define HAVE_LIBAUDIT 1" >>confdefs.h
@@ -14808,27 +16286,318 @@ else
fi
-for ac_header in xcrypt.h crypt.h
+for ac_header in crypt.h
do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ ac_fn_c_check_header_mongrel "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default"
+if test "x$ac_cv_header_crypt_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define HAVE_CRYPT_H 1
_ACEOF
fi
done
-if test "x$ac_cv_header_xcrypt_h" = "xyes"; then :
- crypt_libs="xcrypt crypt"
+
+BACKUP_LIBS=$LIBS
+LIBCRYPT=""
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- crypt_libs="crypt"
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
fi
-BACKUP_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcrypt" >&5
+$as_echo_n "checking for libcrypt... " >&6; }
+
+if test -n "$CRYPT_CFLAGS"; then
+ pkg_cv_CRYPT_CFLAGS="$CRYPT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypt\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libcrypt") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CRYPT_CFLAGS=`$PKG_CONFIG --cflags "libcrypt" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$CRYPT_LIBS"; then
+ pkg_cv_CRYPT_LIBS="$CRYPT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libcrypt\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libcrypt") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_CRYPT_LIBS=`$PKG_CONFIG --libs "libcrypt" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ CRYPT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libcrypt" 2>&1`
+ else
+ CRYPT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libcrypt" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$CRYPT_PKG_ERRORS" >&5
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_gensalt_rn" >&5
+$as_echo_n "checking for library containing crypt_gensalt_rn... " >&6; }
+if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt_gensalt_rn ();
+int
+main ()
+{
+return crypt_gensalt_rn ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_crypt_gensalt_rn=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
+
+else
+ ac_cv_search_crypt_gensalt_rn=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_gensalt_rn" >&5
+$as_echo "$ac_cv_search_crypt_gensalt_rn" >&6; }
+ac_res=$ac_cv_search_crypt_gensalt_rn
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ case "$ac_cv_search_crypt_gensalt_rn" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_gensalt_rn" ;;
+ no) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
+$as_echo_n "checking for library containing crypt_r... " >&6; }
+if ${ac_cv_search_crypt_r+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt_r ();
+int
+main ()
+{
+return crypt_r ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_crypt_r=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt_r+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_crypt_r+:} false; then :
+
+else
+ ac_cv_search_crypt_r=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
+$as_echo "$ac_cv_search_crypt_r" >&6; }
+ac_res=$ac_cv_search_crypt_r
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ case "$ac_cv_search_crypt_r" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_r" ;;
+ no ) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
$as_echo_n "checking for library containing crypt... " >&6; }
if ${ac_cv_search_crypt+:} false; then :
$as_echo_n "(cached) " >&6
@@ -14852,7 +16621,7 @@ return crypt ();
return 0;
}
_ACEOF
-for ac_lib in '' $crypt_libs; do
+for ac_lib in '' crypt; do
if test -z "$ac_lib"; then
ac_res="none required"
else
@@ -14881,30 +16650,222 @@ $as_echo "$ac_cv_search_crypt" >&6; }
ac_res=$ac_cv_search_crypt
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- LIBCRYPT="${ac_cv_search_crypt}"
+
+fi
+
+ case "$ac_cv_search_crypt" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt" ;;
+ esac ;;
+ esac ;;
+ esac
+
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_gensalt_rn" >&5
+$as_echo_n "checking for library containing crypt_gensalt_rn... " >&6; }
+if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- LIBCRYPT=""
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt_gensalt_rn ();
+int
+main ()
+{
+return crypt_gensalt_rn ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_crypt_gensalt_rn=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
+ break
fi
+done
+if ${ac_cv_search_crypt_gensalt_rn+:} false; then :
-for ac_func in crypt_r crypt_gensalt_r
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+else
+ ac_cv_search_crypt_gensalt_rn=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_gensalt_rn" >&5
+$as_echo "$ac_cv_search_crypt_gensalt_rn" >&6; }
+ac_res=$ac_cv_search_crypt_gensalt_rn
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ case "$ac_cv_search_crypt_gensalt_rn" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_gensalt_rn" ;;
+ no) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt_r" >&5
+$as_echo_n "checking for library containing crypt_r... " >&6; }
+if ${ac_cv_search_crypt_r+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt_r ();
+int
+main ()
+{
+return crypt_r ();
+ ;
+ return 0;
+}
_ACEOF
+for ac_lib in '' crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_crypt_r=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt_r+:} false; then :
+ break
+fi
+done
+if ${ac_cv_search_crypt_r+:} false; then :
+
+else
+ ac_cv_search_crypt_r=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt_r" >&5
+$as_echo "$ac_cv_search_crypt_r" >&6; }
+ac_res=$ac_cv_search_crypt_r
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ case "$ac_cv_search_crypt_r" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_r" ;;
+ no ) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if ${ac_cv_search_crypt+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_crypt=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if ${ac_cv_search_crypt+:} false; then :
+ break
fi
done
+if ${ac_cv_search_crypt+:} false; then :
-LIBS=$BACKUP_LIBS
+else
+ ac_cv_search_crypt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
+ac_res=$ac_cv_search_crypt
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ case "$ac_cv_search_crypt" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt" ;;
+ esac ;;
+ esac ;;
+ esac
-if test "$LIBCRYPT" = "-lxcrypt" -a "$ac_cv_header_xcrypt_h" = "yes" ; then
+else
+ CRYPT_CFLAGS=$pkg_cv_CRYPT_CFLAGS
+ CRYPT_LIBS=$pkg_cv_CRYPT_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
-$as_echo "#define HAVE_LIBXCRYPT 1" >>confdefs.h
+ CFLAGS="$CFLAGS $CRYPT_CFLAGS"
+ CPPFLAGS="$CPPFLAGS $CRYPT_CFLAGS"
+ LIBS="$LIBS $CRYPT_LIBS"
+ LIBCRYPT="$CRYPT_LIBS"
fi
+for ac_func in crypt_r
+do :
+ ac_fn_c_check_func "$LINENO" "crypt_r" "ac_cv_func_crypt_r"
+if test "x$ac_cv_func_crypt_r" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_CRYPT_R 1
+_ACEOF
+
+fi
+done
+
+LIBS=$BACKUP_LIBS
+
# Check whether --with-randomdev was given.
@@ -14912,7 +16873,7 @@ if test "${with_randomdev+set}" = set; then :
withval=$with_randomdev; opt_randomdev=$withval
fi
-if test "$opt_randomdev" = yes -o -z "$opt_randomdev"; then
+if test "$opt_randomdev" = yes || test -z "$opt_randomdev"; then
opt_randomdev="/dev/urandom"
elif test "$opt_randomdev" = no; then
opt_randomdev=
@@ -14939,7 +16900,7 @@ if test "${with_db_uniquename+set}" = set; then :
fi
if test x"$WITH_DB" != xno ; then
- if test x"$WITH_DB" = xyes -o x"$WITH_DB" = xdb ; then
+ if test x"$WITH_DB" = xyes || test x"$WITH_DB" = xdb ; then
old_libs=$LIBS
LIBS="$LIBS -ldb$with_db_uniquename"
for ac_func in db_create$with_db_uniquename db_create dbm_store$with_db_uniquename dbm_store
@@ -15036,126 +16997,6 @@ if test "${enable_nis+set}" = set; then :
fi
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKG_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
- ac_pt_PKG_CONFIG=$PKG_CONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKG_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_pt_PKG_CONFIG" = x; then
- PKG_CONFIG=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKG_CONFIG=$ac_pt_PKG_CONFIG
- fi
-else
- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=0.9.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- PKG_CONFIG=""
- fi
-fi
if test "x$enable_nis" != "xno"; then :
old_CFLAGS=$CFLAGS
@@ -15744,6 +17585,74 @@ else
fi
+# Check whether --enable-openssl was given.
+if test "${enable_openssl+set}" = set; then :
+ enableval=$enable_openssl; OPENSSL_ENABLED=$enableval
+else
+ OPENSSL_ENABLED=no
+fi
+
+if test "$OPENSSL_ENABLED" = "yes" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MAC_CTX_new in -lcrypto" >&5
+$as_echo_n "checking for EVP_MAC_CTX_new in -lcrypto... " >&6; }
+if ${ac_cv_lib_crypto_EVP_MAC_CTX_new+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcrypto $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char EVP_MAC_CTX_new ();
+int
+main ()
+{
+return EVP_MAC_CTX_new ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_crypto_EVP_MAC_CTX_new=yes
+else
+ ac_cv_lib_crypto_EVP_MAC_CTX_new=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_MAC_CTX_new" >&5
+$as_echo "$ac_cv_lib_crypto_EVP_MAC_CTX_new" >&6; }
+if test "x$ac_cv_lib_crypto_EVP_MAC_CTX_new" = xyes; then :
+ CRYPTO_LIBS="-lcrypto"
+ use_openssl=yes
+
+$as_echo "#define WITH_OPENSSL 1" >>confdefs.h
+
+ STRINGPARAM_HMAC="--stringparam profile.condition 'openssl_hmac'"
+else
+ CRYPTO_LIBS=""
+ STRINGPARAM_HMAC="--stringparam profile.condition 'no_openssl_hmac'"
+fi
+
+fi
+
+
+ if test "x$use_openssl" = "xyes"; then
+ COND_USE_OPENSSL_TRUE=
+ COND_USE_OPENSSL_FALSE='#'
+else
+ COND_USE_OPENSSL_TRUE='#'
+ COND_USE_OPENSSL_FALSE=
+fi
+
+
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
@@ -16055,7 +17964,7 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
fi
-for ac_header in fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h sys/vfs.h linux/magic.h
+for ac_header in fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -17154,7 +19063,7 @@ fi
- if test x$enable_docu != xno -a x$enable_doc != xno; then
+ if test x$enable_docu != xno && test x$enable_doc != xno; then
ENABLE_REGENERATE_MAN_TRUE=
ENABLE_REGENERATE_MAN_FALSE='#'
else
@@ -19265,9 +21174,8 @@ if test "${with_uidmin+set}" = set; then :
withval=$with_uidmin; opt_uidmin=$withval
fi
-if test x"$opt_uidmin" == x; then
- opt_uidmin=1000
-fi
+test -n "$opt_uidmin" ||
+ opt_uidmin=1000
cat >>confdefs.h <<_ACEOF
#define PAM_USERTYPE_UIDMIN $opt_uidmin
@@ -19280,9 +21188,8 @@ if test "${with_sysuidmin+set}" = set; then :
withval=$with_sysuidmin; opt_sysuidmin=$withval
fi
-if test x"$opt_sysuidmin" == x; then
- opt_sysuidmin=101
-fi
+test -n "$opt_sysuidmin" ||
+ opt_sysuidmin=101
cat >>confdefs.h <<_ACEOF
#define PAM_USERTYPE_SYSUIDMIN $opt_sysuidmin
@@ -19290,52 +21197,67 @@ _ACEOF
-# Check whether --with-kerneloverflowuid was given.
-if test "${with_kerneloverflowuid+set}" = set; then :
- withval=$with_kerneloverflowuid; opt_kerneloverflowuid=$withval
+# Check whether --with-kernel-overflow-uid was given.
+if test "${with_kernel_overflow_uid+set}" = set; then :
+ withval=$with_kernel_overflow_uid; opt_kerneloverflowuid=$withval
fi
-if test x"$opt_kerneloverflowuid" == x; then
- opt_kerneloverflowuid=65534
-fi
+test -n "$opt_kerneloverflowuid" ||
+ opt_kerneloverflowuid=65534
cat >>confdefs.h <<_ACEOF
#define PAM_USERTYPE_OVERFLOW_UID $opt_kerneloverflowuid
_ACEOF
-# Check whether --enable-tally was given.
-if test "${enable_tally+set}" = set; then :
- enableval=$enable_tally;
+
+# Check whether --with-systemdunitdir was given.
+if test "${with_systemdunitdir+set}" = set; then :
+ withval=$with_systemdunitdir;
else
- enable_tally=no
+
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ with_systemdunitdir=$($PKG_CONFIG --variable=systemdunitdir systemd)
+else
+ with_systemdunitdir='${prefix}/lib/systemd/system'
fi
-case "$enable_tally" in
- yes|no) ;;
- *) as_fn_error $? "bad value $enable_tally for --enable-tally option" "$LINENO" 5 ;;
-esac
+fi
+
+systemdunitdir=$with_systemdunitdir
+
-# Check whether --enable-tally2 was given.
-if test "${enable_tally2+set}" = set; then :
- enableval=$enable_tally2;
+# Check whether --enable-unix was given.
+if test "${enable_unix+set}" = set; then :
+ enableval=$enable_unix;
else
- enable_tally2=no
+ enable_unix=yes
fi
-case "$enable_tally2" in
+case "$enable_unix" in
yes|no) ;;
- *) as_fn_error $? "bad value $enable_tally2 for --enable-tally2 option" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value $enable_unix for --enable-unix option" "$LINENO" 5 ;;
esac
- if test -n "$LIBCRACK"; then
- COND_BUILD_PAM_CRACKLIB_TRUE=
- COND_BUILD_PAM_CRACKLIB_FALSE='#'
+
+# Check whether --with-misc-conv-bufsize was given.
+if test "${with_misc_conv_bufsize+set}" = set; then :
+ withval=$with_misc_conv_bufsize;
else
- COND_BUILD_PAM_CRACKLIB_TRUE='#'
- COND_BUILD_PAM_CRACKLIB_FALSE=
+ with_misc_conv_bufsize=4096
fi
+
+cat >>confdefs.h <<_ACEOF
+#define PAM_MISC_CONV_BUFSIZE $with_misc_conv_bufsize
+_ACEOF
+
+
if test "$have_key_syscalls" = 1; then
COND_BUILD_PAM_KEYINIT_TRUE=
COND_BUILD_PAM_KEYINIT_FALSE='#'
@@ -19360,7 +21282,7 @@ else
COND_BUILD_PAM_NAMESPACE_FALSE=
fi
- if test "$ac_cv_func_ruserok_af" = yes -o "$ac_cv_func_ruserok" = yes; then
+ if test "$ac_cv_func_ruserok_af" = yes || test "$ac_cv_func_ruserok" = yes; then
COND_BUILD_PAM_RHOSTS_TRUE=
COND_BUILD_PAM_RHOSTS_FALSE='#'
else
@@ -19392,22 +21314,6 @@ else
COND_BUILD_PAM_SETQUOTA_FALSE=
fi
- if test "$enable_tally" = yes; then
- COND_BUILD_PAM_TALLY_TRUE=
- COND_BUILD_PAM_TALLY_FALSE='#'
-else
- COND_BUILD_PAM_TALLY_TRUE='#'
- COND_BUILD_PAM_TALLY_FALSE=
-fi
-
- if test "$enable_tally2" = yes; then
- COND_BUILD_PAM_TALLY2_TRUE=
- COND_BUILD_PAM_TALLY2_FALSE='#'
-else
- COND_BUILD_PAM_TALLY2_TRUE='#'
- COND_BUILD_PAM_TALLY2_FALSE=
-fi
-
if test "$HAVE_AUDIT_TTY_STATUS" = yes; then
COND_BUILD_PAM_TTY_AUDIT_TRUE=
COND_BUILD_PAM_TTY_AUDIT_FALSE='#'
@@ -19416,6 +21322,14 @@ else
COND_BUILD_PAM_TTY_AUDIT_FALSE=
fi
+ if test "$enable_unix" = yes; then
+ COND_BUILD_PAM_UNIX_TRUE=
+ COND_BUILD_PAM_UNIX_FALSE='#'
+else
+ COND_BUILD_PAM_UNIX_TRUE='#'
+ COND_BUILD_PAM_UNIX_FALSE=
+fi
+
if test -n "$LIBDB"; then
COND_BUILD_PAM_USERDB_TRUE=
COND_BUILD_PAM_USERDB_FALSE='#'
@@ -19425,7 +21339,7 @@ else
fi
-ac_config_files="$ac_config_files Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile libpam_misc/Makefile conf/Makefile conf/pam_conv1/Makefile po/Makefile.in Make.xml.rules modules/Makefile modules/pam_access/Makefile modules/pam_cracklib/Makefile modules/pam_debug/Makefile modules/pam_deny/Makefile modules/pam_echo/Makefile modules/pam_env/Makefile modules/pam_faildelay/Makefile modules/pam_faillock/Makefile modules/pam_filter/Makefile modules/pam_filter/upperLOWER/Makefile modules/pam_ftp/Makefile modules/pam_group/Makefile modules/pam_issue/Makefile modules/pam_keyinit/Makefile modules/pam_lastlog/Makefile modules/pam_limits/Makefile modules/pam_listfile/Makefile modules/pam_localuser/Makefile modules/pam_loginuid/Makefile modules/pam_mail/Makefile modules/pam_mkhomedir/Makefile modules/pam_motd/Makefile modules/pam_namespace/Makefile modules/pam_namespace/pam_namespace_helper modules/pam_namespace/pam_namespace.service modules/pam_nologin/Makefile modules/pam_permit/Makefile modules/pam_pwhistory/Makefile modules/pam_rhosts/Makefile modules/pam_rootok/Makefile modules/pam_exec/Makefile modules/pam_securetty/Makefile modules/pam_selinux/Makefile modules/pam_sepermit/Makefile modules/pam_setquota/Makefile modules/pam_shells/Makefile modules/pam_stress/Makefile modules/pam_succeed_if/Makefile modules/pam_tally/Makefile modules/pam_tally2/Makefile modules/pam_time/Makefile modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile modules/pam_umask/Makefile modules/pam_unix/Makefile modules/pam_userdb/Makefile modules/pam_usertype/Makefile modules/pam_warn/Makefile modules/pam_wheel/Makefile modules/pam_xauth/Makefile doc/Makefile doc/specs/Makefile doc/man/Makefile doc/sag/Makefile doc/adg/Makefile doc/mwg/Makefile examples/Makefile tests/Makefile xtests/Makefile"
+ac_config_files="$ac_config_files Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile libpam_misc/Makefile conf/Makefile conf/pam_conv1/Makefile libpam/pam.pc libpam_misc/pam_misc.pc libpamc/pamc.pc po/Makefile.in Make.xml.rules modules/Makefile modules/pam_access/Makefile modules/pam_debug/Makefile modules/pam_deny/Makefile modules/pam_echo/Makefile modules/pam_env/Makefile modules/pam_faildelay/Makefile modules/pam_faillock/Makefile modules/pam_filter/Makefile modules/pam_filter/upperLOWER/Makefile modules/pam_ftp/Makefile modules/pam_group/Makefile modules/pam_issue/Makefile modules/pam_keyinit/Makefile modules/pam_lastlog/Makefile modules/pam_limits/Makefile modules/pam_listfile/Makefile modules/pam_localuser/Makefile modules/pam_loginuid/Makefile modules/pam_mail/Makefile modules/pam_mkhomedir/Makefile modules/pam_motd/Makefile modules/pam_namespace/Makefile modules/pam_namespace/pam_namespace_helper modules/pam_namespace/pam_namespace.service modules/pam_nologin/Makefile modules/pam_permit/Makefile modules/pam_pwhistory/Makefile modules/pam_rhosts/Makefile modules/pam_rootok/Makefile modules/pam_exec/Makefile modules/pam_securetty/Makefile modules/pam_selinux/Makefile modules/pam_sepermit/Makefile modules/pam_setquota/Makefile modules/pam_shells/Makefile modules/pam_stress/Makefile modules/pam_succeed_if/Makefile modules/pam_time/Makefile modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile modules/pam_umask/Makefile modules/pam_unix/Makefile modules/pam_userdb/Makefile modules/pam_usertype/Makefile modules/pam_warn/Makefile modules/pam_wheel/Makefile modules/pam_xauth/Makefile doc/Makefile doc/specs/Makefile doc/man/Makefile doc/sag/Makefile doc/adg/Makefile doc/mwg/Makefile examples/Makefile tests/Makefile xtests/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -19572,6 +21486,10 @@ if test -z "${HAVE_DOC_TRUE}" && test -z "${HAVE_DOC_FALSE}"; then
as_fn_error $? "conditional \"HAVE_DOC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${COND_USE_OPENSSL_TRUE}" && test -z "${COND_USE_OPENSSL_FALSE}"; then
+ as_fn_error $? "conditional \"COND_USE_OPENSSL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${ENABLE_REGENERATE_MAN_TRUE}" && test -z "${ENABLE_REGENERATE_MAN_FALSE}"; then
as_fn_error $? "conditional \"ENABLE_REGENERATE_MAN\" was never defined.
@@ -19581,10 +21499,6 @@ if test -z "${ENABLE_GENERATE_PDF_TRUE}" && test -z "${ENABLE_GENERATE_PDF_FALSE
as_fn_error $? "conditional \"ENABLE_GENERATE_PDF\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${COND_BUILD_PAM_CRACKLIB_TRUE}" && test -z "${COND_BUILD_PAM_CRACKLIB_FALSE}"; then
- as_fn_error $? "conditional \"COND_BUILD_PAM_CRACKLIB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${COND_BUILD_PAM_KEYINIT_TRUE}" && test -z "${COND_BUILD_PAM_KEYINIT_FALSE}"; then
as_fn_error $? "conditional \"COND_BUILD_PAM_KEYINIT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19613,18 +21527,14 @@ if test -z "${COND_BUILD_PAM_SETQUOTA_TRUE}" && test -z "${COND_BUILD_PAM_SETQUO
as_fn_error $? "conditional \"COND_BUILD_PAM_SETQUOTA\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${COND_BUILD_PAM_TALLY_TRUE}" && test -z "${COND_BUILD_PAM_TALLY_FALSE}"; then
- as_fn_error $? "conditional \"COND_BUILD_PAM_TALLY\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${COND_BUILD_PAM_TALLY2_TRUE}" && test -z "${COND_BUILD_PAM_TALLY2_FALSE}"; then
- as_fn_error $? "conditional \"COND_BUILD_PAM_TALLY2\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${COND_BUILD_PAM_TTY_AUDIT_TRUE}" && test -z "${COND_BUILD_PAM_TTY_AUDIT_FALSE}"; then
as_fn_error $? "conditional \"COND_BUILD_PAM_TTY_AUDIT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${COND_BUILD_PAM_UNIX_TRUE}" && test -z "${COND_BUILD_PAM_UNIX_FALSE}"; then
+ as_fn_error $? "conditional \"COND_BUILD_PAM_UNIX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${COND_BUILD_PAM_USERDB_TRUE}" && test -z "${COND_BUILD_PAM_USERDB_FALSE}"; then
as_fn_error $? "conditional \"COND_BUILD_PAM_USERDB\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -20026,7 +21936,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Linux-PAM $as_me 1.4.0, which was
+This file was extended by Linux-PAM $as_me 1.5.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20092,7 +22002,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Linux-PAM config.status 1.4.0
+Linux-PAM config.status 1.5.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -20522,11 +22432,13 @@ do
"libpam_misc/Makefile") CONFIG_FILES="$CONFIG_FILES libpam_misc/Makefile" ;;
"conf/Makefile") CONFIG_FILES="$CONFIG_FILES conf/Makefile" ;;
"conf/pam_conv1/Makefile") CONFIG_FILES="$CONFIG_FILES conf/pam_conv1/Makefile" ;;
+ "libpam/pam.pc") CONFIG_FILES="$CONFIG_FILES libpam/pam.pc" ;;
+ "libpam_misc/pam_misc.pc") CONFIG_FILES="$CONFIG_FILES libpam_misc/pam_misc.pc" ;;
+ "libpamc/pamc.pc") CONFIG_FILES="$CONFIG_FILES libpamc/pamc.pc" ;;
"po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
"Make.xml.rules") CONFIG_FILES="$CONFIG_FILES Make.xml.rules" ;;
"modules/Makefile") CONFIG_FILES="$CONFIG_FILES modules/Makefile" ;;
"modules/pam_access/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_access/Makefile" ;;
- "modules/pam_cracklib/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_cracklib/Makefile" ;;
"modules/pam_debug/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_debug/Makefile" ;;
"modules/pam_deny/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_deny/Makefile" ;;
"modules/pam_echo/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_echo/Makefile" ;;
@@ -20563,8 +22475,6 @@ do
"modules/pam_shells/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_shells/Makefile" ;;
"modules/pam_stress/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_stress/Makefile" ;;
"modules/pam_succeed_if/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_succeed_if/Makefile" ;;
- "modules/pam_tally/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_tally/Makefile" ;;
- "modules/pam_tally2/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_tally2/Makefile" ;;
"modules/pam_time/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_time/Makefile" ;;
"modules/pam_timestamp/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_timestamp/Makefile" ;;
"modules/pam_tty_audit/Makefile") CONFIG_FILES="$CONFIG_FILES modules/pam_tty_audit/Makefile" ;;
@@ -21257,7 +23167,9 @@ $as_echo X/"$am_mf" |
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
- for automatic dependency tracking. Try re-running configure with the
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
+ necessary). You can also try re-running configure with the
'--disable-dependency-tracking' option to at least be able to build
the package (albeit without support for automatic dependency tracking).
See \`config.log' for more details" "$LINENO" 5; }
diff --git a/configure.ac b/configure.ac
index ea08a7a3..c06bc7dd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([Linux-PAM], [1.4.0], , [Linux-PAM])
+AC_INIT([Linux-PAM], [1.5.2], , [Linux-PAM])
AC_CONFIG_SRCDIR([conf/pam_conv1/pam_conv_y.y])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([-Wall -Wno-portability])
@@ -75,61 +75,12 @@ AM_PROG_CC_C_O
PAM_LD_AS_NEEDED
PAM_LD_NO_UNDEFINED
PAM_LD_O1
+PAM_LD_Z_NOW
dnl Largefile support
AC_SYS_LARGEFILE
-Werror_option=
-AC_ARG_ENABLE([Werror],
- [AS_HELP_STRING([--enable-Werror],
- [turn on -Werror compiler option])],
- [case $enableval in
- yes) Werror_option=-Werror ;;
- no) ;;
- *) AC_MSG_ERROR([bad value $enableval for Werror option]) ;;
- esac])
-
-dnl icc claims to be GCC compatible, but use other flags for warnings
-if eval 'test "x$GCC" = "xyes" -a "$CC" != "icc"'; then
- for flag in \
- -W \
- -Wall \
- -Wbad-function-cast \
- -Wcast-align \
- -Wcast-qual \
- -Wmissing-declarations \
- -Wmissing-prototypes \
- -Wpointer-arith \
- -Wreturn-type \
- -Wstrict-prototypes \
- -Wwrite-strings \
- -Winline \
- -Wshadow \
- $Werror_option
- do
- JAPHAR_GREP_CFLAGS($flag, [ WARN_CFLAGS="$WARN_CFLAGS $flag" ])
- done
-fi
-dnl icc has special warning flags
-if eval 'test "x$CC" = "xicc"'; then
- for flag in \
- -Wall \
- -Wmissing-prototypes \
- -Wpointer-arith \
- -Wreturn-type \
- -Wstrict-prototypes \
- -Wwrite-strings \
- -Wshadow \
- -Wp64 \
- -Wdeprecated \
- -Wuninitialized \
- -Wmain
- do
- JAPHAR_GREP_CFLAGS($flag, [ WARN_CFLAGS="$WARN_CFLAGS $flag" ])
- done
-fi
-
-AC_SUBST(WARN_CFLAGS)
+pam_WARN_LANG_FLAGS
if test "x${CC_FOR_BUILD+set}" != "xset" ; then
if test "x$cross_compiling" = "xyes" ; then
@@ -169,7 +120,7 @@ if test "x${BUILD_LDFLAGS+set}" != "xset" ; then
fi
AC_SUBST(BUILD_LDFLAGS)
-AC_C___ATTRIBUTE__
+PAM_ATTRIBUTE_UNUSED
dnl
dnl Check if --version-script is supported by ld
@@ -224,36 +175,44 @@ rm -f conftest*])
AM_CONDITIONAL([HAVE_VERSIONING],
[test "$libc_cv_ld_version_script_option" = "yes"])
-dnl
-dnl check for -fPIE/-pie support
-dnl
-dnl icc handles -fpie as -fp without error, so blacklist icc
-dnl
-AC_ARG_ENABLE(pie,AS_HELP_STRING([--disable-pie],
- [disable position-independent executables (PIE)]),
- USE_PIE=$enableval, USE_PIE=yes)
-
-AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
- cat > conftest.c <<EOF
-int foo;
-main () { return 0;}
-EOF
- if test "$USE_PIE" = "yes" -a "$CC" != "icc" &&
- AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
- -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
- then
- libc_cv_fpie=yes
- PIE_CFLAGS="-fpie"
- PIE_LDFLAGS="-pie"
- else
- libc_cv_fpie=no
- PIE_CFLAGS=""
- PIE_LDFLAGS=""
- fi
- rm -f conftest*])
-AC_SUBST(libc_cv_fpie)
-AC_SUBST(PIE_CFLAGS)
-AC_SUBST(PIE_LDFLAGS)
+AC_ARG_ENABLE([pie],
+ [AS_HELP_STRING([--disable-pie],
+ [disable position-independent executables (PIE)])],
+ [], [enable_pie=check])
+case "$enable_pie" in
+ no) ;;
+ yes|check)
+ dnl Check for -fpie/-pie support
+ AC_CACHE_CHECK([for -fpie/-pie support],
+ [pam_cv_pie],
+ [saved_CFLAGS="$CFLAGS"
+ saved_LDFLAGS="$LDFLAGS"
+ CFLAGS="$CFLAGS -fpie"
+ LDFLAGS="$LDFLAGS -pie"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_pie=yes],
+ [pam_cv_pie=no])
+ LDFLAGS="$saved_LDFLAGS"
+ CFLAGS="$saved_CFLAGS"])
+ AS_IF([test "$pam_cv_pie" = yes],
+ [enable_pie=yes],
+ [AS_IF([test "$enable_pie" = yes],
+ [AC_MSG_FAILURE([requested -fpie/-pie support not found])],
+ [enable_pie=no])])
+ ;;
+ *) AC_MSG_ERROR([bad value $enable_pie for --enable-pie option]) ;;
+esac
+
+AS_IF([test "$enable_pie" = yes],
+ [PIE_CFLAGS="-fpie"
+ PIE_LDFLAGS="-pie"],
+ [PIE_CFLAGS=
+ PIE_LDFLAGS=])
+
+EXE_CFLAGS="$PIE_CFLAGS"
+EXE_LDFLAGS="$PIE_LDFLAGS $ZNOW_LDFLAGS"
+AC_SUBST(EXE_CFLAGS)
+AC_SUBST(EXE_LDFLAGS)
dnl
@@ -375,28 +334,6 @@ case "$ac_cv_search_dlopen" in
esac
AC_SUBST(LIBDL)
-AC_ARG_ENABLE([cracklib],
- [AS_HELP_STRING([--enable-cracklib],
- [build deprecated pam_cracklib module])],
- [], [enable_cracklib=no])
-LIBCRACK=""
-case "$enable_cracklib" in
- no) ;;
- yes|check)
- dnl Check for cracklib
- AC_CHECK_HEADERS([crack.h],
- [AC_CHECK_LIB([crack], [FascistCheck],
- [LIBCRACK="-lcrack"])])
- if test -z "$LIBCRACK"; then
- if test "$enable_cracklib" = yes; then
- AC_MSG_FAILURE([failed to find cracklib])
- fi
- fi
- ;;
- *) AC_MSG_ERROR([bad value $enable_cracklib for --enable-cracklib option]) ;;
-esac
-AC_SUBST(LIBCRACK)
-
dnl Look for Linux Auditing library - see documentation
AC_ARG_ENABLE([audit],
AS_HELP_STRING([--disable-audit],[do not enable audit support]),
@@ -409,7 +346,7 @@ if test x"$WITH_LIBAUDIT" != xno ; then
[HAVE_AUDIT_TTY_STATUS=""],
[#include <libaudit.h>])]
)
- if test -n "$LIBAUDIT" -a "$ac_cv_header_libaudit_h" != "no" ; then
+ if test -n "$LIBAUDIT" && test "$ac_cv_header_libaudit_h" != "no" ; then
AC_DEFINE([HAVE_LIBAUDIT], 1, [Define to 1 if audit support should be compiled in.])
fi
if test -n "$HAVE_AUDIT_TTY_STATUS" ; then
@@ -422,22 +359,35 @@ else
fi
AC_SUBST(LIBAUDIT)
-AC_CHECK_HEADERS(xcrypt.h crypt.h)
-AS_IF([test "x$ac_cv_header_xcrypt_h" = "xyes"],
- [crypt_libs="xcrypt crypt"],
- [crypt_libs="crypt"])
+AC_CHECK_HEADERS(crypt.h)
BACKUP_LIBS=$LIBS
-AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="${ac_cv_search_crypt}", LIBCRYPT="")
-AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)
+LIBCRYPT=""
+PKG_CHECK_MODULES([CRYPT], [libcrypt], [
+ CFLAGS="$CFLAGS $CRYPT_CFLAGS"
+ CPPFLAGS="$CPPFLAGS $CRYPT_CFLAGS"
+ LIBS="$LIBS $CRYPT_LIBS"
+ LIBCRYPT="$CRYPT_LIBS"
+], [
+ AC_SEARCH_LIBS([crypt_gensalt_rn],[crypt])
+ case "$ac_cv_search_crypt_gensalt_rn" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_gensalt_rn" ;;
+ no) AC_SEARCH_LIBS([crypt_r],[crypt])
+ case "$ac_cv_search_crypt_r" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt_r" ;;
+ no ) AC_SEARCH_LIBS([crypt],[crypt])
+ case "$ac_cv_search_crypt" in
+ -l*) LIBCRYPT="$ac_cv_search_crypt" ;;
+ esac ;;
+ esac ;;
+ esac
+])
+AC_CHECK_FUNCS([crypt_r])
LIBS=$BACKUP_LIBS
AC_SUBST(LIBCRYPT)
-if test "$LIBCRYPT" = "-lxcrypt" -a "$ac_cv_header_xcrypt_h" = "yes" ; then
- AC_DEFINE([HAVE_LIBXCRYPT], 1, [Define to 1 if xcrypt support should be compiled in.])
-fi
AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes|no)],[use specified random device instead of /dev/urandom or 'no' to disable]), opt_randomdev=$withval)
-if test "$opt_randomdev" = yes -o -z "$opt_randomdev"; then
+if test "$opt_randomdev" = yes || test -z "$opt_randomdev"; then
opt_randomdev="/dev/urandom"
elif test "$opt_randomdev" = no; then
opt_randomdev=
@@ -454,7 +404,7 @@ AC_ARG_ENABLE([db],
AC_ARG_WITH([db-uniquename],
AS_HELP_STRING([--with-db-uniquename=extension],[Unique name for db libraries and functions.]))
if test x"$WITH_DB" != xno ; then
- if test x"$WITH_DB" = xyes -o x"$WITH_DB" = xdb ; then
+ if test x"$WITH_DB" = xyes || test x"$WITH_DB" = xdb ; then
old_libs=$LIBS
LIBS="$LIBS -ldb$with_db_uniquename"
AC_CHECK_FUNCS([db_create$with_db_uniquename db_create dbm_store$with_db_uniquename dbm_store],
@@ -563,11 +513,27 @@ else
fi
AC_SUBST([STRINGPARAM_VENDORDIR])
+AC_ARG_ENABLE([openssl],
+ AS_HELP_STRING([--enable-openssl],[use OpenSSL crypto libraries]),
+ [OPENSSL_ENABLED=$enableval], OPENSSL_ENABLED=no)
+if test "$OPENSSL_ENABLED" = "yes" ; then
+ AC_CHECK_LIB([crypto], [EVP_MAC_CTX_new],
+ [CRYPTO_LIBS="-lcrypto"
+ use_openssl=yes
+ AC_DEFINE([WITH_OPENSSL], 1, [OpenSSL provides crypto algorithm for hmac])
+ STRINGPARAM_HMAC="--stringparam profile.condition 'openssl_hmac'"],
+ [CRYPTO_LIBS=""
+ STRINGPARAM_HMAC="--stringparam profile.condition 'no_openssl_hmac'"])
+fi
+AC_SUBST([CRYPTO_LIBS])
+AC_SUBST([STRINGPARAM_HMAC])
+AM_CONDITIONAL([COND_USE_OPENSSL], [test "x$use_openssl" = "xyes"])
+
dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h sys/vfs.h linux/magic.h)
+AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h)
dnl For module/pam_lastlog
AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
@@ -631,7 +597,7 @@ fi
AC_PATH_PROG([FO2PDF], [fop])
-AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno -a x$enable_doc != xno)
+AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno && test x$enable_doc != xno)
AM_CONDITIONAL(ENABLE_GENERATE_PDF, test -n "$FO2PDF")
@@ -658,61 +624,65 @@ dnl
dnl Get values for default uid ranges in login.defs used in pam_usertype
dnl
AC_ARG_WITH([uidmin], AS_HELP_STRING([--with-uidmin=<number>],[default value for regular user min uid (1000)]), opt_uidmin=$withval)
-if test x"$opt_uidmin" == x; then
- opt_uidmin=1000
-fi
+test -n "$opt_uidmin" ||
+ opt_uidmin=1000
AC_DEFINE_UNQUOTED(PAM_USERTYPE_UIDMIN, $opt_uidmin, [Minimum regular user uid.])
AC_ARG_WITH([sysuidmin], AS_HELP_STRING([--with-sysuidmin=<number>],[default value for system user min uid (101)]), opt_sysuidmin=$withval)
-if test x"$opt_sysuidmin" == x; then
- opt_sysuidmin=101
-fi
+test -n "$opt_sysuidmin" ||
+ opt_sysuidmin=101
AC_DEFINE_UNQUOTED(PAM_USERTYPE_SYSUIDMIN, $opt_sysuidmin, [Minimum system user uid.])
-AC_ARG_WITH([kerneloverflowuid], AS_HELP_STRING([--with-kernel-overflow-uid=<number>],[kernel overflow uid, default (uint16_t)-2=65534]), opt_kerneloverflowuid=$withval)
-if test x"$opt_kerneloverflowuid" == x; then
- opt_kerneloverflowuid=65534
-fi
+AC_ARG_WITH([kernel-overflow-uid], AS_HELP_STRING([--with-kernel-overflow-uid=<number>],[kernel overflow uid, default (uint16_t)-2=65534]), opt_kerneloverflowuid=$withval)
+test -n "$opt_kerneloverflowuid" ||
+ opt_kerneloverflowuid=65534
AC_DEFINE_UNQUOTED(PAM_USERTYPE_OVERFLOW_UID, $opt_kerneloverflowuid, [Kernel overflow uid.])
-AC_ARG_ENABLE([tally],
- [AS_HELP_STRING([--enable-tally],
- [build deprecated pam_tally module])],
- [], [enable_tally=no])
-case "$enable_tally" in
+AC_ARG_WITH([systemdunitdir],
+AS_HELP_STRING([--with-systemdunitdir=DIR], [path to systemd service directory]),
+ [],
+ [
+ PKG_CHECK_EXISTS([systemd],
+ [with_systemdunitdir=$($PKG_CONFIG --variable=systemdunitdir systemd)],
+ [with_systemdunitdir='${prefix}/lib/systemd/system'])
+ ])
+AC_SUBST([systemdunitdir], [$with_systemdunitdir])
+
+AC_ARG_ENABLE([unix],
+ [AS_HELP_STRING([--disable-unix],
+ [do not build pam_unix module])],
+ [], [enable_unix=yes])
+case "$enable_unix" in
yes|no) ;;
- *) AC_MSG_ERROR([bad value $enable_tally for --enable-tally option]) ;;
+ *) AC_MSG_ERROR([bad value $enable_unix for --enable-unix option]) ;;
esac
-AC_ARG_ENABLE([tally2],
- [AS_HELP_STRING([--enable-tally2],
- [build deprecated pam_tally2 module])],
- [], [enable_tally2=no])
-case "$enable_tally2" in
- yes|no) ;;
- *) AC_MSG_ERROR([bad value $enable_tally2 for --enable-tally2 option]) ;;
-esac
+AC_ARG_WITH([misc-conv-bufsize],
+AS_HELP_STRING([--with-misc-conv-bufsize=<number>],
+ [Size of input buffer for libpam_misc's misc_conv() conversation function, default=4096]),
+ [],
+ [with_misc_conv_bufsize=4096])
+AC_DEFINE_UNQUOTED(PAM_MISC_CONV_BUFSIZE, $with_misc_conv_bufsize, [libpam_misc misc_conv() buffer size.])
-AM_CONDITIONAL([COND_BUILD_PAM_CRACKLIB], [test -n "$LIBCRACK"])
AM_CONDITIONAL([COND_BUILD_PAM_KEYINIT], [test "$have_key_syscalls" = 1])
AM_CONDITIONAL([COND_BUILD_PAM_LASTLOG], [test "$ac_cv_func_logwtmp" = yes])
AM_CONDITIONAL([COND_BUILD_PAM_NAMESPACE], [test "$ac_cv_func_unshare" = yes])
-AM_CONDITIONAL([COND_BUILD_PAM_RHOSTS], [test "$ac_cv_func_ruserok_af" = yes -o "$ac_cv_func_ruserok" = yes])
+AM_CONDITIONAL([COND_BUILD_PAM_RHOSTS], [test "$ac_cv_func_ruserok_af" = yes || test "$ac_cv_func_ruserok" = yes])
AM_CONDITIONAL([COND_BUILD_PAM_SELINUX], [test -n "$LIBSELINUX"])
AM_CONDITIONAL([COND_BUILD_PAM_SEPERMIT], [test -n "$LIBSELINUX"])
AM_CONDITIONAL([COND_BUILD_PAM_SETQUOTA], [test "$ac_cv_func_quotactl" = yes])
-AM_CONDITIONAL([COND_BUILD_PAM_TALLY], [test "$enable_tally" = yes])
-AM_CONDITIONAL([COND_BUILD_PAM_TALLY2], [test "$enable_tally2" = yes])
AM_CONDITIONAL([COND_BUILD_PAM_TTY_AUDIT], [test "$HAVE_AUDIT_TTY_STATUS" = yes])
+AM_CONDITIONAL([COND_BUILD_PAM_UNIX], [test "$enable_unix" = yes])
AM_CONDITIONAL([COND_BUILD_PAM_USERDB], [test -n "$LIBDB"])
dnl Files to be created from when we run configure
AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile \
libpam_misc/Makefile conf/Makefile conf/pam_conv1/Makefile \
+ libpam/pam.pc libpam_misc/pam_misc.pc libpamc/pamc.pc \
po/Makefile.in \
Make.xml.rules \
modules/Makefile \
- modules/pam_access/Makefile modules/pam_cracklib/Makefile \
+ modules/pam_access/Makefile \
modules/pam_debug/Makefile modules/pam_deny/Makefile \
modules/pam_echo/Makefile modules/pam_env/Makefile \
modules/pam_faildelay/Makefile modules/pam_faillock/Makefile \
@@ -731,8 +701,7 @@ AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile
modules/pam_securetty/Makefile modules/pam_selinux/Makefile \
modules/pam_sepermit/Makefile modules/pam_setquota/Makefile \
modules/pam_shells/Makefile modules/pam_stress/Makefile \
- modules/pam_succeed_if/Makefile modules/pam_tally/Makefile \
- modules/pam_tally2/Makefile modules/pam_time/Makefile \
+ modules/pam_succeed_if/Makefile modules/pam_time/Makefile \
modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile \
modules/pam_umask/Makefile \
modules/pam_unix/Makefile modules/pam_userdb/Makefile \
diff --git a/debian/changelog b/debian/changelog
index 641f3197..f38d567a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,38 @@
+pam (1.5.2-1) unstable; urgency=medium
+
+ * New upstream release.
+ - fixes compatibility with libpam-systemd. Closes: #1017467.
+ - fixes bashisms in configure.ac. Closes: #998361.
+ * Refresh patches.
+ * Drop patches included or obsoleted upstream:
+ - debian/patches-applied/pam_unix_fix_sgid_shadow_auth.patch
+ - debian/patches-applied/pam_unix_initialize_daysleft
+ - debian/patches-applied/pam_faillock_create_directory
+ - debian/patches-applied/pam_unix_avoid_checksalt
+ - debian/patches-applied/pam_env-allow-environment-files-without-EOL-at-EOF.patch
+ * Drop libpam-cracklib which has been obsoleted upstream.
+ * Add pkgconfig .pc files to libpam0g-dev. Closes: #1012688.
+ * Update .symbols file.
+ * Updated Romanian debconf translation, thanks Andrei Popescu, Closes:
+ #986416
+ * Drop versioning of quilt build-dependency to quiet lintian, since the
+ version is satisfied by oldoldoldstable.
+ * Drop unused build-build-dependency on bzip2.
+ * Adjust lintian overrides for latest lintian syntax.
+ * Update Standards-Version.
+ * Bump debhelper compat to 13.
+ * debian/not-installed: document upstream files that aren't used.
+ * Override incorrect lintian warning about use of dpkg database.
+ * Override lintian warning for PAM module manpages being in section 8
+ * Override lintian warning for unused debconf templates
+ * Install additional upstream manpages: faillock(8), environment(5),
+ pwhistory_helper(8)
+ * Install additional helpers in libpam-modules-bin: pam_namespace_helper,
+ pwhistory_helper
+ * Fix wrong syntax in symbols file
+
+ -- Steve Langasek <vorlon@debian.org> Thu, 18 Aug 2022 07:27:16 +0000
+
pam (1.4.0-13) unstable; urgency=medium
* Don't build with NIS support. This is only used for password changes on
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index ec635144..00000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
index ba9d68e2..f80df13b 100644
--- a/debian/control
+++ b/debian/control
@@ -3,8 +3,8 @@ Section: libs
Priority: optional
Uploaders: Sam Hartman <hartmans@debian.org>
Maintainer: Steve Langasek <vorlon@debian.org>
-Standards-Version: 4.3.0
-Build-Depends: libcrack2-dev (>= 2.8), bzip2, debhelper (>= 9), quilt (>= 0.48-1), flex, libdb-dev, libselinux1-dev [linux-any], po-debconf, dh-autoreconf, autopoint, libaudit-dev [linux-any] <!stage1>, pkg-config, libfl-dev, libfl-dev:native, docbook-xsl, docbook-xml, xsltproc, libxml2-utils, w3m
+Standards-Version: 4.6.0
+Build-Depends: debhelper-compat (= 13), quilt, flex, libdb-dev, libselinux1-dev [linux-any], po-debconf, dh-autoreconf, autopoint, libaudit-dev [linux-any] <!stage1>, pkg-config, libfl-dev, libfl-dev:native, docbook-xsl, docbook-xml, xsltproc, libxml2-utils, w3m
Build-Conflicts-Indep: fop
Build-Conflicts: libdb4.2-dev, libxcrypt-dev
Vcs-Browser: https://salsa.debian.org/vorlon/pam
@@ -80,16 +80,6 @@ Description: Development files for PAM
possible to upgrade the authentication system without recompiling or
rewriting the applications.
-Package: libpam-cracklib
-Section: admin
-Architecture: any
-Multi-Arch: same
-Replaces: libpam0g-cracklib, libpam-modules (<< 1.1.0-3)
-Depends: ${misc:Depends}, ${shlibs:Depends}, libpam-runtime (>= 1.0.1-6), cracklib-runtime, wamerican | wordlist
-Description: PAM module to enable cracklib support
- This package includes libpam_cracklib, a PAM module that tests
- passwords to make sure they are not too weak during password change.
-
Package: libpam-doc
Provides: pam-doc
Section: doc
diff --git a/debian/libpam-cracklib.install b/debian/libpam-cracklib.install
deleted file mode 100644
index 55265e5e..00000000
--- a/debian/libpam-cracklib.install
+++ /dev/null
@@ -1,2 +0,0 @@
-lib/*/security/pam_cracklib.so
-debian/pam-configs/cracklib usr/share/pam-configs
diff --git a/debian/libpam-cracklib.manpages b/debian/libpam-cracklib.manpages
deleted file mode 100644
index 0660c415..00000000
--- a/debian/libpam-cracklib.manpages
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/share/man/man8/pam_cracklib.8
diff --git a/debian/libpam-cracklib.postinst b/debian/libpam-cracklib.postinst
deleted file mode 100644
index cf52f262..00000000
--- a/debian/libpam-cracklib.postinst
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-set -e
-
-if dpkg --compare-versions "$2" lt 1.0.1-6; then
- pam-auth-update --package
-fi
-
-#DEBHELPER#
diff --git a/debian/libpam-cracklib.prerm b/debian/libpam-cracklib.prerm
deleted file mode 100644
index fe234ac2..00000000
--- a/debian/libpam-cracklib.prerm
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-set -e
-
-if [ "$1" = remove ] && [ "${DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT:-1}" = 1 ]; then
- pam-auth-update --package --remove cracklib
-fi
-
-#DEBHELPER#
diff --git a/debian/libpam-modules-bin.install b/debian/libpam-modules-bin.install
index 1092f03c..e3e086ca 100644
--- a/debian/libpam-modules-bin.install
+++ b/debian/libpam-modules-bin.install
@@ -1,6 +1,8 @@
sbin/unix_chkpwd sbin
sbin/unix_update sbin
sbin/mkhomedir_helper sbin
+sbin/pam_namespace_helper
+sbin/pwhistory_helper
sbin/pam_timestamp_check usr/sbin
sbin/faillock usr/sbin
modules/pam_faillock/faillock.8 usr/share/man/man8
diff --git a/debian/libpam-modules-bin.lintian-overrides b/debian/libpam-modules-bin.lintian-overrides
index a40efeaf..8c185917 100644
--- a/debian/libpam-modules-bin.lintian-overrides
+++ b/debian/libpam-modules-bin.lintian-overrides
@@ -1,2 +1,2 @@
# yes, we know it's sgid, that's the whole point...
-libpam-modules-bin: setgid-binary sbin/unix_chkpwd 2755 root/shadow
+libpam-modules-bin: setgid-binary *sbin/unix_chkpwd* 2755 root/shadow
diff --git a/debian/libpam-modules-bin.manpages b/debian/libpam-modules-bin.manpages
index 8ab40612..5ea074f0 100644
--- a/debian/libpam-modules-bin.manpages
+++ b/debian/libpam-modules-bin.manpages
@@ -1,3 +1,6 @@
debian/tmp/usr/share/man/man8/mkhomedir_helper.8
debian/tmp/usr/share/man/man8/unix_*.8
debian/tmp/usr/share/man/man8/pam_timestamp_check.8
+debian/tmp/usr/share/man/man8/faillock.8
+debian/tmp/usr/share/man/man5/environment.5
+debian/tmp/usr/share/man/man8/pwhistory_helper.8
diff --git a/debian/libpam-modules.lintian-overrides b/debian/libpam-modules.lintian-overrides
index 3eba0f93..531ff4de 100644
--- a/debian/libpam-modules.lintian-overrides
+++ b/debian/libpam-modules.lintian-overrides
@@ -2,12 +2,13 @@
# fortifying. Since we know we have hardening turned on globally, suppress
# them. If we ever see this warning again for *other* modules, then we know
# there's a real problem.
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_echo.so
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_filter.so
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_group.so
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_localuser.so
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_shells.so
-libpam-modules: hardening-no-fortify-functions lib/*/security/pam_wheel.so
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_echo.so*
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_filter.so*
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_group.so*
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_localuser.so*
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_shells.so*
+libpam-modules: hardening-no-fortify-functions *lib/*/security/pam_wheel.so*
# pam_deny.so does not use any symbol from libc.
-libpam-modules: shared-lib-without-dependency-information lib/*/security/pam_deny.so
-
+libpam-modules: shared-lib-without-dependency-information *lib/*/security/pam_deny.so*
+# lintian doesn't know what to do with manpages for pam modules
+libpam-modules: spare-manual-page *
diff --git a/debian/libpam-runtime.lintian-overrides b/debian/libpam-runtime.lintian-overrides
index 7a8b1a70..1385c591 100644
--- a/debian/libpam-runtime.lintian-overrides
+++ b/debian/libpam-runtime.lintian-overrides
@@ -2,4 +2,12 @@
libpam-runtime: no-debconf-config
# this warning is just plain crack, there's no reason that using debconf
# outside of a maintainer script implies an error.
-libpam-runtime: debconf-is-not-a-registry usr/sbin/pam-auth-update
+libpam-runtime: debconf-is-not-a-registry *usr/sbin/pam-auth-update*
+# false positive, we have to load the debconf templates from here
+libpam-runtime: uses-dpkg-database-directly usr/sbin/pam-auth-update
+# and lintian also says these templates are unused, which is false
+libpam-runtime: unused-debconf-template libpam-runtime/conflicts
+libpam-runtime: unused-debconf-template libpam-runtime/no_profiles_chosen
+libpam-runtime: unused-debconf-template libpam-runtime/override
+libpam-runtime: unused-debconf-template libpam-runtime/profiles
+libpam-runtime: unused-debconf-template libpam-runtime/title
diff --git a/debian/libpam0g-dev.install.in b/debian/libpam0g-dev.install.in
index 827690aa..8288bc01 100644
--- a/debian/libpam0g-dev.install.in
+++ b/debian/libpam0g-dev.install.in
@@ -1,2 +1,3 @@
usr/include/security/*
lib/@DEB_HOST_MULTIARCH@/*.a usr/lib/@DEB_HOST_MULTIARCH@
+lib/@DEB_HOST_MULTIARCH@/pkgconfig/*.pc usr/lib/@DEB_HOST_MULTIARCH@/pkgconfig
diff --git a/debian/libpam0g.lintian-overrides b/debian/libpam0g.lintian-overrides
index 5f36562d..ef3655f5 100644
--- a/debian/libpam0g.lintian-overrides
+++ b/debian/libpam0g.lintian-overrides
@@ -1,6 +1,6 @@
# obvious multilib package false-positive; also the package name hasn't
# changed since the glibc transition, go us!
-libpam0g: package-name-doesnt-match-sonames libpam0 libpam-misc0 libpamc0
+libpam0g: package-name-doesnt-match-sonames libpam-misc0 libpam0 libpamc0
# yes, these are deliberately asked in the postinst because the checking
# for daemons to be restarted needs to be done in the postinst and not
# before
diff --git a/debian/libpam0g.symbols b/debian/libpam0g.symbols
index 7d13d32d..f38b17f0 100644
--- a/debian/libpam0g.symbols
+++ b/debian/libpam0g.symbols
@@ -9,7 +9,8 @@ libpam.so.0 libpam0g #MINVER#
*@LIBPAM_MODUTIL_1.1.3 1.1.3
*@LIBPAM_MODUTIL_1.1.9 1.3.1
*@LIBPAM_MODUTIL_1.3.2 1.3.2
-(optional)pam_modutil_sanitize_helper_fds 1.3.1
+ *@LIBPAM_MODUTIL_1.4.1 1.4.1
+ (optional)pam_modutil_sanitize_helper_fds 1.3.1
libpam_misc.so.0 libpam0g #MINVER#
*@LIBPAM_MISC_1.0 0.99.7.1
libpamc.so.0 libpam0g #MINVER#
diff --git a/debian/not-installed b/debian/not-installed
new file mode 100644
index 00000000..bd312af0
--- /dev/null
+++ b/debian/not-installed
@@ -0,0 +1,8 @@
+lib/*/security/*.a
+lib/*/security/*.la
+lib/*/*.la
+lib/*/*.so
+usr/share/man/man8/pam.8
+etc/environment
+# sample filter, do not install
+lib/*/security/pam_filter/upperLOWER
diff --git a/debian/pam-configs/cracklib b/debian/pam-configs/cracklib
deleted file mode 100644
index 1c48274f..00000000
--- a/debian/pam-configs/cracklib
+++ /dev/null
@@ -1,9 +0,0 @@
-Name: Cracklib password strength checking
-Default: yes
-Priority: 1024
-Conflicts: unix-zany
-Password-Type: Primary
-Password:
- requisite pam_cracklib.so retry=3 minlen=8 difok=3
-Password-Initial:
- requisite pam_cracklib.so retry=3 minlen=8 difok=3
diff --git a/debian/patches-applied/008_modules_pam_limits_chroot b/debian/patches-applied/008_modules_pam_limits_chroot
index acbdc1a9..7a86fdd5 100644
--- a/debian/patches-applied/008_modules_pam_limits_chroot
+++ b/debian/patches-applied/008_modules_pam_limits_chroot
@@ -2,19 +2,19 @@ Index: pam/modules/pam_limits/pam_limits.c
===================================================================
--- pam.orig/modules/pam_limits/pam_limits.c
+++ pam/modules/pam_limits/pam_limits.c
-@@ -88,6 +88,7 @@
- int flag_numsyslogins; /* whether to limit logins only for a
+@@ -90,6 +90,7 @@
specific user or to count all logins */
int priority; /* the priority to run user process with */
+ int nonewprivs; /* whether to prctl(PR_SET_NO_NEW_PRIVS) */
+ char chroot_dir[8092]; /* directory to chroot into */
struct user_limits_struct limits[RLIM_NLIMITS];
const char *conf_file;
int utmp_after_pam_call;
-@@ -98,6 +99,7 @@
- #define LIMIT_NUMSYSLOGINS RLIM_NLIMITS+2
+@@ -101,6 +102,7 @@
#define LIMIT_PRI RLIM_NLIMITS+3
-+#define LIMIT_CHROOT RLIM_NLIMITS+4
+ #define LIMIT_NONEWPRIVS RLIM_NLIMITS+4
++#define LIMIT_CHROOT RLIM_NLIMITS+5
#define LIMIT_SOFT 1
#define LIMIT_HARD 2
@@ -27,16 +27,16 @@ Index: pam/modules/pam_limits/pam_limits.c
return retval;
}
-@@ -554,6 +558,8 @@
- pl->flag_numsyslogins = 1;
- } else if (strcmp(lim_item, "priority") == 0) {
+@@ -591,6 +595,8 @@
limit_item = LIMIT_PRI;
+ } else if (strcmp(lim_item, "nonewprivs") == 0) {
+ limit_item = LIMIT_NONEWPRIVS;
+ } else if (strcmp(lim_item, "chroot") == 0) {
-+ limit_item = LIMIT_CHROOT;
++ limit_item = LIMIT_CHROOT;
} else {
pam_syslog(pamh, LOG_DEBUG, "unknown limit item '%s'", lim_item);
return;
-@@ -591,9 +597,9 @@
+@@ -640,9 +646,9 @@
pam_syslog(pamh, LOG_DEBUG,
"wrong limit value '%s' for limit type '%s'",
lim_value, lim_type);
@@ -48,8 +48,8 @@ Index: pam/modules/pam_limits/pam_limits.c
#ifdef __USE_FILE_OFFSET64
rlimit_value = strtoull (lim_value, &endptr, 10);
#else
-@@ -654,7 +660,11 @@
- #endif
+@@ -717,7 +723,11 @@
+ break;
}
- if ( (limit_item != LIMIT_LOGIN)
@@ -59,10 +59,10 @@ Index: pam/modules/pam_limits/pam_limits.c
+ }
+ else if ( (limit_item != LIMIT_LOGIN)
&& (limit_item != LIMIT_NUMSYSLOGINS)
- && (limit_item != LIMIT_PRI) ) {
- if (limit_type & LIMIT_SOFT) {
-@@ -998,6 +1008,15 @@
- retval |= LOGIN_ERR;
+ && (limit_item != LIMIT_PRI)
+ && (limit_item != LIMIT_NONEWPRIVS) ) {
+@@ -1071,6 +1081,15 @@
+ }
}
+ if (!retval && pl->chroot_dir[0]) {
@@ -81,7 +81,7 @@ Index: pam/modules/pam_limits/limits.conf.5.xml
===================================================================
--- pam.orig/modules/pam_limits/limits.conf.5.xml
+++ pam/modules/pam_limits/limits.conf.5.xml
-@@ -266,6 +266,12 @@
+@@ -273,6 +273,12 @@
(Linux 2.6.12 and higher)</para>
</listitem>
</varlistentry>
@@ -98,7 +98,7 @@ Index: pam/modules/pam_limits/limits.conf.5
===================================================================
--- pam.orig/modules/pam_limits/limits.conf.5
+++ pam/modules/pam_limits/limits.conf.5
-@@ -271,6 +271,11 @@
+@@ -279,6 +279,11 @@
.RS 4
maximum realtime priority allowed for non\-privileged processes (Linux 2\&.6\&.12 and higher)
.RE
@@ -114,7 +114,7 @@ Index: pam/modules/pam_limits/limits.conf
===================================================================
--- pam.orig/modules/pam_limits/limits.conf
+++ pam/modules/pam_limits/limits.conf
-@@ -35,6 +35,7 @@
+@@ -46,6 +46,7 @@
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
@@ -122,7 +122,7 @@ Index: pam/modules/pam_limits/limits.conf
#
#<domain> <type> <item> <value>
#
-@@ -45,6 +46,7 @@
+@@ -56,6 +57,7 @@
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
diff --git a/debian/patches-applied/022_pam_unix_group_time_miscfixes b/debian/patches-applied/022_pam_unix_group_time_miscfixes
index b940aa27..8239fd98 100644
--- a/debian/patches-applied/022_pam_unix_group_time_miscfixes
+++ b/debian/patches-applied/022_pam_unix_group_time_miscfixes
@@ -6,7 +6,7 @@ Index: pam/modules/pam_group/pam_group.c
===================================================================
--- pam.orig/modules/pam_group/pam_group.c
+++ pam/modules/pam_group/pam_group.c
-@@ -761,9 +761,12 @@
+@@ -754,9 +754,12 @@
unsigned setting;
/* only interested in establishing credentials */
diff --git a/debian/patches-applied/026_pam_unix_passwd_unknown_user b/debian/patches-applied/026_pam_unix_passwd_unknown_user
index 99ac3f62..d277fee9 100644
--- a/debian/patches-applied/026_pam_unix_passwd_unknown_user
+++ b/debian/patches-applied/026_pam_unix_passwd_unknown_user
@@ -5,7 +5,7 @@ Index: pam/modules/pam_unix/passverify.c
===================================================================
--- pam.orig/modules/pam_unix/passverify.c
+++ pam/modules/pam_unix/passverify.c
-@@ -749,7 +749,7 @@
+@@ -801,7 +801,7 @@
struct passwd *tmpent = NULL;
struct stat st;
FILE *pwfile, *opwfile;
@@ -13,8 +13,8 @@ Index: pam/modules/pam_unix/passverify.c
+ int err = 1, found = 0;
int oldmask;
#ifdef WITH_SELINUX
- security_context_t prev_context=NULL;
-@@ -820,6 +820,7 @@
+ char *prev_context_raw = NULL;
+@@ -872,6 +872,7 @@
tmpent->pw_passwd = assigned_passwd.charp;
err = 0;
@@ -22,7 +22,7 @@ Index: pam/modules/pam_unix/passverify.c
}
if (putpwent(tmpent, pwfile)) {
D(("error writing entry to password file: %m"));
-@@ -862,7 +863,7 @@
+@@ -914,7 +915,7 @@
return PAM_SUCCESS;
} else {
unlink(PW_TMPFILE);
diff --git a/debian/patches-applied/027_pam_limits_better_init_allow_explicit_root b/debian/patches-applied/027_pam_limits_better_init_allow_explicit_root
index 5ac946f5..c4603f5a 100644
--- a/debian/patches-applied/027_pam_limits_better_init_allow_explicit_root
+++ b/debian/patches-applied/027_pam_limits_better_init_allow_explicit_root
@@ -17,7 +17,7 @@ Index: pam/modules/pam_limits/pam_limits.c
===================================================================
--- pam.orig/modules/pam_limits/pam_limits.c
+++ pam/modules/pam_limits/pam_limits.c
-@@ -46,6 +46,14 @@
+@@ -47,6 +47,14 @@
#include <libaudit.h>
#endif
@@ -32,7 +32,7 @@ Index: pam/modules/pam_limits/pam_limits.c
/* Module defines */
#define LINE_LENGTH 1024
-@@ -83,6 +91,7 @@
+@@ -84,6 +92,7 @@
/* internal data */
struct pam_limit_s {
@@ -40,7 +40,7 @@ Index: pam/modules/pam_limits/pam_limits.c
int login_limit; /* the max logins limit */
int login_limit_def; /* which entry set the login limit */
int flag_numsyslogins; /* whether to limit logins only for a
-@@ -448,9 +457,18 @@
+@@ -447,9 +456,18 @@
{
int i;
int retval = PAM_SUCCESS;
@@ -59,7 +59,7 @@ Index: pam/modules/pam_limits/pam_limits.c
for(i = 0; i < RLIM_NLIMITS; i++) {
int r = getrlimit(i, &pl->limits[i].limit);
if (r == -1) {
-@@ -466,18 +484,68 @@
+@@ -465,18 +483,68 @@
}
#ifdef __linux__
@@ -134,7 +134,7 @@ Index: pam/modules/pam_limits/pam_limits.c
errno = 0;
pl->priority = getpriority (PRIO_PROCESS, 0);
-@@ -816,7 +884,7 @@
+@@ -881,7 +949,7 @@
if (strcmp(uname, domain) == 0) /* this user have a limit */
process_limit(pamh, LIMITS_DEF_USER, ltype, item, value, ctrl, pl);
@@ -143,7 +143,7 @@ Index: pam/modules/pam_limits/pam_limits.c
if (ctrl & PAM_DEBUG_ARG) {
pam_syslog(pamh, LOG_DEBUG,
"checking if %s is in group %s",
-@@ -842,7 +910,7 @@
+@@ -907,7 +975,7 @@
process_limit(pamh, LIMITS_DEF_GROUP, ltype, item, value, ctrl,
pl);
}
@@ -152,7 +152,7 @@ Index: pam/modules/pam_limits/pam_limits.c
if (ctrl & PAM_DEBUG_ARG) {
pam_syslog(pamh, LOG_DEBUG,
"checking if %s is in group %s",
-@@ -876,7 +944,7 @@
+@@ -941,7 +1009,7 @@
} else {
switch(rngtype) {
case LIMIT_RANGE_NONE:
@@ -161,7 +161,7 @@ Index: pam/modules/pam_limits/pam_limits.c
process_limit(pamh, LIMITS_DEF_DEFAULT, ltype, item, value, ctrl,
pl);
break;
-@@ -1062,6 +1130,8 @@
+@@ -1134,6 +1202,8 @@
return PAM_ABORT;
}
@@ -174,7 +174,7 @@ Index: pam/modules/pam_limits/limits.conf
===================================================================
--- pam.orig/modules/pam_limits/limits.conf
+++ pam/modules/pam_limits/limits.conf
-@@ -11,6 +11,9 @@
+@@ -22,6 +22,9 @@
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
@@ -184,7 +184,7 @@ Index: pam/modules/pam_limits/limits.conf
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
-@@ -41,6 +44,7 @@
+@@ -52,6 +55,7 @@
#
#* soft core 0
@@ -208,7 +208,7 @@ Index: pam/modules/pam_limits/limits.conf.5.xml
</listitem>
</varlistentry>
-@@ -323,6 +328,7 @@
+@@ -333,6 +338,7 @@
</para>
<programlisting>
* soft core 0
@@ -220,7 +220,7 @@ Index: pam/modules/pam_limits/limits.conf.5
===================================================================
--- pam.orig/modules/pam_limits/limits.conf.5
+++ pam/modules/pam_limits/limits.conf.5
-@@ -142,6 +142,10 @@
+@@ -145,6 +145,10 @@
\fB%:\fR\fI<gid>\fR
applicable to maxlogins limit only\&. It limits the total number of logins of all users that are member of the group with the specified gid\&.
.RE
@@ -231,7 +231,7 @@ Index: pam/modules/pam_limits/limits.conf.5
.RE
.PP
\fB<type>\fR
-@@ -317,6 +321,7 @@
+@@ -327,6 +331,7 @@
.\}
.nf
* soft core 0
@@ -243,7 +243,7 @@ Index: pam/modules/pam_limits/README
===================================================================
--- pam.orig/modules/pam_limits/README
+++ pam/modules/pam_limits/README
-@@ -54,6 +54,7 @@
+@@ -56,6 +56,7 @@
limits.conf.
* soft core 0
diff --git a/debian/patches-applied/031_pam_include b/debian/patches-applied/031_pam_include
index 1948f894..16cf6d31 100644
--- a/debian/patches-applied/031_pam_include
+++ b/debian/patches-applied/031_pam_include
@@ -8,7 +8,7 @@ Index: pam/libpam/pam_handlers.c
===================================================================
--- pam.orig/libpam/pam_handlers.c
+++ pam/libpam/pam_handlers.c
-@@ -122,6 +122,10 @@
+@@ -123,6 +123,10 @@
module_type = PAM_T_ACCT;
} else if (!strcasecmp("password", tok)) {
module_type = PAM_T_PASS;
@@ -19,7 +19,7 @@ Index: pam/libpam/pam_handlers.c
} else {
/* Illegal module type */
D(("_pam_init_handlers: bad module type: %s", tok));
-@@ -192,8 +196,10 @@
+@@ -193,8 +197,10 @@
_pam_set_default_control(actions, _PAM_ACTION_BAD);
}
@@ -30,7 +30,7 @@ Index: pam/libpam/pam_handlers.c
if (substack) {
res = _pam_add_handler(pamh, PAM_HT_SUBSTACK, other,
stack_level, module_type, actions, tok,
-@@ -204,13 +210,35 @@
+@@ -205,13 +211,35 @@
return PAM_ABORT;
}
}
diff --git a/debian/patches-applied/032_pam_limits_EPERM_NOT_FATAL b/debian/patches-applied/032_pam_limits_EPERM_NOT_FATAL
index d5ce6953..ec97b441 100644
--- a/debian/patches-applied/032_pam_limits_EPERM_NOT_FATAL
+++ b/debian/patches-applied/032_pam_limits_EPERM_NOT_FATAL
@@ -11,7 +11,7 @@ Index: pam/modules/pam_limits/pam_limits.c
===================================================================
--- pam.orig/modules/pam_limits/pam_limits.c
+++ pam/modules/pam_limits/pam_limits.c
-@@ -1046,6 +1046,8 @@
+@@ -1111,6 +1111,8 @@
if (res != 0)
pam_syslog(pamh, LOG_ERR, "Could not set limit for '%s': %m",
rlimit2str(i));
diff --git a/debian/patches-applied/036_pam_wheel_getlogin_considered_harmful b/debian/patches-applied/036_pam_wheel_getlogin_considered_harmful
index ca465d99..805c62f4 100644
--- a/debian/patches-applied/036_pam_wheel_getlogin_considered_harmful
+++ b/debian/patches-applied/036_pam_wheel_getlogin_considered_harmful
@@ -12,7 +12,7 @@ Index: pam/modules/pam_wheel/pam_wheel.c
===================================================================
--- pam.orig/modules/pam_wheel/pam_wheel.c
+++ pam/modules/pam_wheel/pam_wheel.c
-@@ -60,9 +60,8 @@
+@@ -47,9 +47,8 @@
/* argument parsing */
#define PAM_DEBUG_ARG 0x0001
@@ -24,7 +24,7 @@ Index: pam/modules/pam_wheel/pam_wheel.c
#define PAM_ROOT_ONLY_ARG 0x0020
static int
-@@ -80,8 +79,7 @@
+@@ -68,8 +67,7 @@
if (!strcmp(*argv,"debug"))
ctrl |= PAM_DEBUG_ARG;
@@ -34,35 +34,47 @@ Index: pam/modules/pam_wheel/pam_wheel.c
else if (!strcmp(*argv,"trust"))
ctrl |= PAM_TRUST_ARG;
else if (!strcmp(*argv,"deny"))
-@@ -129,27 +127,14 @@
+@@ -118,39 +116,14 @@
}
}
- if (ctrl & PAM_USE_UID_ARG) {
-- tpwd = pam_modutil_getpwuid (pamh, getuid());
-- if (!tpwd) {
-- if (ctrl & PAM_DEBUG_ARG) {
+- tpwd = pam_modutil_getpwuid (pamh, getuid());
+- if (tpwd == NULL) {
+- if (ctrl & PAM_DEBUG_ARG) {
- pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
-- }
-- return PAM_SERVICE_ERR;
-- }
-- fromsu = tpwd->pw_name;
+- }
+- return PAM_SERVICE_ERR;
+- }
+- fromsu = tpwd->pw_name;
- } else {
-- fromsu = pam_modutil_getlogin(pamh);
-- if (fromsu) {
-- tpwd = pam_modutil_getpwnam (pamh, fromsu);
-- }
-- if (!fromsu || !tpwd) {
-- if (ctrl & PAM_DEBUG_ARG) {
-- pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
-- }
-- return PAM_SERVICE_ERR;
+- fromsu = pam_modutil_getlogin(pamh);
+-
+- /* if getlogin fails try a fallback to PAM_RUSER */
+- if (fromsu == NULL) {
+- const char *rhostname;
+-
+- retval = pam_get_item(pamh, PAM_RHOST, (const void **)&rhostname);
+- if (retval != PAM_SUCCESS || rhostname == NULL) {
+- retval = pam_get_item(pamh, PAM_RUSER, (const void **)&fromsu);
+- }
+- }
+-
+- if (fromsu != NULL) {
+- tpwd = pam_modutil_getpwnam (pamh, fromsu);
+- }
+-
+- if (fromsu == NULL || tpwd == NULL) {
+- if (ctrl & PAM_DEBUG_ARG) {
+- pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
+- }
+- return PAM_SERVICE_ERR;
+ tpwd = pam_modutil_getpwuid (pamh, getuid());
-+ if (!tpwd) {
-+ if (ctrl & PAM_DEBUG_ARG) {
-+ pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
- }
-+ return PAM_SERVICE_ERR;
++ if (tpwd == NULL) {
++ if (ctrl & PAM_DEBUG_ARG) {
++ pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
+ }
++ return PAM_SERVICE_ERR;
}
+ fromsu = tpwd->pw_name;
@@ -92,9 +104,9 @@ Index: pam/modules/pam_wheel/pam_wheel.8.xml
- </term>
- <listitem>
- <para>
-- The check for wheel membership will be done against
-- the current uid instead of the original one (useful when
-- jumping with su from one account to another for example).
+- The check will be done against the real uid of the calling process,
+- instead of trying to obtain the user from the login session
+- associated with the terminal in use.
- </para>
- </listitem>
- </varlistentry>
@@ -121,7 +133,7 @@ Index: pam/modules/pam_wheel/pam_wheel.8
-.PP
-\fBuse_uid\fR
-.RS 4
--The check for wheel membership will be done against the current uid instead of the original one (useful when jumping with su from one account to another for example)\&.
+-The check will be done against the real uid of the calling process, instead of trying to obtain the user from the login session associated with the terminal in use\&.
-.RE
.SH "MODULE TYPES PROVIDED"
.PP
@@ -136,9 +148,9 @@ Index: pam/modules/pam_wheel/README
-use_uid
-
-- The check for wheel membership will be done against the current uid instead
-- of the original one (useful when jumping with su from one account to
-- another for example).
+- The check will be done against the real uid of the calling process, instead
+- of trying to obtain the user from the login session associated with the
+- terminal in use.
-
EXAMPLES
diff --git a/debian/patches-applied/040_pam_limits_log_failure b/debian/patches-applied/040_pam_limits_log_failure
index 616887c3..0ef703bf 100644
--- a/debian/patches-applied/040_pam_limits_log_failure
+++ b/debian/patches-applied/040_pam_limits_log_failure
@@ -11,7 +11,7 @@ Index: pam/modules/pam_limits/pam_limits.c
===================================================================
--- pam.orig/modules/pam_limits/pam_limits.c
+++ pam/modules/pam_limits/pam_limits.c
-@@ -1043,9 +1043,19 @@
+@@ -1108,9 +1108,19 @@
if (pl->limits[i].limit.rlim_cur > pl->limits[i].limit.rlim_max)
pl->limits[i].limit.rlim_cur = pl->limits[i].limit.rlim_max;
res = setrlimit(i, &pl->limits[i].limit);
diff --git a/debian/patches-applied/PAM-manpage-section b/debian/patches-applied/PAM-manpage-section
index 815c2614..7cdadad3 100644
--- a/debian/patches-applied/PAM-manpage-section
+++ b/debian/patches-applied/PAM-manpage-section
@@ -35,8 +35,8 @@ Index: pam/doc/man/PAM.8
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
--.TH "PAM" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
-+.TH "PAM" "7" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+-.TH "PAM" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
++.TH "PAM" "7" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -128,7 +128,7 @@ Index: pam/modules/pam_limits/limits.conf.5.xml
===================================================================
--- pam.orig/modules/pam_limits/limits.conf.5.xml
+++ pam/modules/pam_limits/limits.conf.5.xml
-@@ -346,7 +346,7 @@
+@@ -357,7 +357,7 @@
<para>
<citerefentry><refentrytitle>pam_limits</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
@@ -141,7 +141,7 @@ Index: pam/modules/pam_limits/limits.conf.5
===================================================================
--- pam.orig/modules/pam_limits/limits.conf.5
+++ pam/modules/pam_limits/limits.conf.5
-@@ -343,7 +343,7 @@
+@@ -351,7 +351,7 @@
.PP
\fBpam_limits\fR(8),
\fBpam.d\fR(5),
@@ -228,32 +228,6 @@ Index: pam/modules/pam_access/pam_access.8
.SH "AUTHORS"
.PP
The logdaemon style login access control scheme was designed and implemented by Wietse Venema\&. The pam_access PAM module was developed by Alexei Nogin <alexei@nogin\&.dnttm\&.ru>\&. The IPv6 support and the network(address) / netmask feature was developed and provided by Mike Becher <mike\&.becher@lrz\-muenchen\&.de>\&.
-Index: pam/modules/pam_cracklib/pam_cracklib.8.xml
-===================================================================
---- pam.orig/modules/pam_cracklib/pam_cracklib.8.xml
-+++ pam/modules/pam_cracklib/pam_cracklib.8.xml
-@@ -577,7 +577,7 @@
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
-- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
-+ <refentrytitle>pam</refentrytitle><manvolnum>7</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-Index: pam/modules/pam_cracklib/pam_cracklib.8
-===================================================================
---- pam.orig/modules/pam_cracklib/pam_cracklib.8
-+++ pam/modules/pam_cracklib/pam_cracklib.8
-@@ -357,7 +357,7 @@
- .PP
- \fBpam.conf\fR(5),
- \fBpam.d\fR(5),
--\fBpam\fR(8)
-+\fBpam\fR(7)
- .SH "AUTHOR"
- .PP
- pam_cracklib was written by Cristian Gafton <gafton@redhat\&.com>
Index: pam/modules/pam_debug/pam_debug.8.xml
===================================================================
--- pam.orig/modules/pam_debug/pam_debug.8.xml
@@ -336,7 +310,7 @@ Index: pam/modules/pam_env/pam_env.8.xml
===================================================================
--- pam.orig/modules/pam_env/pam_env.8.xml
+++ pam/modules/pam_env/pam_env.8.xml
-@@ -246,7 +246,7 @@
+@@ -254,7 +254,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -349,7 +323,7 @@ Index: pam/modules/pam_exec/pam_exec.8.xml
===================================================================
--- pam.orig/modules/pam_exec/pam_exec.8.xml
+++ pam/modules/pam_exec/pam_exec.8.xml
-@@ -287,7 +287,7 @@
+@@ -303,7 +303,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -362,7 +336,7 @@ Index: pam/modules/pam_exec/pam_exec.8
===================================================================
--- pam.orig/modules/pam_exec/pam_exec.8
+++ pam/modules/pam_exec/pam_exec.8
-@@ -177,7 +177,7 @@
+@@ -182,7 +182,7 @@
.PP
\fBpam.conf\fR(5),
\fBpam.d\fR(5),
@@ -687,7 +661,7 @@ Index: pam/modules/pam_mkhomedir/pam_mkhomedir.8.xml
===================================================================
--- pam.orig/modules/pam_mkhomedir/pam_mkhomedir.8.xml
+++ pam/modules/pam_mkhomedir/pam_mkhomedir.8.xml
-@@ -198,7 +198,7 @@
+@@ -205,7 +205,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -700,7 +674,7 @@ Index: pam/modules/pam_mkhomedir/pam_mkhomedir.8
===================================================================
--- pam.orig/modules/pam_mkhomedir/pam_mkhomedir.8
+++ pam/modules/pam_mkhomedir/pam_mkhomedir.8
-@@ -124,7 +124,7 @@
+@@ -129,7 +129,7 @@
.SH "SEE ALSO"
.PP
\fBpam.d\fR(5),
@@ -713,7 +687,7 @@ Index: pam/modules/pam_motd/pam_motd.8.xml
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.8.xml
+++ pam/modules/pam_motd/pam_motd.8.xml
-@@ -195,7 +195,7 @@
+@@ -196,7 +196,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -739,7 +713,7 @@ Index: pam/modules/pam_namespace/pam_namespace.8.xml
===================================================================
--- pam.orig/modules/pam_namespace/pam_namespace.8.xml
+++ pam/modules/pam_namespace/pam_namespace.8.xml
-@@ -399,7 +399,7 @@
+@@ -362,7 +362,7 @@
<refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum>
</citerefentry>,
<citerefentry>
@@ -752,7 +726,7 @@ Index: pam/modules/pam_namespace/pam_namespace.8
===================================================================
--- pam.orig/modules/pam_namespace/pam_namespace.8
+++ pam/modules/pam_namespace/pam_namespace.8
-@@ -178,7 +178,7 @@
+@@ -148,7 +148,7 @@
\fBnamespace.conf\fR(5),
\fBpam.d\fR(5),
\fBmount\fR(8),
@@ -912,8 +886,8 @@ Index: pam/modules/pam_selinux/pam_selinux.8
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
--.TH "PAM_SELINUX" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
-+.TH "PAM_SELINUX" "7" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+-.TH "PAM_SELINUX" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
++.TH "PAM_SELINUX" "7" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -1004,32 +978,6 @@ Index: pam/modules/pam_succeed_if/pam_succeed_if.8
.SH "AUTHOR"
.PP
Nalin Dahyabhai <nalin@redhat\&.com>
-Index: pam/modules/pam_tally/pam_tally.8.xml
-===================================================================
---- pam.orig/modules/pam_tally/pam_tally.8.xml
-+++ pam/modules/pam_tally/pam_tally.8.xml
-@@ -444,7 +444,7 @@
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
-- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
-+ <refentrytitle>pam</refentrytitle><manvolnum>7</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-Index: pam/modules/pam_tally/pam_tally.8
-===================================================================
---- pam.orig/modules/pam_tally/pam_tally.8
-+++ pam/modules/pam_tally/pam_tally.8
-@@ -250,7 +250,7 @@
- \fBfaillog\fR(8),
- \fBpam.conf\fR(5),
- \fBpam.d\fR(5),
--\fBpam\fR(8)
-+\fBpam\fR(7)
- .SH "AUTHOR"
- .PP
- pam_tally was written by Tim Baverstock and Tomas Mraz\&.
Index: pam/modules/pam_time/pam_time.8.xml
===================================================================
--- pam.orig/modules/pam_time/pam_time.8.xml
@@ -1504,7 +1452,7 @@ Index: pam/modules/pam_userdb/pam_userdb.8.xml
===================================================================
--- pam.orig/modules/pam_userdb/pam_userdb.8.xml
+++ pam/modules/pam_userdb/pam_userdb.8.xml
-@@ -278,7 +278,7 @@
+@@ -279,7 +279,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -1612,8 +1560,8 @@ Index: pam/modules/pam_env/pam_env.8
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
--.TH "PAM_ENV" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
-+.TH "PAM_ENV" "7" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+-.TH "PAM_ENV" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
++.TH "PAM_ENV" "7" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -1669,37 +1617,11 @@ Index: pam/modules/pam_sepermit/sepermit.conf.5
\fBselinux\fR(8),
.SH "AUTHOR"
.PP
-Index: pam/modules/pam_tally2/pam_tally2.8.xml
-===================================================================
---- pam.orig/modules/pam_tally2/pam_tally2.8.xml
-+++ pam/modules/pam_tally2/pam_tally2.8.xml
-@@ -435,7 +435,7 @@
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
-- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
-+ <refentrytitle>pam</refentrytitle><manvolnum>7</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-Index: pam/modules/pam_tally2/pam_tally2.8
-===================================================================
---- pam.orig/modules/pam_tally2/pam_tally2.8
-+++ pam/modules/pam_tally2/pam_tally2.8
-@@ -238,7 +238,7 @@
- .PP
- \fBpam.conf\fR(5),
- \fBpam.d\fR(5),
--\fBpam\fR(8)
-+\fBpam\fR(7)
- .SH "AUTHOR"
- .PP
- pam_tally2 was written by Tim Baverstock and Tomas Mraz\&.
Index: pam/modules/pam_timestamp/pam_timestamp.8.xml
===================================================================
--- pam.orig/modules/pam_timestamp/pam_timestamp.8.xml
+++ pam/modules/pam_timestamp/pam_timestamp.8.xml
-@@ -188,7 +188,7 @@
+@@ -193,7 +193,7 @@
<refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
</citerefentry>,
<citerefentry>
@@ -1712,7 +1634,7 @@ Index: pam/modules/pam_timestamp/pam_timestamp.8
===================================================================
--- pam.orig/modules/pam_timestamp/pam_timestamp.8
+++ pam/modules/pam_timestamp/pam_timestamp.8
-@@ -124,7 +124,7 @@
+@@ -129,7 +129,7 @@
\fBpam_timestamp_check\fR(8),
\fBpam.conf\fR(5),
\fBpam.d\fR(5),
@@ -1746,7 +1668,7 @@ Index: pam/modules/pam_timestamp/pam_timestamp_check.8
+\fBpam\fR(7)
.SH "AUTHOR"
.PP
- pam_tally was written by Nalin Dahyabhai\&.
+ pam_timestamp was written by Nalin Dahyabhai\&.
Index: pam/modules/pam_tty_audit/pam_tty_audit.8.xml
===================================================================
--- pam.orig/modules/pam_tty_audit/pam_tty_audit.8.xml
diff --git a/debian/patches-applied/make_documentation_reproducible.patch b/debian/patches-applied/make_documentation_reproducible.patch
index ed15df13..b6a4bfe3 100644
--- a/debian/patches-applied/make_documentation_reproducible.patch
+++ b/debian/patches-applied/make_documentation_reproducible.patch
@@ -8,7 +8,7 @@ Index: pam/configure.ac
===================================================================
--- pam.orig/configure.ac
+++ pam/configure.ac
-@@ -619,7 +619,7 @@
+@@ -585,7 +585,7 @@
AC_PATH_PROG([BROWSER], [w3m])
if test -n "$BROWSER"; then
diff --git a/debian/patches-applied/pam-limits-nofile-fd-setsize-cap b/debian/patches-applied/pam-limits-nofile-fd-setsize-cap
index 302c911f..9c0503c7 100644
--- a/debian/patches-applied/pam-limits-nofile-fd-setsize-cap
+++ b/debian/patches-applied/pam-limits-nofile-fd-setsize-cap
@@ -43,7 +43,7 @@ Index: pam/modules/pam_limits/pam_limits.c
===================================================================
--- pam.orig/modules/pam_limits/pam_limits.c
+++ pam/modules/pam_limits/pam_limits.c
-@@ -451,6 +451,14 @@
+@@ -450,6 +450,14 @@
pl->limits[i].src_hard = LIMITS_DEF_KERNEL;
}
fclose(limitsfile);
diff --git a/debian/patches-applied/pam_env-allow-environment-files-without-EOL-at-EOF.patch b/debian/patches-applied/pam_env-allow-environment-files-without-EOL-at-EOF.patch
deleted file mode 100644
index 340e4a7f..00000000
--- a/debian/patches-applied/pam_env-allow-environment-files-without-EOL-at-EOF.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: Tomas Mraz <tmraz@fedoraproject.org>
-Date: Wed, 4 Nov 2020 09:37:36 +0100
-Subject: 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()
-
-Origin: upstream, https://github.com/linux-pam/linux-pam/commit/12824dd648b0668968231044ed805d1f3b212d7e
-Applied-Upstream: 1.5.0
-Bug: https://github.com/linux-pam/linux-pam/issues/263
-Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/pam/+bug/1953201
-Reviewed-By: Sergio Durigan Junior <sergiodj@ubuntu.com>
----
- modules/pam_env/pam_env.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/pam_env/pam_env.c b/modules/pam_env/pam_env.c
-index 79d4372..4aa3777 100644
---- a/modules/pam_env/pam_env.c
-+++ b/modules/pam_env/pam_env.c
-@@ -311,7 +311,7 @@ static int _assemble_line(FILE *f, char *buffer, int buf_len)
- D(("_assemble_line: corrupted or binary file"));
- return -1;
- }
-- if (p[strlen(p)-1] != '\n') {
-+ if (p[strlen(p)-1] != '\n' && !feof(f)) {
- D(("_assemble_line: line too long"));
- return -1;
- }
diff --git a/debian/patches-applied/pam_faillock_create_directory b/debian/patches-applied/pam_faillock_create_directory
deleted file mode 100644
index 420e2937..00000000
--- a/debian/patches-applied/pam_faillock_create_directory
+++ /dev/null
@@ -1,31 +0,0 @@
-commit d54870f993e97fe75e2cd0470a3701d5af22877c
-Author: Changqing Li <changqing.li@windriver.com>
-Date: Tue Jan 12 14:45:34 2021 +0800
-
- 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.
-
- Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
-Index: pam/modules/pam_faillock/faillock.c
-===================================================================
---- pam.orig/modules/pam_faillock/faillock.c
-+++ pam/modules/pam_faillock/faillock.c
-@@ -74,6 +74,9 @@ open_tally (const char *dir, const char
-
- if (create) {
- flags |= O_CREAT;
-+ if (access(dir, F_OK) != 0) {
-+ mkdir(dir, 0755);
-+ }
- }
-
- fd = open(path, flags, 0600);
diff --git a/debian/patches-applied/pam_mkhomedir_stat_before_opendir b/debian/patches-applied/pam_mkhomedir_stat_before_opendir
index 3e5f0a12..aec49b69 100644
--- a/debian/patches-applied/pam_mkhomedir_stat_before_opendir
+++ b/debian/patches-applied/pam_mkhomedir_stat_before_opendir
@@ -2,7 +2,7 @@ Index: pam/modules/pam_mkhomedir/mkhomedir_helper.c
===================================================================
--- pam.orig/modules/pam_mkhomedir/mkhomedir_helper.c
+++ pam/modules/pam_mkhomedir/mkhomedir_helper.c
-@@ -38,6 +38,7 @@ create_homedir(const struct passwd *pwd,
+@@ -39,6 +39,7 @@
DIR *d;
struct dirent *dent;
int retval = PAM_SESSION_ERR;
@@ -10,7 +10,7 @@ Index: pam/modules/pam_mkhomedir/mkhomedir_helper.c
/* Create the new directory */
if (mkdir(dest, 0700) && errno != EEXIST)
-@@ -53,6 +54,12 @@ create_homedir(const struct passwd *pwd,
+@@ -54,6 +55,12 @@
goto go_out;
}
diff --git a/debian/patches-applied/pam_unix_avoid_checksalt b/debian/patches-applied/pam_unix_avoid_checksalt
deleted file mode 100644
index 5a441145..00000000
--- a/debian/patches-applied/pam_unix_avoid_checksalt
+++ /dev/null
@@ -1,43 +0,0 @@
-debian-bug: #992848
-upstream-bug: https://github.com/linux-pam/linux-pam/issues/367
-
-
-From 980d90c9232fe5325d1a4deddd42c597cf9e1a54 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Thu, 10 Jun 2021 14:00:00 +0000
-Subject: [PATCH] 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
----
- modules/pam_unix/passverify.c | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/modules/pam_unix/passverify.c b/modules/pam_unix/passverify.c
-index f6132f805..5a19ed856 100644
---- a/modules/pam_unix/passverify.c
-+++ b/modules/pam_unix/passverify.c
-@@ -289,13 +289,7 @@ PAMH_ARG_DECL(int check_shadow_expiry,
- D(("account expired"));
- return PAM_ACCT_EXPIRED;
- }
--#if defined(CRYPT_CHECKSALT_AVAILABLE) && CRYPT_CHECKSALT_AVAILABLE
-- if (spent->sp_lstchg == 0 ||
-- crypt_checksalt(spent->sp_pwdp) == CRYPT_SALT_METHOD_LEGACY ||
-- crypt_checksalt(spent->sp_pwdp) == CRYPT_SALT_TOO_CHEAP) {
--#else
- if (spent->sp_lstchg == 0) {
--#endif
- D(("need a new password"));
- *daysleft = 0;
- return PAM_NEW_AUTHTOK_REQD;
diff --git a/debian/patches-applied/pam_unix_dont_trust_chkpwd_caller.patch b/debian/patches-applied/pam_unix_dont_trust_chkpwd_caller.patch
index 11d4ee31..6a9e525e 100644
--- a/debian/patches-applied/pam_unix_dont_trust_chkpwd_caller.patch
+++ b/debian/patches-applied/pam_unix_dont_trust_chkpwd_caller.patch
@@ -11,10 +11,10 @@ Index: pam/modules/pam_unix/unix_chkpwd.c
===================================================================
--- pam.orig/modules/pam_unix/unix_chkpwd.c
+++ pam/modules/pam_unix/unix_chkpwd.c
-@@ -137,9 +137,10 @@
+@@ -138,9 +138,10 @@
/* if the caller specifies the username, verify that user
matches it */
- if (strcmp(user, argv[1])) {
+ if (user == NULL || strcmp(user, argv[1])) {
+ gid_t gid = getgid();
user = argv[1];
/* no match -> permanently change to the real user and proceed */
diff --git a/debian/patches-applied/pam_unix_fix_sgid_shadow_auth.patch b/debian/patches-applied/pam_unix_fix_sgid_shadow_auth.patch
deleted file mode 100644
index 0ce85eb7..00000000
--- a/debian/patches-applied/pam_unix_fix_sgid_shadow_auth.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Revert upstream change that prevents pam_unix from working with sgid
-shadow applications.
-
-Authors: Steve Langasek <vorlon@debian.org>
-
-Upstream status: to be submitted (and debated...)
-
-Index: pam/modules/pam_unix/passverify.c
-===================================================================
---- pam.orig/modules/pam_unix/passverify.c
-+++ pam/modules/pam_unix/passverify.c
-@@ -198,11 +198,11 @@
- * ...and shadow password file entry for this user,
- * if shadowing is enabled
- */
-+ *spwdent = pam_modutil_getspnam(pamh, name);
- #ifndef HELPER_COMPILE
-- if (geteuid() || SELINUX_ENABLED)
-+ if (*spwdent == NULL && (geteuid() || SELINUX_ENABLED))
- return PAM_UNIX_RUN_HELPER;
- #endif
-- *spwdent = pam_modutil_getspnam(pamh, name);
- if (*spwdent == NULL || (*spwdent)->sp_pwdp == NULL)
- return PAM_AUTHINFO_UNAVAIL;
- }
diff --git a/debian/patches-applied/pam_unix_initialize_daysleft b/debian/patches-applied/pam_unix_initialize_daysleft
deleted file mode 100644
index e304a16e..00000000
--- a/debian/patches-applied/pam_unix_initialize_daysleft
+++ /dev/null
@@ -1,29 +0,0 @@
-bug-debian: https://bugs.debian.org/980285
-
-commit db6b293046aee4735f3aa2d1713742ed4b533219
-Author: Tomas Mraz <tmraz@fedoraproject.org>
-Date: Wed Jul 22 11:47:55 2020 +0200
-
- 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.
-
-Index: pam/modules/pam_unix/pam_unix_acct.c
-===================================================================
---- pam.orig/modules/pam_unix/pam_unix_acct.c
-+++ pam/modules/pam_unix/pam_unix_acct.c
-@@ -189,7 +189,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int
- unsigned long long ctrl;
- const void *void_uname;
- const char *uname;
-- int retval, daysleft;
-+ int retval, daysleft = -1;
- char buf[256];
-
- D(("called."));
diff --git a/debian/patches-applied/series b/debian/patches-applied/series
index d3f4a191..3ea285ae 100644
--- a/debian/patches-applied/series
+++ b/debian/patches-applied/series
@@ -1,4 +1,3 @@
-pam_unix_fix_sgid_shadow_auth.patch
pam_unix_dont_trust_chkpwd_caller.patch
make_documentation_reproducible.patch
007_modules_pam_unix
@@ -22,9 +21,4 @@ pam-limits-nofile-fd-setsize-cap
fix-autoreconf.patch
nullok_secure-compat.patch
-pam_unix_initialize_daysleft
-pam_faillock_create_directory
pam_mkhomedir_stat_before_opendir
-pam_unix_avoid_checksalt
-
-pam_env-allow-environment-files-without-EOL-at-EOF.patch
diff --git a/debian/patches-applied/update-motd b/debian/patches-applied/update-motd
index d84ecf57..14d5fee4 100644
--- a/debian/patches-applied/update-motd
+++ b/debian/patches-applied/update-motd
@@ -10,7 +10,7 @@ Index: pam/modules/pam_motd/pam_motd.c
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.c
+++ pam/modules/pam_motd/pam_motd.c
-@@ -286,6 +286,7 @@
+@@ -352,6 +352,7 @@
int argc, const char **argv)
{
int retval = PAM_IGNORE;
@@ -18,7 +18,7 @@ Index: pam/modules/pam_motd/pam_motd.c
const char *motd_path = NULL;
char *motd_path_copy = NULL;
unsigned int num_motd_paths = 0;
-@@ -295,6 +296,7 @@
+@@ -361,6 +362,7 @@
unsigned int num_motd_dir_paths = 0;
char **motd_dir_path_split = NULL;
int report_missing;
@@ -26,7 +26,7 @@ Index: pam/modules/pam_motd/pam_motd.c
if (flags & PAM_SILENT) {
return retval;
-@@ -324,6 +326,9 @@
+@@ -390,6 +392,9 @@
"motd_dir= specification missing argument - ignored");
}
}
@@ -36,7 +36,7 @@ Index: pam/modules/pam_motd/pam_motd.c
else
pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
}
-@@ -336,6 +341,19 @@
+@@ -402,6 +407,19 @@
report_missing = 1;
}
@@ -60,7 +60,7 @@ Index: pam/modules/pam_motd/pam_motd.8.xml
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.8.xml
+++ pam/modules/pam_motd/pam_motd.8.xml
-@@ -114,6 +114,17 @@
+@@ -115,6 +115,17 @@
</para>
</listitem>
</varlistentry>
@@ -100,7 +100,7 @@ Index: pam/modules/pam_motd/README
===================================================================
--- pam.orig/modules/pam_motd/README
+++ pam/modules/pam_motd/README
-@@ -51,6 +51,10 @@
+@@ -52,6 +52,10 @@
colon-separated list. By default this option is set to /etc/motd.d:/run/
motd.d:/usr/lib/motd.d.
diff --git a/debian/po/ro.po b/debian/po/ro.po
index be2b7bc7..2752ae40 100644
--- a/debian/po/ro.po
+++ b/debian/po/ro.po
@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: pam 1.0.1-7\n"
"Report-Msgid-Bugs-To: pam@packages.debian.org\n"
"POT-Creation-Date: 2021-02-26 10:32-0500\n"
-"PO-Revision-Date: 2011-03-29 13:01-0700\n"
-"Last-Translator: Eddy Petrișor <eddy.petrisor@gmail.com>\n"
+"PO-Revision-Date: 2021-04-05 16:44+0300\n"
+"Last-Translator: Andrei POPESCU <andreimpopescu@gmail.com>\n"
"Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
@@ -30,21 +30,14 @@ msgstr "Serviciile repornite la actualizarea bibliotecii PAM:"
#. Type: string
#. Description
#: ../libpam0g.templates:1001
-#, fuzzy
-#| msgid ""
-#| "Most services that use PAM need to be restarted to use modules built for "
-#| "this new version of libpam. Please review the following space-separated "
-#| "list of init.d scripts for services to be restarted now, and correct it "
-#| "if needed."
msgid ""
"Most services that use PAM need to be restarted to use modules built for "
"this new version of libpam. Please review the following space-separated "
"list of services to be restarted now, and correct it if needed."
msgstr ""
"Majoritatea serviciilor ce folosesc PAM trebuie repornite pentru a folosi "
-"modulele pentru noua versiune de libpam. Următoarea listă folosește ca "
-"separator spațiul și conține script-uri init.d care urmează să fie repornite "
-"acum; verificați-o și corectați-o, dacă este necesar."
+"modulele pentru noua versiune de libpam. Verificați și ajustați după caz "
+"lista următoare (separată prin spațiu) cu servicii care trebuie repornite."
#. Type: error
#. Description
@@ -97,6 +90,7 @@ msgstr ""
#: ../libpam0g.templates:4001
msgid "Restart services during package upgrades without asking?"
msgstr ""
+"Să se repornească serviciile fără confirmare în timpul unei actualizări?"
#. Type: boolean
#. Description
@@ -110,12 +104,19 @@ msgid ""
"necessary restarts will be done for you automatically so you can avoid being "
"asked questions on each library upgrade."
msgstr ""
+"Pe acest sistem sunt instalate servicii care trebuie repornite atunci când "
+"anumite biblioteci, cum ar fi libpam, libc și libssl sunt actualizate. "
+"Deoarece aceste reporniri pot cauza întreruperi în furnizarea serviciului în "
+"mod normal se solicită confirmarea listei de servicii pe care doriți să le "
+"reporniți la fiecare actualizare. Puteți alege această opțiune pentru a "
+"evita confirmarea. ÃŽn schimb toate repornirile necesare vor fi executate "
+"automat pentru a evita întrebările la fiecare actualizare de biblioteci."
#. Type: title
#. Description
#: ../libpam-runtime.templates:1001
msgid "PAM configuration"
-msgstr ""
+msgstr "Configurarea PAM"
#. Type: multiselect
#. Description
@@ -193,10 +194,8 @@ msgstr ""
#. Type: error
#. Description
#: ../libpam-runtime.templates:5001
-#, fuzzy
-#| msgid "Incompatible PAM profiles selected."
msgid "No PAM profiles have been selected."
-msgstr "Selecție de profile PAM incompatibile."
+msgstr "Nu au fost selectate profile PAM."
#. Type: error
#. Description
@@ -206,6 +205,9 @@ msgid ""
"all users access without authenticating, and is not allowed. Please select "
"at least one PAM profile from the available list."
msgstr ""
+"Nu a fost ales nici un profil PAM pentru a fi folosit pe acest sistem. Acest "
+"lucru ar permite tuturor utilizatorilor accesul fără autentificare, ceea ce "
+"nu este permis. Selectați cel puțin un profil PAM din lista disponibilă."
#. Type: error
#. Description
@@ -235,7 +237,7 @@ msgstr ""
#. Description
#: ../libpam-modules.templates:2001
msgid "PAM Profiles with Deprecated Modules Disabled"
-msgstr ""
+msgstr "Profilele PAM cu module învechite au fost dezactivate"
#. Type: error
#. Description
@@ -246,12 +248,16 @@ msgid ""
"prevent users from accessing your system. As a result, these profiles have "
"been disabled."
msgstr ""
+"Acest sistem are profile PAM activate cu modulele PAM ${modules}. Aceste "
+"module au fost scoase din PAM. Păstrarea acestor profile PAM activate ar "
+"împiedica accesul utilizatorilor la sistem. În consecință aceste profile au "
+"fost dezactivate."
#. Type: error
#. Description
#: ../libpam-modules.templates:3001
msgid "you are using pam_tally or pam_tally2 in your configuration"
-msgstr ""
+msgstr "folosiți pam_tally sau pam_tally2"
#. Type: error
#. Description
@@ -263,9 +269,14 @@ msgid ""
"modules in your PAM configuration after the upgrade will stop users from "
"being able to log into the system."
msgstr ""
+"Modulele pam_tally și pam_tally2 au fost scoase din PAM. Acum utilizați unul "
+"din aceste module în configurația PAM din /etc/pam.d. Înainde de a putea "
+"actualiza PAM utilizarea acestor module trebuie oprită. Includerea acestor "
+"module după actualizare în configurația PAM va împiedica accesul "
+"utilizatorilor la sistem."
#. Type: error
#. Description
#: ../libpam-modules.templates:3001
msgid "Consider the pam_faillock module as a replacement for pam_tally."
-msgstr ""
+msgstr "Modulul pam_faillock are putea fi un înlocuitor pentru pam_tally."
diff --git a/debian/rules b/debian/rules
index aab52a3a..73b3ffea 100755
--- a/debian/rules
+++ b/debian/rules
@@ -30,7 +30,6 @@ override_dh_auto_configure:
dh_auto_configure -- --enable-static --enable-shared \
--libdir=/lib/$(DEB_HOST_MULTIARCH) \
--enable-isadir=/lib/security \
- --enable-cracklib \
--disable-nis \
$(CONFIGURE_OPTS)
@@ -38,10 +37,7 @@ override_dh_auto_configure:
# our module that doesn't match right here
override_dh_install:
sed -e"s/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g" $(d)/libpam0g-dev.install.in > $(d)/libpam0g-dev.install
-ifneq (,$(findstring libpam-modules, $(shell dh_listpackages)))
- dh_install -plibpam-modules -Xpam_cracklib
-endif
- dh_install -Nlibpam-modules
+ dh_install
# Make sure the md5sums for the templates we ship are
# recognized by pam-auth-update.
for f in common-auth common-session common-session-noninteractive common-account common-password; do \
@@ -62,7 +58,6 @@ override_dh_installman:
pod2man --section 8 --release="Debian GNU/Linux" $(dl)/pam_getenv >$(dl)/pam_getenv.8
dh_installman
rm -f $(d)/libpam-modules/usr/share/man/man5/pam.conf.5
- rm -f $(d)/libpam-modules/usr/share/man/man8/pam_cracklib.8
rm -f $(d)/libpam-modules/usr/share/man/man8/pam_timestamp_check.8
# dh_link doesn't do wildcards, so we can't auto-link to the right per-arch
diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides
index 037bfc61..85133c70 100644
--- a/debian/source.lintian-overrides
+++ b/debian/source.lintian-overrides
@@ -1,3 +1,2 @@
pam source: dh-quilt-addon-but-quilt-source-format
-pam source: build-depends-on-1-revision build-depends: quilt (>= 0.48-1)
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 64e09979..ff0b3159 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -94,18 +94,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_html_DATA) \
@@ -243,6 +246,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -256,6 +262,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -275,7 +283,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -322,8 +329,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -334,6 +339,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -383,7 +389,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -391,9 +396,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -403,6 +405,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/doc/adg/Makefile.in b/doc/adg/Makefile.in
index 187b1372..194c8a05 100644
--- a/doc/adg/Makefile.in
+++ b/doc/adg/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc/adg
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -152,6 +155,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -165,6 +171,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -184,7 +192,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -231,8 +238,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -243,6 +248,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -292,7 +298,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -300,9 +305,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -312,6 +314,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/doc/custom-man.xsl b/doc/custom-man.xsl
index 4c35e839..a3408e6c 100644
--- a/doc/custom-man.xsl
+++ b/doc/custom-man.xsl
@@ -1,6 +1,6 @@
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" version="1.0">
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/>
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl"/>
<xsl:param name="vendordir"/>
<xsl:param name="man.string.subst.map.local.pre">
diff --git a/doc/man/Makefile.in b/doc/man/Makefile.in
index 669a5ed7..42fd8d0c 100644
--- a/doc/man/Makefile.in
+++ b/doc/man/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc/man
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -186,6 +189,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -199,6 +205,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -218,7 +226,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -265,8 +272,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -277,6 +282,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -326,7 +332,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -334,9 +339,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -346,6 +348,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/doc/man/PAM.8 b/doc/man/PAM.8
index c133f44b..da3a5d6c 100644
--- a/doc/man/PAM.8
+++ b/doc/man/PAM.8
@@ -2,12 +2,12 @@
.\" Title: pam
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/misc_conv.3 b/doc/man/misc_conv.3
index b3cc86fd..8049e57a 100644
--- a/doc/man/misc_conv.3
+++ b/doc/man/misc_conv.3
@@ -2,12 +2,12 @@
.\" Title: misc_conv
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "MISC_CONV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "MISC_CONV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam.3 b/doc/man/pam.3
index 1ec589b3..63f3e768 100644
--- a/doc/man/pam.3
+++ b/doc/man/pam.3
@@ -2,12 +2,12 @@
.\" Title: pam
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam.conf-syntax.xml b/doc/man/pam.conf-syntax.xml
index 7b4edbf2..5112f930 100644
--- a/doc/man/pam.conf-syntax.xml
+++ b/doc/man/pam.conf-syntax.xml
@@ -265,7 +265,8 @@
this action indicates that the return code should be thought
of as indicative of the module failing. If this module is the
first in the stack to fail, its status value will be used for
- that of the whole stack.
+ that of the whole stack. This is the default action for
+ all return codes.
</para>
</listitem>
</varlistentry>
@@ -273,8 +274,9 @@
<term>die</term>
<listitem>
<para>
- equivalent to bad with the side effect of terminating the
- module stack and PAM immediately returning to the application.
+ equivalent to <emphasis>bad</emphasis> with the side effect of
+ terminating the module stack and PAM immediately returning to
+ the application.
</para>
</listitem>
</varlistentry>
@@ -297,8 +299,9 @@
<term>done</term>
<listitem>
<para>
- equivalent to ok with the side effect of terminating the module
- stack and PAM immediately returning to the application.
+ equivalent to <emphasis>ok</emphasis> with the side effect of
+ terminating the module stack and PAM immediately returning to the
+ application unless there was a non-ignored module failure before.
</para>
</listitem>
</varlistentry>
@@ -334,6 +337,13 @@
</variablelist>
<para>
+ If a return code's action is not specifically defined via a
+ <emphasis>valueN</emphasis> token, and the
+ <emphasis>default</emphasis> value is not specified, that return
+ code's action defaults to <emphasis>bad</emphasis>.
+ </para>
+
+ <para>
Each of the four keywords: required; requisite; sufficient; and
optional, have an equivalent expression in terms of the [...]
syntax. They are as follows:
diff --git a/doc/man/pam.conf.5 b/doc/man/pam.conf.5
index e38b425c..703bcf60 100644
--- a/doc/man/pam.conf.5
+++ b/doc/man/pam.conf.5
@@ -2,12 +2,12 @@
.\" Title: pam.conf
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -234,12 +234,14 @@ when used with a stack of modules, the module\*(Aqs return status will not contr
.PP
bad
.RS 4
-this action indicates that the return code should be thought of as indicative of the module failing\&. If this module is the first in the stack to fail, its status value will be used for that of the whole stack\&.
+this action indicates that the return code should be thought of as indicative of the module failing\&. If this module is the first in the stack to fail, its status value will be used for that of the whole stack\&. This is the default action for all return codes\&.
.RE
.PP
die
.RS 4
-equivalent to bad with the side effect of terminating the module stack and PAM immediately returning to the application\&.
+equivalent to
+\fIbad\fR
+with the side effect of terminating the module stack and PAM immediately returning to the application\&.
.RE
.PP
ok
@@ -250,7 +252,9 @@ this tells PAM that the administrator thinks this return code should contribute
.PP
done
.RS 4
-equivalent to ok with the side effect of terminating the module stack and PAM immediately returning to the application\&.
+equivalent to
+\fIok\fR
+with the side effect of terminating the module stack and PAM immediately returning to the application unless there was a non\-ignored module failure before\&.
.RE
.PP
N (an unsigned integer)
@@ -279,6 +283,13 @@ reset
clear all memory of the state of the module stack and start again with the next stacked module\&.
.RE
.PP
+If a return code\*(Aqs action is not specifically defined via a
+\fIvalueN\fR
+token, and the
+\fIdefault\fR
+value is not specified, that return code\*(Aqs action defaults to
+\fIbad\fR\&.
+.PP
Each of the four keywords: required; requisite; sufficient; and optional, have an equivalent expression in terms of the [\&.\&.\&.] syntax\&. They are as follows:
.PP
required
diff --git a/doc/man/pam_acct_mgmt.3 b/doc/man/pam_acct_mgmt.3
index 8e14431f..1d95505f 100644
--- a/doc/man/pam_acct_mgmt.3
+++ b/doc/man/pam_acct_mgmt.3
@@ -2,12 +2,12 @@
.\" Title: pam_acct_mgmt
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ACCT_MGMT" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_ACCT_MGMT" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_authenticate.3 b/doc/man/pam_authenticate.3
index b49c0c70..e3257bfb 100644
--- a/doc/man/pam_authenticate.3
+++ b/doc/man/pam_authenticate.3
@@ -2,12 +2,12 @@
.\" Title: pam_authenticate
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_AUTHENTICATE" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_AUTHENTICATE" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_chauthtok.3 b/doc/man/pam_chauthtok.3
index f4ff84f6..d2e0b460 100644
--- a/doc/man/pam_chauthtok.3
+++ b/doc/man/pam_chauthtok.3
@@ -2,12 +2,12 @@
.\" Title: pam_chauthtok
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_CHAUTHTOK" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_CHAUTHTOK" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_close_session.3 b/doc/man/pam_close_session.3
index 8a6f8d1c..3a7d56b8 100644
--- a/doc/man/pam_close_session.3
+++ b/doc/man/pam_close_session.3
@@ -2,12 +2,12 @@
.\" Title: pam_close_session
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_CLOSE_SESSION" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_CLOSE_SESSION" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_conv.3 b/doc/man/pam_conv.3
index 181604e2..5f65b2e9 100644
--- a/doc/man/pam_conv.3
+++ b/doc/man/pam_conv.3
@@ -2,12 +2,12 @@
.\" Title: pam_conv
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_CONV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_CONV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_end.3 b/doc/man/pam_end.3
index 6311d857..be4815e2 100644
--- a/doc/man/pam_end.3
+++ b/doc/man/pam_end.3
@@ -2,12 +2,12 @@
.\" Title: pam_end
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_END" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_END" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -59,7 +59,7 @@ is used as an argument to the module specific callback function,
and
\fBpam_get_data\fR(3))\&. In this way the module can be given notification of the pass/fail nature of the tear\-down process, and perform any last minute tasks that are appropriate to the module before it is unlinked\&. This argument can be logically OR\*(Aqd with
\fIPAM_DATA_SILENT\fR
-to indicate to indicate that the module should not treat the call too seriously\&. It is generally used to indicate that the current closing of the library is in a
+to indicate that the module should not treat the call too seriously\&. It is generally used to indicate that the current closing of the library is in a
\fBfork\fR(2)ed process, and that the parent will take care of cleaning up things that exist outside of the current process space (files etc\&.)\&.
.PP
This function
diff --git a/doc/man/pam_end.3.xml b/doc/man/pam_end.3.xml
index 039bb3cd..5febf85a 100644
--- a/doc/man/pam_end.3.xml
+++ b/doc/man/pam_end.3.xml
@@ -56,7 +56,7 @@
of the pass/fail nature of the tear-down process, and perform any
last minute tasks that are appropriate to the module before it is
unlinked. This argument can be logically OR'd with
- <emphasis>PAM_DATA_SILENT</emphasis> to indicate to indicate that
+ <emphasis>PAM_DATA_SILENT</emphasis> to indicate that
the module should not treat the call too seriously. It is generally
used to indicate that the current closing of the library is in a
<citerefentry>
diff --git a/doc/man/pam_error.3 b/doc/man/pam_error.3
index 58fcdd26..b28d7080 100644
--- a/doc/man/pam_error.3
+++ b/doc/man/pam_error.3
@@ -2,12 +2,12 @@
.\" Title: pam_error
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ERROR" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_ERROR" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_fail_delay.3 b/doc/man/pam_fail_delay.3
index ea7f0abe..bbf2c361 100644
--- a/doc/man/pam_fail_delay.3
+++ b/doc/man/pam_fail_delay.3
@@ -2,12 +2,12 @@
.\" Title: pam_fail_delay
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_FAIL_DELAY" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_FAIL_DELAY" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_get_authtok.3 b/doc/man/pam_get_authtok.3
index 346f4e1a..755dd689 100644
--- a/doc/man/pam_get_authtok.3
+++ b/doc/man/pam_get_authtok.3
@@ -2,12 +2,12 @@
.\" Title: pam_get_authtok
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GET_AUTHTOK" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GET_AUTHTOK" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_get_data.3 b/doc/man/pam_get_data.3
index 7c6b23ea..3eac2ef4 100644
--- a/doc/man/pam_get_data.3
+++ b/doc/man/pam_get_data.3
@@ -2,12 +2,12 @@
.\" Title: pam_get_data
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GET_DATA" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GET_DATA" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_get_item.3 b/doc/man/pam_get_item.3
index ec0e6e69..b0e05d1c 100644
--- a/doc/man/pam_get_item.3
+++ b/doc/man/pam_get_item.3
@@ -2,12 +2,12 @@
.\" Title: pam_get_item
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GET_ITEM" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GET_ITEM" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_get_user.3 b/doc/man/pam_get_user.3
index 256fae87..12cfaf4f 100644
--- a/doc/man/pam_get_user.3
+++ b/doc/man/pam_get_user.3
@@ -2,12 +2,12 @@
.\" Title: pam_get_user
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GET_USER" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GET_USER" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_getenv.3 b/doc/man/pam_getenv.3
index 96551953..56f32bac 100644
--- a/doc/man/pam_getenv.3
+++ b/doc/man/pam_getenv.3
@@ -2,12 +2,12 @@
.\" Title: pam_getenv
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GETENV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GETENV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_getenvlist.3 b/doc/man/pam_getenvlist.3
index b353f758..9ce441d2 100644
--- a/doc/man/pam_getenvlist.3
+++ b/doc/man/pam_getenvlist.3
@@ -2,12 +2,12 @@
.\" Title: pam_getenvlist
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GETENVLIST" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GETENVLIST" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_info.3 b/doc/man/pam_info.3
index ae58d460..c6d175b9 100644
--- a/doc/man/pam_info.3
+++ b/doc/man/pam_info.3
@@ -2,12 +2,12 @@
.\" Title: pam_info
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_INFO" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_INFO" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_misc_drop_env.3 b/doc/man/pam_misc_drop_env.3
index deaec8b4..5decbe5f 100644
--- a/doc/man/pam_misc_drop_env.3
+++ b/doc/man/pam_misc_drop_env.3
@@ -2,12 +2,12 @@
.\" Title: pam_misc_drop_env
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MISC_DROP_ENV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_MISC_DROP_ENV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_misc_paste_env.3 b/doc/man/pam_misc_paste_env.3
index e0335ef3..41456d1d 100644
--- a/doc/man/pam_misc_paste_env.3
+++ b/doc/man/pam_misc_paste_env.3
@@ -2,12 +2,12 @@
.\" Title: pam_misc_paste_env
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MISC_PASTE_ENV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_MISC_PASTE_ENV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_misc_setenv.3 b/doc/man/pam_misc_setenv.3
index 0d041d41..575456d3 100644
--- a/doc/man/pam_misc_setenv.3
+++ b/doc/man/pam_misc_setenv.3
@@ -2,12 +2,12 @@
.\" Title: pam_misc_setenv
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MISC_SETENV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_MISC_SETENV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_open_session.3 b/doc/man/pam_open_session.3
index 16e08c08..a80a9e11 100644
--- a/doc/man/pam_open_session.3
+++ b/doc/man/pam_open_session.3
@@ -2,12 +2,12 @@
.\" Title: pam_open_session
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_OPEN_SESSION" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_OPEN_SESSION" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_prompt.3 b/doc/man/pam_prompt.3
index 0b2fd933..3ff08e7f 100644
--- a/doc/man/pam_prompt.3
+++ b/doc/man/pam_prompt.3
@@ -2,12 +2,12 @@
.\" Title: pam_prompt
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_PROMPT" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_PROMPT" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_putenv.3 b/doc/man/pam_putenv.3
index 9c58b0de..b832950d 100644
--- a/doc/man/pam_putenv.3
+++ b/doc/man/pam_putenv.3
@@ -2,12 +2,12 @@
.\" Title: pam_putenv
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_PUTENV" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_PUTENV" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_set_data.3 b/doc/man/pam_set_data.3
index 6590fdc8..ea000566 100644
--- a/doc/man/pam_set_data.3
+++ b/doc/man/pam_set_data.3
@@ -2,12 +2,12 @@
.\" Title: pam_set_data
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SET_DATA" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SET_DATA" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_set_item.3 b/doc/man/pam_set_item.3
index 95ee4a23..867897db 100644
--- a/doc/man/pam_set_item.3
+++ b/doc/man/pam_set_item.3
@@ -2,12 +2,12 @@
.\" Title: pam_set_item
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SET_ITEM" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SET_ITEM" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_setcred.3 b/doc/man/pam_setcred.3
index 893477eb..3ed0fd74 100644
--- a/doc/man/pam_setcred.3
+++ b/doc/man/pam_setcred.3
@@ -2,12 +2,12 @@
.\" Title: pam_setcred
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SETCRED" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SETCRED" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_acct_mgmt.3 b/doc/man/pam_sm_acct_mgmt.3
index 239d9fff..58c0e983 100644
--- a/doc/man/pam_sm_acct_mgmt.3
+++ b/doc/man/pam_sm_acct_mgmt.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_acct_mgmt
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_ACCT_MGMT" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_ACCT_MGMT" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_authenticate.3 b/doc/man/pam_sm_authenticate.3
index 366d2eef..3e4b8680 100644
--- a/doc/man/pam_sm_authenticate.3
+++ b/doc/man/pam_sm_authenticate.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_authenticate
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_AUTHENTICATE" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_AUTHENTICATE" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_chauthtok.3 b/doc/man/pam_sm_chauthtok.3
index 807aee2b..e68876fa 100644
--- a/doc/man/pam_sm_chauthtok.3
+++ b/doc/man/pam_sm_chauthtok.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_chauthtok
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_CHAUTHTOK" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_CHAUTHTOK" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_close_session.3 b/doc/man/pam_sm_close_session.3
index 236e76e6..c1b4d5d9 100644
--- a/doc/man/pam_sm_close_session.3
+++ b/doc/man/pam_sm_close_session.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_close_session
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_CLOSE_SESSION" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_CLOSE_SESSION" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_open_session.3 b/doc/man/pam_sm_open_session.3
index 94298ede..b979b124 100644
--- a/doc/man/pam_sm_open_session.3
+++ b/doc/man/pam_sm_open_session.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_open_session
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_OPEN_SESSION" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_OPEN_SESSION" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_sm_setcred.3 b/doc/man/pam_sm_setcred.3
index e2d70607..6493870c 100644
--- a/doc/man/pam_sm_setcred.3
+++ b/doc/man/pam_sm_setcred.3
@@ -2,12 +2,12 @@
.\" Title: pam_sm_setcred
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SM_SETCRED" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SM_SETCRED" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_start.3 b/doc/man/pam_start.3
index b6039135..35ba148b 100644
--- a/doc/man/pam_start.3
+++ b/doc/man/pam_start.3
@@ -2,12 +2,12 @@
.\" Title: pam_start
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_START" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_START" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_strerror.3 b/doc/man/pam_strerror.3
index 7e06717c..0d15203a 100644
--- a/doc/man/pam_strerror.3
+++ b/doc/man/pam_strerror.3
@@ -2,12 +2,12 @@
.\" Title: pam_strerror
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_STRERROR" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_STRERROR" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_syslog.3 b/doc/man/pam_syslog.3
index ceb6d769..eda2e409 100644
--- a/doc/man/pam_syslog.3
+++ b/doc/man/pam_syslog.3
@@ -2,12 +2,12 @@
.\" Title: pam_syslog
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SYSLOG" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_SYSLOG" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/man/pam_xauth_data.3 b/doc/man/pam_xauth_data.3
index 1715e90e..6bd4093c 100644
--- a/doc/man/pam_xauth_data.3
+++ b/doc/man/pam_xauth_data.3
@@ -2,12 +2,12 @@
.\" Title: pam_xauth_data
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_XAUTH_DATA" "3" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_XAUTH_DATA" "3" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/doc/mwg/Makefile.in b/doc/mwg/Makefile.in
index 706ca65f..45123b3b 100644
--- a/doc/mwg/Makefile.in
+++ b/doc/mwg/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc/mwg
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -152,6 +155,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -165,6 +171,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -184,7 +192,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -231,8 +238,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -243,6 +248,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -292,7 +298,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -300,9 +305,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -312,6 +314,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/doc/sag/Linux-PAM_SAG.xml b/doc/sag/Linux-PAM_SAG.xml
index 6a324aa5..0f33e0f6 100644
--- a/doc/sag/Linux-PAM_SAG.xml
+++ b/doc/sag/Linux-PAM_SAG.xml
@@ -397,8 +397,6 @@ session required pam_warn.so
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_access.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_debug.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_deny.xml"/>
@@ -457,10 +455,6 @@ session required pam_warn.so
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_succeed_if.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_time.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="pam_timestamp.xml"/>
diff --git a/doc/sag/Makefile.in b/doc/sag/Makefile.in
index 8b44b15b..1597c1f4 100644
--- a/doc/sag/Makefile.in
+++ b/doc/sag/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc/sag
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -152,6 +155,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -165,6 +171,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -184,7 +192,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -231,8 +238,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -243,6 +248,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -292,7 +298,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -300,9 +305,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -312,6 +314,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/doc/sag/pam_cracklib.xml b/doc/sag/pam_cracklib.xml
deleted file mode 100644
index 898bbf9c..00000000
--- a/doc/sag/pam_cracklib.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
- "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
-<section id='sag-pam_cracklib'>
- <title>pam_cracklib - checks the password against dictionary words</title>
- <cmdsynopsis>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_cracklib-cmdsynopsis"]/*)'/>
- </cmdsynopsis>
- <section id='sag-pam_cracklib-description'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-description"]/*)'/>
- </section>
- <section id='sag-pam_cracklib-options'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-options"]/*)'/>
- </section>
- <section id='sag-pam_cracklib-types'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-types"]/*)'/>
- </section>
- <section id='sag-pam_cracklib-return_values'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-return_values"]/*)'/>
- </section>
- <section id='sag-pam_cracklib-examples'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-examples"]/*)'/>
- </section>
- <section id='sag-pam_cracklib-author'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_cracklib/pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-author"]/*)'/>
- </section>
-</section>
diff --git a/doc/sag/pam_tally.xml b/doc/sag/pam_tally.xml
deleted file mode 100644
index ec4afa52..00000000
--- a/doc/sag/pam_tally.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
- "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
-<section id='sag-pam_tally'>
- <title>pam_tally - login counter (tallying) module</title>
- <cmdsynopsis>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_tally-cmdsynopsis1"]/*)'/>
- </cmdsynopsis>
- <cmdsynopsis>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_tally-cmdsynopsis2"]/*)'/>
- </cmdsynopsis>
- <section id='sag-pam_tally-description'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-description"]/*)'/>
- </section>
- <section id='sag-pam_tally-options'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-options"]/*)'/>
- </section>
- <section id='sag-pam_tally-types'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-types"]/*)'/>
- </section>
- <section id='sag-pam_tally-return_values'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-return_values"]/*)'/>
- </section>
- <section id='sag-pam_tally-examples'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-examples"]/*)'/>
- </section>
- <section id='sag-pam_tally-author'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally/pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-author"]/*)'/>
- </section>
-</section>
diff --git a/doc/sag/pam_tally2.xml b/doc/sag/pam_tally2.xml
deleted file mode 100644
index 085003d3..00000000
--- a/doc/sag/pam_tally2.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
- "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
-<section id='sag-pam_tally2'>
- <title>pam_tally2 - login counter (tallying) module</title>
- <cmdsynopsis>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_tally2-cmdsynopsis1"]/*)'/>
- </cmdsynopsis>
- <cmdsynopsis>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//cmdsynopsis[@id = "pam_tally2-cmdsynopsis2"]/*)'/>
- </cmdsynopsis>
- <section id='sag-pam_tally2-description'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-description"]/*)'/>
- </section>
- <section id='sag-pam_tally2-options'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-options"]/*)'/>
- </section>
- <section id='sag-pam_tally2-types'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-types"]/*)'/>
- </section>
- <section id='sag-pam_tally2-return_values'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-return_values"]/*)'/>
- </section>
- <section id='sag-pam_tally2-notes'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-notes"]/*)'/>
- </section>
- <section id='sag-pam_tally2-examples'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-examples"]/*)'/>
- </section>
- <section id='sag-pam_tally2-files'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-files"]/*)'/>
- </section>
- <section id='sag-pam_tally2-author'>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="../../modules/pam_tally2/pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-author"]/*)'/>
- </section>
-</section>
diff --git a/doc/specs/Makefile.in b/doc/specs/Makefile.in
index 12bc0683..e3a70283 100644
--- a/doc/specs/Makefile.in
+++ b/doc/specs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
noinst_PROGRAMS = padout$(EXEEXT)
subdir = doc/specs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -256,6 +259,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @BUILD_CFLAGS@
CPP = @CPP@
CPPFLAGS = @BUILD_CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -269,6 +275,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -288,7 +296,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -335,8 +342,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -347,6 +352,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -396,7 +402,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -404,9 +409,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -416,6 +418,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -670,7 +673,8 @@ installdirs:
done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
+install-exec: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -777,7 +781,7 @@ ps-am:
uninstall-am: uninstall-docDATA
-.MAKE: all check install install-am install-strip
+.MAKE: all check install install-am install-exec install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
diff --git a/doc/specs/parse_y.c b/doc/specs/parse_y.c
index da163a36..7009e3f9 100644
--- a/doc/specs/parse_y.c
+++ b/doc/specs/parse_y.c
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -33,6 +34,10 @@
/* C LALR(1) parser skeleton written by Richard Stallman, by
simplifying the original so-called "semantic" parser. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
variables, as they might otherwise be expanded by user macros.
@@ -40,11 +45,11 @@
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
-/* Identify Bison output. */
-#define YYBISON 1
+/* Identify Bison output, and Bison version. */
+#define YYBISON 30706
-/* Bison version. */
-#define YYBISON_VERSION "3.0.5"
+/* Bison version string. */
+#define YYBISON_VERSION "3.7.6"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -61,8 +66,8 @@
-/* Copy the first part of user declarations. */
-#line 2 "parse_y.y" /* yacc.c:339 */
+/* First part of user prologue. */
+#line 2 "parse_y.y"
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -87,26 +92,31 @@
extern void set_label(const char *label, const char *target);
char *new_counter(const char *key);
-#line 91 "parse_y.c" /* yacc.c:339 */
+#line 96 "parse_y.c"
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
# else
-# define YY_NULLPTR 0
+# define YY_NULLPTR ((void*)0)
# endif
# endif
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
- by #include "y.tab.h". */
+/* Use api.header.include to #include this header
+ instead of duplicating it here. */
#ifndef YY_YY_PARSE_Y_H_INCLUDED
# define YY_YY_PARSE_Y_H_INCLUDED
/* Debug traces. */
@@ -117,21 +127,30 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- NEW_COUNTER = 258,
- LABEL = 259,
- HASH = 260,
- CHAR = 261,
- NEWLINE = 262,
- NO_INDENT = 263,
- RIGHT = 264
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ NEW_COUNTER = 258, /* NEW_COUNTER */
+ LABEL = 259, /* LABEL */
+ HASH = 260, /* HASH */
+ CHAR = 261, /* CHAR */
+ NEWLINE = 262, /* NEWLINE */
+ NO_INDENT = 263, /* NO_INDENT */
+ RIGHT = 264 /* RIGHT */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define NEW_COUNTER 258
#define LABEL 259
#define HASH 260
@@ -142,17 +161,16 @@ extern int yydebug;
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 27 "parse_y.y" /* yacc.c:355 */
+#line 27 "parse_y.y"
int def;
char *string;
-#line 154 "parse_y.c" /* yacc.c:355 */
-};
+#line 172 "parse_y.c"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -164,37 +182,115 @@ extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_PARSE_Y_H_INCLUDED */
+/* Symbol kind. */
+enum yysymbol_kind_t
+{
+ YYSYMBOL_YYEMPTY = -2,
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYerror = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
+ YYSYMBOL_NEW_COUNTER = 3, /* NEW_COUNTER */
+ YYSYMBOL_LABEL = 4, /* LABEL */
+ YYSYMBOL_HASH = 5, /* HASH */
+ YYSYMBOL_CHAR = 6, /* CHAR */
+ YYSYMBOL_NEWLINE = 7, /* NEWLINE */
+ YYSYMBOL_NO_INDENT = 8, /* NO_INDENT */
+ YYSYMBOL_RIGHT = 9, /* RIGHT */
+ YYSYMBOL_YYACCEPT = 10, /* $accept */
+ YYSYMBOL_doc = 11, /* doc */
+ YYSYMBOL_stuff = 12, /* stuff */
+ YYSYMBOL_text = 13 /* text */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
-/* Copy the second part of user declarations. */
-#line 171 "parse_y.c" /* yacc.c:358 */
#ifdef short
# undef short
#endif
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+ <limits.h> and (if available) <stdint.h> are included
+ so that the code can choose integer types of a good width. */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_STDINT_H
+# endif
#endif
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+ signed or unsigned integer of at least N bits. In tables they can
+ save space and decrease cache pressure. Promoting to a signed type
+ helps avoid bugs in integer arithmetic. */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
+#endif
+
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
#else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
#endif
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
#else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+# define YYPTRDIFF_T __PTRDIFF_TYPE__
+# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+# ifndef ptrdiff_t
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYPTRDIFF_T ptrdiff_t
+# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+# define YYPTRDIFF_T long
+# define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
#endif
#ifndef YYSIZE_T
@@ -202,15 +298,28 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned int
+# define YYSIZE_T unsigned
# endif
#endif
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM \
+ YY_CAST (YYPTRDIFF_T, \
+ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
+ ? YYPTRDIFF_MAXIMUM \
+ : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int8 yy_state_t;
+
+/* State numbers in computations. */
+typedef int yy_state_fast_t;
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -224,47 +333,37 @@ typedef short int yytype_int16;
# endif
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-# define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define YY_ATTRIBUTE_PURE
+# endif
#endif
#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# define YY_ATTRIBUTE_UNUSED
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
#else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
@@ -277,8 +376,22 @@ typedef short int yytype_int16;
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -343,8 +456,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
@@ -353,17 +465,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss_alloc;
+ yy_state_t yyss_alloc;
YYSTYPE yyvs_alloc;
};
/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
# define YYCOPY_NEEDED 1
@@ -376,11 +488,11 @@ union yyalloc
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
- YYSIZE_T yynewbytes; \
+ YYPTRDIFF_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
+ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / YYSIZEOF (*yyptr); \
} \
while (0)
@@ -392,12 +504,12 @@ union yyalloc
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
# else
# define YYCOPY(Dst, Src, Count) \
do \
{ \
- YYSIZE_T yyi; \
+ YYPTRDIFF_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
@@ -420,17 +532,20 @@ union yyalloc
/* YYNSTATES -- Number of states. */
#define YYNSTATES 19
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
- by yylex, with out-of-bounds checking. */
-#define YYUNDEFTOK 2
+/* YYMAXUTOK -- Last valid token kind. */
#define YYMAXUTOK 264
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, with out-of-bounds checking. */
+#define YYTRANSLATE(YYX) \
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK \
+ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
+ : YYSYMBOL_YYUNDEF)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
-static const yytype_uint8 yytranslate[] =
+ as returned by yylex. */
+static const yytype_int8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -470,33 +585,47 @@ static const yytype_uint8 yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
+/** Accessing symbol of state STATE. */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+ YYSYMBOL. No bounds checking. */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "NEW_COUNTER", "LABEL", "HASH", "CHAR",
- "NEWLINE", "NO_INDENT", "RIGHT", "$accept", "doc", "stuff", "text", YY_NULLPTR
+ "\"end of file\"", "error", "\"invalid token\"", "NEW_COUNTER", "LABEL",
+ "HASH", "CHAR", "NEWLINE", "NO_INDENT", "RIGHT", "$accept", "doc",
+ "stuff", "text", YY_NULLPTR
};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+ return yytname[yysymbol];
+}
#endif
-# ifdef YYPRINT
+#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264
};
-# endif
+#endif
-#define YYPACT_NINF -3
+#define YYPACT_NINF (-3)
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-3)))
+#define yypact_value_is_default(Yyn) \
+ ((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF -1
+#define YYTABLE_NINF (-1)
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -510,7 +639,7 @@ static const yytype_int8 yypact[] =
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero
means the default is an error. */
-static const yytype_uint8 yydefact[] =
+static const yytype_int8 yydefact[] =
{
2, 8, 1, 3, 0, 15, 14, 13, 10, 4,
12, 8, 9, 0, 11, 5, 8, 0, 6
@@ -525,13 +654,13 @@ static const yytype_int8 yypgoto[] =
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 1, 4, 12
+ 0, 1, 4, 12
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule whose
number is the opposite. If YYTABLE_NINF, syntax error. */
-static const yytype_uint8 yytable[] =
+static const yytype_int8 yytable[] =
{
2, 5, 6, 7, 8, 18, 10, 3, 5, 6,
7, 8, 9, 10, 11, 5, 6, 7, 8, 15,
@@ -547,31 +676,31 @@ static const yytype_int8 yycheck[] =
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-static const yytype_uint8 yystos[] =
+static const yytype_int8 yystos[] =
{
0, 11, 0, 7, 12, 3, 4, 5, 6, 7,
8, 9, 13, 12, 6, 7, 9, 12, 7
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
+static const yytype_int8 yyr1[] =
{
0, 10, 11, 11, 11, 11, 11, 11, 12, 12,
13, 13, 13, 13, 13, 13
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
{
0, 2, 0, 2, 3, 5, 7, 7, 0, 2,
1, 2, 1, 1, 1, 1
};
+enum { YYENOMEM = -2 };
+
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
@@ -580,27 +709,26 @@ static const yytype_uint8 yyr2[] =
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (0)
-
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
+#define YYBACKUP(Token, Value) \
+ do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+ while (0)
+
+/* Backward compatibility with an undocumented macro.
+ Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
/* Enable debugging if requested. */
@@ -618,54 +746,58 @@ do { \
} while (0)
/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value); \
+ Kind, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT. |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO. |
+`-----------------------------------*/
static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- FILE *yyo = yyoutput;
- YYUSE (yyo);
+ FILE *yyoutput = yyo;
+ YY_USE (yyoutput);
if (!yyvaluep)
return;
# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+ if (yykind < YYNTOKENS)
+ YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
- YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YY_USE (yykind);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO. |
+`---------------------------*/
static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- YYFPRINTF (yyoutput, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+ YYFPRINTF (yyo, "%s %s (",
+ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
+ yy_symbol_value_print (yyo, yykind, yyvaluep);
+ YYFPRINTF (yyo, ")");
}
/*------------------------------------------------------------------.
@@ -674,7 +806,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
`------------------------------------------------------------------*/
static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -697,21 +829,21 @@ do { \
`------------------------------------------------*/
static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+ int yyrule)
{
- unsigned long int yylno = yyrline[yyrule];
+ int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
+ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+ &yyvsp[(yyi + 1) - (yynrhs)]);
YYFPRINTF (stderr, "\n");
}
}
@@ -726,8 +858,8 @@ do { \
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -750,250 +882,30 @@ int yydebug;
#endif
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
-{
- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULLPTR;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }
- }
-
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- default: /* Avoid compiler warnings. */
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
-}
-#endif /* YYERROR_VERBOSE */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg,
+ yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
- YYUSE (yyvaluep);
+ YY_USE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yytype);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-
-
-/* The lookahead symbol. */
+/* Lookahead token kind. */
int yychar;
/* The semantic value of the lookahead symbol. */
@@ -1002,6 +914,8 @@ YYSTYPE yylval;
int yynerrs;
+
+
/*----------.
| yyparse. |
`----------*/
@@ -1009,43 +923,36 @@ int yynerrs;
int
yyparse (void)
{
- int yystate;
+ yy_state_fast_t yystate = 0;
/* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
+ int yyerrstatus = 0;
- /* The stacks and their tools:
- 'yyss': related to states.
- 'yyvs': related to semantic values.
-
- Refer to the stacks through separate pointers, to allow yyoverflow
+ /* Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
+ /* Their size. */
+ YYPTRDIFF_T yystacksize = YYINITDEPTH;
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
+ /* The state stack: array, bottom, top. */
+ yy_state_t yyssa[YYINITDEPTH];
+ yy_state_t *yyss = yyssa;
+ yy_state_t *yyssp = yyss;
- YYSIZE_T yystacksize;
+ /* The semantic value stack: array, bottom, top. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp = yyvs;
int yyn;
+ /* The return value of yyparse. */
int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ /* Lookahead symbol kind. */
+ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -1053,58 +960,60 @@ yyparse (void)
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
-
YYDPRINTF ((stderr, "Starting parse\n"));
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
goto yysetstate;
+
/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
+| yynewstate -- push a new state, which is found in yystate. |
`------------------------------------------------------------*/
- yynewstate:
+yynewstate:
/* In all cases, when you get here, the value and location stacks
have just been pushed. So pushing a state here evens the stacks. */
yyssp++;
- yysetstate:
- *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate. |
+`--------------------------------------------------------------------*/
+yysetstate:
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ YY_IGNORE_USELESS_CAST_BEGIN
+ *yyssp = YY_CAST (yy_state_t, yystate);
+ YY_IGNORE_USELESS_CAST_END
+ YY_STACK_PRINT (yyss, yyssp);
if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+#else
{
/* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
+ YYPTRDIFF_T yysize = yyssp - yyss + 1;
-#ifdef yyoverflow
+# if defined yyoverflow
{
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
memory. */
+ yy_state_t *yyss1 = yyss;
YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
be undefined if yyoverflow is a macro. */
yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
+ &yyss1, yysize * YYSIZEOF (*yyssp),
+ &yyvs1, yysize * YYSIZEOF (*yyvsp),
&yystacksize);
-
yyss = yyss1;
yyvs = yyvs1;
}
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
goto yyexhaustedlab;
@@ -1113,9 +1022,10 @@ yyparse (void)
yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
+ yy_state_t *yyss1 = yyss;
union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ YY_CAST (union yyalloc *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
if (! yyptr)
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
@@ -1125,30 +1035,30 @@ yyparse (void)
YYSTACK_FREE (yyss1);
}
# endif
-#endif /* no yyoverflow */
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ YY_IGNORE_USELESS_CAST_BEGIN
+ YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+ YY_CAST (long, yystacksize)));
+ YY_IGNORE_USELESS_CAST_END
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
if (yystate == YYFINAL)
YYACCEPT;
goto yybackup;
+
/*-----------.
| yybackup. |
`-----------*/
yybackup:
-
/* Do appropriate processing given the current state. Read a
lookahead token if we need one and don't already have one. */
@@ -1159,18 +1069,29 @@ yybackup:
/* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
if (yychar == YYEMPTY)
{
- YYDPRINTF ((stderr, "Reading a token: "));
+ YYDPRINTF ((stderr, "Reading a token\n"));
yychar = yylex ();
}
if (yychar <= YYEOF)
{
- yychar = yytoken = YYEOF;
+ yychar = YYEOF;
+ yytoken = YYSYMBOL_YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
+ else if (yychar == YYerror)
+ {
+ /* The scanner already issued an error message, process directly
+ to error recovery. But do not keep the error token as
+ lookahead, it is too special and may lead us to an endless
+ loop in error recovery. */
+ yychar = YYUNDEF;
+ yytoken = YYSYMBOL_YYerror;
+ goto yyerrlab1;
+ }
else
{
yytoken = YYTRANSLATE (yychar);
@@ -1198,15 +1119,13 @@ yybackup:
/* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
yystate = yyn;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
goto yynewstate;
@@ -1221,7 +1140,7 @@ yydefault:
/*-----------------------------.
-| yyreduce -- Do a reduction. |
+| yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
/* yyn is the number of a rule to reduce with. */
@@ -1241,18 +1160,18 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 3:
-#line 40 "parse_y.y" /* yacc.c:1648 */
- {
+ case 3: /* doc: doc NEWLINE */
+#line 40 "parse_y.y"
+ {
printf("\n");
++line;
}
-#line 1251 "parse_y.c" /* yacc.c:1648 */
+#line 1170 "parse_y.c"
break;
- case 4:
-#line 44 "parse_y.y" /* yacc.c:1648 */
- {
+ case 4: /* doc: doc stuff NEWLINE */
+#line 44 "parse_y.y"
+ {
if (strlen((yyvsp[-1].string)) > (PAPER_WIDTH-(indent ? strlen(INDENT_STRING):0))) {
yyerror("line too long");
}
@@ -1261,12 +1180,12 @@ yyreduce:
indent = 1;
++line;
}
-#line 1265 "parse_y.c" /* yacc.c:1648 */
+#line 1184 "parse_y.c"
break;
- case 5:
-#line 53 "parse_y.y" /* yacc.c:1648 */
- {
+ case 5: /* doc: doc stuff RIGHT stuff NEWLINE */
+#line 53 "parse_y.y"
+ {
char fixed[PAPER_WIDTH+1];
int len;
@@ -1285,12 +1204,12 @@ yyreduce:
indent = 1;
++line;
}
-#line 1289 "parse_y.c" /* yacc.c:1648 */
+#line 1208 "parse_y.c"
break;
- case 6:
-#line 72 "parse_y.y" /* yacc.c:1648 */
- {
+ case 6: /* doc: doc stuff RIGHT stuff RIGHT stuff NEWLINE */
+#line 72 "parse_y.y"
+ {
char fixed[PAPER_WIDTH+1];
int len, l;
@@ -1317,12 +1236,12 @@ yyreduce:
indent = 1;
++line;
}
-#line 1321 "parse_y.c" /* yacc.c:1648 */
+#line 1240 "parse_y.c"
break;
- case 7:
-#line 99 "parse_y.y" /* yacc.c:1648 */
- {
+ case 7: /* doc: doc stuff RIGHT stuff RIGHT stuff NEWLINE */
+#line 99 "parse_y.y"
+ {
char fixed[PAPER_WIDTH+1];
int len, l;
@@ -1349,84 +1268,85 @@ yyreduce:
indent = 1;
++line;
}
-#line 1353 "parse_y.c" /* yacc.c:1648 */
+#line 1272 "parse_y.c"
break;
- case 8:
-#line 128 "parse_y.y" /* yacc.c:1648 */
- {
+ case 8: /* stuff: %empty */
+#line 128 "parse_y.y"
+ {
(yyval.string) = strdup("");
}
-#line 1361 "parse_y.c" /* yacc.c:1648 */
+#line 1280 "parse_y.c"
break;
- case 9:
-#line 131 "parse_y.y" /* yacc.c:1648 */
- {
+ case 9: /* stuff: stuff text */
+#line 131 "parse_y.y"
+ {
(yyval.string) = malloc(strlen((yyvsp[-1].string))+strlen((yyvsp[0].string))+1);
sprintf((yyval.string),"%s%s", (yyvsp[-1].string), (yyvsp[0].string));
free((yyvsp[-1].string));
free((yyvsp[0].string));
}
-#line 1372 "parse_y.c" /* yacc.c:1648 */
+#line 1291 "parse_y.c"
break;
- case 10:
-#line 139 "parse_y.y" /* yacc.c:1648 */
- {
+ case 10: /* text: CHAR */
+#line 139 "parse_y.y"
+ {
(yyval.string) = strdup(yytext);
}
-#line 1380 "parse_y.c" /* yacc.c:1648 */
+#line 1299 "parse_y.c"
break;
- case 11:
-#line 142 "parse_y.y" /* yacc.c:1648 */
- {
+ case 11: /* text: text CHAR */
+#line 142 "parse_y.y"
+ {
(yyval.string) = malloc(strlen((yyvsp[-1].string))+2);
sprintf((yyval.string),"%s%s", (yyvsp[-1].string), yytext);
free((yyvsp[-1].string));
}
-#line 1390 "parse_y.c" /* yacc.c:1648 */
+#line 1309 "parse_y.c"
break;
- case 12:
-#line 147 "parse_y.y" /* yacc.c:1648 */
- {
+ case 12: /* text: NO_INDENT */
+#line 147 "parse_y.y"
+ {
(yyval.string) = strdup("");
indent = 0;
}
-#line 1399 "parse_y.c" /* yacc.c:1648 */
+#line 1318 "parse_y.c"
break;
- case 13:
-#line 151 "parse_y.y" /* yacc.c:1648 */
- {
+ case 13: /* text: HASH */
+#line 151 "parse_y.y"
+ {
(yyval.string) = strdup("#");
}
-#line 1407 "parse_y.c" /* yacc.c:1648 */
+#line 1326 "parse_y.c"
break;
- case 14:
-#line 154 "parse_y.y" /* yacc.c:1648 */
- {
+ case 14: /* text: LABEL */
+#line 154 "parse_y.y"
+ {
if (((yyval.string) = get_label(yytext)) == NULL) {
set_label(yytext, last_label);
(yyval.string) = strdup("");
}
}
-#line 1418 "parse_y.c" /* yacc.c:1648 */
+#line 1337 "parse_y.c"
break;
- case 15:
-#line 160 "parse_y.y" /* yacc.c:1648 */
- {
+ case 15: /* text: NEW_COUNTER */
+#line 160 "parse_y.y"
+ {
(yyval.string) = new_counter(yytext);
}
-#line 1426 "parse_y.c" /* yacc.c:1648 */
+#line 1345 "parse_y.c"
break;
-#line 1430 "parse_y.c" /* yacc.c:1648 */
+#line 1349 "parse_y.c"
+
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1440,25 +1360,23 @@ yyreduce:
case of YYERROR or YYBACKUP, subsequent parser actions might lead
to an incorrect destructor call or verbose syntax error message
before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
YYPOPSTACK (yylen);
yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
/* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
+ {
+ const int yylhs = yyr1[yyn] - YYNTOKENS;
+ const int yyi = yypgoto[yylhs] + *yyssp;
+ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+ ? yytable[yyi]
+ : yydefgoto[yylhs]);
+ }
goto yynewstate;
@@ -1469,50 +1387,14 @@ yyreduce:
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
+ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
-#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
- {
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
- }
-# undef YYSYNTAX_ERROR
-#endif
}
-
-
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
@@ -1541,12 +1423,10 @@ yyerrlab:
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
+ /* Pacify compilers when the user code never invokes YYERROR and the
+ label yyerrorlab therefore never appears in user code. */
+ if (0)
+ YYERROR;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
@@ -1563,13 +1443,14 @@ yyerrorlab:
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
+ /* Pop stack until we find a state that shifts the error token. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
{
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ yyn += YYSYMBOL_YYerror;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
{
yyn = yytable[yyn];
if (0 < yyn)
@@ -1583,7 +1464,7 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ YY_ACCESSING_SYMBOL (yystate), yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -1595,7 +1476,7 @@ yyerrlab1:
/* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
@@ -1608,6 +1489,7 @@ yyacceptlab:
yyresult = 0;
goto yyreturn;
+
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
@@ -1615,16 +1497,21 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#if !defined yyoverflow || YYERROR_VERBOSE
+
+#if !defined yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
yyerror (YY_("memory exhausted"));
yyresult = 2;
- /* Fall through. */
+ goto yyreturn;
#endif
+
+/*-------------------------------------------------------.
+| yyreturn -- parsing is finished, clean up and return. |
+`-------------------------------------------------------*/
yyreturn:
if (yychar != YYEMPTY)
{
@@ -1641,20 +1528,18 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
+
return yyresult;
}
-#line 165 "parse_y.y" /* yacc.c:1907 */
+
+#line 165 "parse_y.y"
typedef struct node_s {
diff --git a/doc/specs/parse_y.h b/doc/specs/parse_y.h
index 125010fa..7445ca81 100644
--- a/doc/specs/parse_y.h
+++ b/doc/specs/parse_y.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.7.6. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -30,6 +31,10 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
#ifndef YY_YY_PARSE_Y_H_INCLUDED
# define YY_YY_PARSE_Y_H_INCLUDED
/* Debug traces. */
@@ -40,21 +45,30 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- NEW_COUNTER = 258,
- LABEL = 259,
- HASH = 260,
- CHAR = 261,
- NEWLINE = 262,
- NO_INDENT = 263,
- RIGHT = 264
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ NEW_COUNTER = 258, /* NEW_COUNTER */
+ LABEL = 259, /* LABEL */
+ HASH = 260, /* HASH */
+ CHAR = 261, /* CHAR */
+ NEWLINE = 262, /* NEWLINE */
+ NO_INDENT = 263, /* NO_INDENT */
+ RIGHT = 264 /* RIGHT */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define NEW_COUNTER 258
#define LABEL 259
#define HASH 260
@@ -65,17 +79,16 @@ extern int yydebug;
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 27 "parse_y.y" /* yacc.c:1910 */
+#line 27 "parse_y.y"
int def;
char *string;
-#line 77 "parse_y.h" /* yacc.c:1910 */
-};
+#line 90 "parse_y.h"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 8ccf48f7..456544f6 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ noinst_PROGRAMS = xsh$(EXEEXT) vpass$(EXEEXT) blank$(EXEEXT) \
check_user$(EXEEXT)
subdir = examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -223,6 +226,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -236,6 +242,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -255,7 +263,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -302,8 +309,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -314,6 +319,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -363,7 +369,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -371,9 +376,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -383,6 +385,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/libpam/Makefile.am b/libpam/Makefile.am
index 9252a837..55222afc 100644
--- a/libpam/Makefile.am
+++ b/libpam/Makefile.am
@@ -35,7 +35,12 @@ libpam_la_SOURCES = pam_account.c pam_auth.c pam_data.c pam_delay.c \
pam_misc.c pam_password.c pam_prelude.c \
pam_session.c pam_start.c pam_strerror.c \
pam_vprompt.c pam_syslog.c pam_dynamic.c pam_audit.c \
+ pam_modutil_check_user.c \
pam_modutil_cleanup.c pam_modutil_getpwnam.c pam_modutil_ioloop.c \
pam_modutil_getgrgid.c pam_modutil_getpwuid.c pam_modutil_getgrnam.c \
pam_modutil_getspnam.c pam_modutil_getlogin.c pam_modutil_ingroup.c \
pam_modutil_priv.c pam_modutil_sanitize.c pam_modutil_searchkey.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pam.pc
diff --git a/libpam/Makefile.in b/libpam/Makefile.in
index a1939ccf..0c2333c0 100644
--- a/libpam/Makefile.in
+++ b/libpam/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -19,6 +19,7 @@
#
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -96,25 +97,28 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/libpam.map
subdir = libpam
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
$(noinst_HEADERS) $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = pam.pc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -143,7 +147,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
libpam_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
@@ -152,12 +157,13 @@ am_libpam_la_OBJECTS = pam_account.lo pam_auth.lo pam_data.lo \
pam_get_authtok.lo pam_handlers.lo pam_item.lo pam_misc.lo \
pam_password.lo pam_prelude.lo pam_session.lo pam_start.lo \
pam_strerror.lo pam_vprompt.lo pam_syslog.lo pam_dynamic.lo \
- pam_audit.lo pam_modutil_cleanup.lo pam_modutil_getpwnam.lo \
- pam_modutil_ioloop.lo pam_modutil_getgrgid.lo \
- pam_modutil_getpwuid.lo pam_modutil_getgrnam.lo \
- pam_modutil_getspnam.lo pam_modutil_getlogin.lo \
- pam_modutil_ingroup.lo pam_modutil_priv.lo \
- pam_modutil_sanitize.lo pam_modutil_searchkey.lo
+ pam_audit.lo pam_modutil_check_user.lo pam_modutil_cleanup.lo \
+ pam_modutil_getpwnam.lo pam_modutil_ioloop.lo \
+ pam_modutil_getgrgid.lo pam_modutil_getpwuid.lo \
+ pam_modutil_getgrnam.lo pam_modutil_getspnam.lo \
+ pam_modutil_getlogin.lo pam_modutil_ingroup.lo \
+ pam_modutil_priv.lo pam_modutil_sanitize.lo \
+ pam_modutil_searchkey.lo
libpam_la_OBJECTS = $(am_libpam_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -188,6 +194,7 @@ am__depfiles_remade = ./$(DEPDIR)/pam_account.Plo \
./$(DEPDIR)/pam_end.Plo ./$(DEPDIR)/pam_env.Plo \
./$(DEPDIR)/pam_get_authtok.Plo ./$(DEPDIR)/pam_handlers.Plo \
./$(DEPDIR)/pam_item.Plo ./$(DEPDIR)/pam_misc.Plo \
+ ./$(DEPDIR)/pam_modutil_check_user.Plo \
./$(DEPDIR)/pam_modutil_cleanup.Plo \
./$(DEPDIR)/pam_modutil_getgrgid.Plo \
./$(DEPDIR)/pam_modutil_getgrnam.Plo \
@@ -230,6 +237,7 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(pkgconfig_DATA)
HEADERS = $(include_HEADERS) $(noinst_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
@@ -250,7 +258,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in \
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/pam.pc.in \
$(top_srcdir)/build-aux/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
@@ -271,6 +279,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -284,6 +295,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -303,7 +316,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -350,8 +362,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -362,6 +372,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -411,7 +422,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -419,9 +429,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -431,6 +438,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -461,11 +469,16 @@ libpam_la_SOURCES = pam_account.c pam_auth.c pam_data.c pam_delay.c \
pam_misc.c pam_password.c pam_prelude.c \
pam_session.c pam_start.c pam_strerror.c \
pam_vprompt.c pam_syslog.c pam_dynamic.c pam_audit.c \
+ pam_modutil_check_user.c \
pam_modutil_cleanup.c pam_modutil_getpwnam.c pam_modutil_ioloop.c \
pam_modutil_getgrgid.c pam_modutil_getpwuid.c pam_modutil_getgrnam.c \
pam_modutil_getspnam.c pam_modutil_getlogin.c pam_modutil_ingroup.c \
pam_modutil_priv.c pam_modutil_sanitize.c pam_modutil_searchkey.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pam.pc
all: all-am
.SUFFIXES:
@@ -499,6 +512,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+pam.pc: $(top_builddir)/config.status $(srcdir)/pam.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@@ -557,6 +572,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_handlers.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_item.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_misc.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_modutil_check_user.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_modutil_cleanup.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_modutil_getgrgid.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_modutil_getgrnam.Plo@am__quote@ # am--include-marker
@@ -609,6 +625,27 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
@@ -718,9 +755,9 @@ distdir-am: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -773,6 +810,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/pam_handlers.Plo
-rm -f ./$(DEPDIR)/pam_item.Plo
-rm -f ./$(DEPDIR)/pam_misc.Plo
+ -rm -f ./$(DEPDIR)/pam_modutil_check_user.Plo
-rm -f ./$(DEPDIR)/pam_modutil_cleanup.Plo
-rm -f ./$(DEPDIR)/pam_modutil_getgrgid.Plo
-rm -f ./$(DEPDIR)/pam_modutil_getgrnam.Plo
@@ -808,7 +846,7 @@ info: info-am
info-am:
-install-data-am: install-includeHEADERS
+install-data-am: install-includeHEADERS install-pkgconfigDATA
install-dvi: install-dvi-am
@@ -850,6 +888,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/pam_handlers.Plo
-rm -f ./$(DEPDIR)/pam_item.Plo
-rm -f ./$(DEPDIR)/pam_misc.Plo
+ -rm -f ./$(DEPDIR)/pam_modutil_check_user.Plo
-rm -f ./$(DEPDIR)/pam_modutil_cleanup.Plo
-rm -f ./$(DEPDIR)/pam_modutil_getgrgid.Plo
-rm -f ./$(DEPDIR)/pam_modutil_getgrnam.Plo
@@ -885,7 +924,8 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
+uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+ uninstall-pkgconfigDATA
.MAKE: install-am install-strip
@@ -898,12 +938,12 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
install-exec-am install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+ install-pkgconfigDATA install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES
+ uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
.PRECIOUS: Makefile
diff --git a/libpam/include/pam_inline.h b/libpam/include/pam_inline.h
index ec05fe43..ec2f3bf0 100644
--- a/libpam/include/pam_inline.h
+++ b/libpam/include/pam_inline.h
@@ -10,6 +10,8 @@
#include "pam_cc_compat.h"
#include <string.h>
+#include <unistd.h>
+#include <errno.h>
/*
* Evaluates to
@@ -64,4 +66,53 @@ pam_str_skip_icase_prefix_len(const char *str, const char *prefix, size_t prefix
#define pam_str_skip_icase_prefix(str_, prefix_) \
pam_str_skip_icase_prefix_len((str_), (prefix_), sizeof(prefix_) - 1 + PAM_MUST_BE_ARRAY(prefix_))
+static inline int
+pam_read_passwords(int fd, int npass, char **passwords)
+{
+ /*
+ * The passwords array must contain npass preallocated
+ * buffers of length PAM_MAX_RESP_SIZE + 1.
+ */
+ int rbytes = 0;
+ int offset = 0;
+ int i = 0;
+ char *pptr;
+ while (npass > 0) {
+ rbytes = read(fd, passwords[i]+offset, PAM_MAX_RESP_SIZE+1-offset);
+
+ if (rbytes < 0) {
+ if (errno == EINTR) {
+ continue;
+ }
+ break;
+ }
+ if (rbytes == 0) {
+ break;
+ }
+
+ while (npass > 0 &&
+ (pptr = memchr(passwords[i] + offset, '\0', rbytes)) != NULL) {
+ ++pptr; /* skip the '\0' */
+ rbytes -= pptr - (passwords[i] + offset);
+ i++;
+ offset = 0;
+ npass--;
+ if (rbytes > 0) {
+ if (npass > 0) {
+ memcpy(passwords[i], pptr, rbytes);
+ }
+ memset(pptr, '\0', rbytes);
+ }
+ }
+ offset += rbytes;
+ }
+
+ /* clear up */
+ if (offset > 0 && npass > 0) {
+ memset(passwords[i], '\0', offset);
+ }
+
+ return i;
+}
+
#endif /* PAM_INLINE_H */
diff --git a/libpam/include/security/pam_modutil.h b/libpam/include/security/pam_modutil.h
index 3a6aec6a..33f87b90 100644
--- a/libpam/include/security/pam_modutil.h
+++ b/libpam/include/security/pam_modutil.h
@@ -58,6 +58,11 @@ extern "C" {
#include <security/_pam_types.h>
+extern int PAM_NONNULL((1,2))
+pam_modutil_check_user_in_passwd(pam_handle_t *pamh,
+ const char *user_name,
+ const char *file_name);
+
extern struct passwd * PAM_NONNULL((1,2))
pam_modutil_getpwnam(pam_handle_t *pamh, const char *user);
diff --git a/libpam/libpam.map b/libpam/libpam.map
index c9690a91..3cc7ef35 100644
--- a/libpam/libpam.map
+++ b/libpam/libpam.map
@@ -82,3 +82,8 @@ LIBPAM_1.4 {
global:
pam_start_confdir;
} LIBPAM_1.0;
+
+LIBPAM_MODUTIL_1.4.1 {
+ global:
+ pam_modutil_check_user_in_passwd;
+} LIBPAM_MODUTIL_1.3.2;
diff --git a/libpam/pam.pc.in b/libpam/pam.pc.in
new file mode 100644
index 00000000..a7cf852d
--- /dev/null
+++ b/libpam/pam.pc.in
@@ -0,0 +1,9 @@
+libdir=@libdir@
+includedir=@includedir@
+
+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: @VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lpam
diff --git a/libpam/pam_dispatch.c b/libpam/pam_dispatch.c
index cf632e8e..974104a2 100644
--- a/libpam/pam_dispatch.c
+++ b/libpam/pam_dispatch.c
@@ -424,7 +424,6 @@ int _pam_dispatch(pam_handle_t *pamh, int flags, int choice)
/* call the list of module functions */
pamh->choice = choice;
retval = _pam_dispatch_aux(pamh, flags, h, resumed, use_cached_chain);
- resumed = PAM_FALSE;
__PAM_TO_APP(pamh);
diff --git a/libpam/pam_end.c b/libpam/pam_end.c
index 942253d8..406b1478 100644
--- a/libpam/pam_end.c
+++ b/libpam/pam_end.c
@@ -56,6 +56,9 @@ int pam_end(pam_handle_t *pamh, int pam_status)
_pam_overwrite(pamh->user);
_pam_drop(pamh->user);
+ _pam_overwrite(pamh->confdir);
+ _pam_drop(pamh->confdir);
+
_pam_overwrite(pamh->prompt);
_pam_drop(pamh->prompt); /* prompt for pam_get_user() */
diff --git a/libpam/pam_modutil_check_user.c b/libpam/pam_modutil_check_user.c
new file mode 100644
index 00000000..cf1bd1b5
--- /dev/null
+++ b/libpam/pam_modutil_check_user.c
@@ -0,0 +1,92 @@
+#include "pam_modutil_private.h"
+#include <security/pam_ext.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <syslog.h>
+
+int
+pam_modutil_check_user_in_passwd(pam_handle_t *pamh,
+ const char *user_name,
+ const char *file_name)
+{
+ int rc;
+ size_t user_len;
+ FILE *fp;
+ char line[BUFSIZ];
+
+ /* Validate the user name. */
+ if ((user_len = strlen(user_name)) == 0) {
+ pam_syslog(pamh, LOG_NOTICE, "user name is not valid");
+ return PAM_SERVICE_ERR;
+ }
+
+ if (user_len > sizeof(line) - sizeof(":")) {
+ pam_syslog(pamh, LOG_NOTICE, "user name is too long");
+ return PAM_SERVICE_ERR;
+ }
+
+ if (strchr(user_name, ':') != NULL) {
+ /*
+ * "root:x" is not a local user name even if the passwd file
+ * contains a line starting with "root:x:".
+ */
+ return PAM_PERM_DENIED;
+ }
+
+ /* Open the passwd file. */
+ if (file_name == NULL) {
+ file_name = "/etc/passwd";
+ }
+ if ((fp = fopen(file_name, "r")) == NULL) {
+ pam_syslog(pamh, LOG_ERR, "error opening %s: %m", file_name);
+ return PAM_SERVICE_ERR;
+ }
+
+ /*
+ * Scan the file using fgets() instead of fgetpwent_r() because
+ * the latter is not flexible enough in handling long lines
+ * in passwd files.
+ */
+ rc = PAM_PERM_DENIED;
+ while (fgets(line, sizeof(line), fp) != NULL) {
+ size_t line_len;
+ const char *str;
+
+ /*
+ * Does this line start with the user name
+ * followed by a colon?
+ */
+ if (strncmp(user_name, line, user_len) == 0 &&
+ line[user_len] == ':') {
+ rc = PAM_SUCCESS;
+ /*
+ * Continue reading the file to avoid timing attacks.
+ */
+ }
+ /* Has a newline been read? */
+ line_len = strlen(line);
+ if (line_len < sizeof(line) - 1 ||
+ line[line_len - 1] == '\n') {
+ /* Yes, continue with the next line. */
+ continue;
+ }
+
+ /* No, read till the end of this line first. */
+ while ((str = fgets(line, sizeof(line), fp)) != NULL) {
+ line_len = strlen(line);
+ if (line_len == 0 ||
+ line[line_len - 1] == '\n') {
+ break;
+ }
+ }
+ if (str == NULL) {
+ /* fgets returned NULL, we are done. */
+ break;
+ }
+ /* Continue with the next line. */
+ }
+
+ fclose(fp);
+ return rc;
+}
diff --git a/libpam/pam_modutil_priv.c b/libpam/pam_modutil_priv.c
index e22fab1a..a463e06a 100644
--- a/libpam/pam_modutil_priv.c
+++ b/libpam/pam_modutil_priv.c
@@ -107,11 +107,20 @@ int pam_modutil_drop_priv(pam_handle_t *pamh,
* We should care to leave process credentials in consistent state.
* That is, e.g. if change_gid() succeeded but change_uid() failed,
* we should try to restore old gid.
+ *
+ * We try to add the supplementary groups on a best-effort
+ * basis. If it fails, it's not fatal: we fall back to using an
+ * empty list.
*/
- if (setgroups(0, NULL)) {
- pam_syslog(pamh, LOG_ERR,
- "pam_modutil_drop_priv: setgroups failed: %m");
- return cleanup(p);
+ if (initgroups(pw->pw_name, pw->pw_gid)) {
+ pam_syslog(pamh, LOG_WARNING,
+ "pam_modutil_drop_priv: initgroups failed: %m");
+
+ if (setgroups(0, NULL)) {
+ pam_syslog(pamh, LOG_ERR,
+ "pam_modutil_drop_priv: setgroups failed: %m");
+ return cleanup(p);
+ }
}
if (change_gid(pw->pw_gid, &p->old_gid)) {
pam_syslog(pamh, LOG_ERR,
diff --git a/libpam/pam_modutil_sanitize.c b/libpam/pam_modutil_sanitize.c
index 58b9537c..f26e8ec0 100644
--- a/libpam/pam_modutil_sanitize.c
+++ b/libpam/pam_modutil_sanitize.c
@@ -10,13 +10,6 @@
#include <fcntl.h>
#include <syslog.h>
#include <sys/resource.h>
-#include <dirent.h>
-#ifdef HAVE_SYS_VFS_H
-#include <sys/vfs.h>
-#endif
-#ifdef HAVE_LINUX_MAGIC_H
-#include <linux/magic.h>
-#endif
/*
* Creates a pipe, closes its write end, redirects fd to its read end.
@@ -91,69 +84,31 @@ redirect_out(pam_handle_t *pamh, enum pam_modutil_redirect_fd mode,
return fd;
}
-/* Check if path is in a procfs. */
-static int
-is_in_procfs(int fd)
-{
-#if defined HAVE_SYS_VFS_H && defined PROC_SUPER_MAGIC
- struct statfs stfs;
-
- if (fstatfs(fd, &stfs) == 0) {
- if (stfs.f_type == PROC_SUPER_MAGIC)
- return 1;
- } else {
- return 0;
- }
-#endif /* HAVE_SYS_VFS_H && PROC_SUPER_MAGIC */
-
- return -1;
-}
-
/* Closes all descriptors after stderr. */
static void
close_fds(void)
{
- DIR *dir = NULL;
- struct dirent *dent;
- int dfd = -1;
- int fd;
- struct rlimit rlim;
-
/*
* An arbitrary upper limit for the maximum file descriptor number
* returned by RLIMIT_NOFILE.
*/
- const unsigned int MAX_FD_NO = 65535;
+ const int MAX_FD_NO = 65535;
/* The lower limit is the same as for _POSIX_OPEN_MAX. */
- const unsigned int MIN_FD_NO = 20;
-
- /* If /proc is mounted, we can optimize which fd can be closed. */
- if ((dir = opendir("/proc/self/fd")) != NULL) {
- if ((dfd = dirfd(dir)) >= 0 && is_in_procfs(dfd) > 0) {
- while ((dent = readdir(dir)) != NULL) {
- fd = atoi(dent->d_name);
- if (fd > STDERR_FILENO && fd != dfd)
- close(fd);
- }
- } else {
- dfd = -1;
- }
- closedir(dir);
- }
+ const int MIN_FD_NO = 20;
- /* If /proc isn't available, fallback to the previous behavior. */
- if (dfd < 0) {
- if (getrlimit(RLIMIT_NOFILE, &rlim) || rlim.rlim_max > MAX_FD_NO)
- fd = MAX_FD_NO;
- else if (rlim.rlim_max < MIN_FD_NO)
- fd = MIN_FD_NO;
- else
- fd = rlim.rlim_max - 1;
-
- for (; fd > STDERR_FILENO; --fd)
- close(fd);
- }
+ int fd;
+ struct rlimit rlim;
+
+ if (getrlimit(RLIMIT_NOFILE, &rlim) || rlim.rlim_max > (rlim_t)MAX_FD_NO)
+ fd = MAX_FD_NO;
+ else if (rlim.rlim_max < (rlim_t)MIN_FD_NO)
+ fd = MIN_FD_NO;
+ else
+ fd = (int)rlim.rlim_max - 1;
+
+ for (; fd > STDERR_FILENO; --fd)
+ close(fd);
}
int
diff --git a/libpam/pam_start.c b/libpam/pam_start.c
index 59d06224..99dd0389 100644
--- a/libpam/pam_start.c
+++ b/libpam/pam_start.c
@@ -115,6 +115,7 @@ static int _pam_start_internal (
pam_syslog(*pamh, LOG_CRIT, "pam_start: malloc failed for pam_conv");
_pam_drop((*pamh)->service_name);
_pam_drop((*pamh)->user);
+ _pam_drop((*pamh)->confdir);
_pam_drop(*pamh);
return (PAM_BUF_ERR);
} else {
@@ -128,6 +129,7 @@ static int _pam_start_internal (
_pam_drop((*pamh)->pam_conversation);
_pam_drop((*pamh)->service_name);
_pam_drop((*pamh)->user);
+ _pam_drop((*pamh)->confdir);
_pam_drop(*pamh);
return PAM_ABORT;
}
@@ -145,6 +147,7 @@ static int _pam_start_internal (
_pam_drop((*pamh)->pam_conversation);
_pam_drop((*pamh)->service_name);
_pam_drop((*pamh)->user);
+ _pam_drop((*pamh)->confdir);
_pam_drop(*pamh);
return PAM_ABORT;
}
diff --git a/libpam_misc/Makefile.am b/libpam_misc/Makefile.am
index a4900bd9..4f01d322 100644
--- a/libpam_misc/Makefile.am
+++ b/libpam_misc/Makefile.am
@@ -20,3 +20,7 @@ libpam_misc_la_LIBADD = $(top_builddir)/libpam/libpam.la
lib_LTLIBRARIES = libpam_misc.la
libpam_misc_la_SOURCES = help_env.c misc_conv.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pam_misc.pc
diff --git a/libpam_misc/Makefile.in b/libpam_misc/Makefile.in
index 5f6e92a9..9ce0691e 100644
--- a/libpam_misc/Makefile.in
+++ b/libpam_misc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -19,6 +19,7 @@
#
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -96,25 +97,28 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/libpam_misc.map
subdir = libpam_misc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
$(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = pam_misc.pc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -143,7 +147,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libpam_misc_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
am_libpam_misc_la_OBJECTS = help_env.lo misc_conv.lo
@@ -199,6 +204,7 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(pkgconfig_DATA)
HEADERS = $(include_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
@@ -219,7 +225,7 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in \
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/pam_misc.pc.in \
$(top_srcdir)/build-aux/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
@@ -240,6 +246,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -253,6 +262,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -272,7 +283,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -319,8 +329,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -331,6 +339,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -380,7 +389,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -388,9 +396,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -400,6 +405,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -415,6 +421,10 @@ libpam_misc_la_LDFLAGS = -no-undefined -version-info 82:1:82 \
libpam_misc_la_LIBADD = $(top_builddir)/libpam/libpam.la
lib_LTLIBRARIES = libpam_misc.la
libpam_misc_la_SOURCES = help_env.c misc_conv.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pam_misc.pc
all: all-am
.SUFFIXES:
@@ -448,6 +458,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+pam_misc.pc: $(top_builddir)/config.status $(srcdir)/pam_misc.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@@ -528,6 +540,27 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
@@ -637,9 +670,9 @@ distdir-am: $(DISTFILES)
done
check-am: all-am
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -697,7 +730,7 @@ info: info-am
info-am:
-install-data-am: install-includeHEADERS
+install-data-am: install-includeHEADERS install-pkgconfigDATA
install-dvi: install-dvi-am
@@ -744,7 +777,8 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
+uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+ uninstall-pkgconfigDATA
.MAKE: install-am install-strip
@@ -757,12 +791,12 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
install-exec-am install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
+ install-pkgconfigDATA install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES
+ uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
.PRECIOUS: Makefile
diff --git a/libpam_misc/misc_conv.c b/libpam_misc/misc_conv.c
index f6397af1..908ee890 100644
--- a/libpam_misc/misc_conv.c
+++ b/libpam_misc/misc_conv.c
@@ -18,7 +18,7 @@
#include <security/pam_appl.h>
#include <security/pam_misc.h>
-#define INPUTSIZE PAM_MAX_RESP_SIZE /* maximum length of input+1 */
+#define INPUTSIZE PAM_MISC_CONV_BUFSIZE /* maximum length of input+1 */
#define CONV_ECHO_ON 1 /* types of echo state */
#define CONV_ECHO_OFF 0
@@ -184,15 +184,17 @@ static int read_string(int echo, const char *prompt, char **retstr)
nc++) {
int rv;
if ((rv=read(STDIN_FILENO, line+nc, 1)) != 1) {
- if (rv < 0)
+ if (rv < 0) {
+ _pam_overwrite_n(line, (unsigned int) nc);
nc = rv;
+ }
break;
}
}
if (have_term) {
(void) tcsetattr(STDIN_FILENO, TCSADRAIN, &term_before);
if (!echo || expired) /* do we need a newline? */
- fprintf(stderr,"\n");
+ fprintf(stderr, "\n");
}
if ( delay > 0 ) {
reset_alarm(&old_sig);
@@ -202,7 +204,7 @@ static int read_string(int echo, const char *prompt, char **retstr)
} else if (nc > 0) { /* we got some user input */
D(("we got some user input"));
- if (nc > 0 && line[nc-1] == '\n') { /* <NUL> terminate */
+ if (line[nc-1] == '\n') { /* <NUL> terminate */
line[--nc] = '\0';
} else {
if (echo) {
@@ -244,13 +246,13 @@ static int read_string(int echo, const char *prompt, char **retstr)
D(("the timer appears to have expired"));
*retstr = NULL;
- _pam_overwrite(line);
+ _pam_overwrite_n(line, sizeof(line));
cleanexit:
if (have_term) {
(void) sigprocmask(SIG_SETMASK, &oset, NULL);
- (void) tcsetattr(STDIN_FILENO, TCSADRAIN, &term_before);
+ (void) tcsetattr(STDIN_FILENO, TCSAFLUSH, &term_before);
}
return nc;
diff --git a/libpam_misc/pam_misc.pc.in b/libpam_misc/pam_misc.pc.in
new file mode 100644
index 00000000..0c8898cd
--- /dev/null
+++ b/libpam_misc/pam_misc.pc.in
@@ -0,0 +1,9 @@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: pam_misc
+Description: Miscellaneous functions that make the job of writing PAM-aware applications easier.
+URL: http://www.linux-pam.org/
+Version: @VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lpam_misc
diff --git a/libpamc/Makefile.am b/libpamc/Makefile.am
index 85c9ce7f..2ebeadca 100644
--- a/libpamc/Makefile.am
+++ b/libpamc/Makefile.am
@@ -22,3 +22,7 @@ endif
lib_LTLIBRARIES = libpamc.la
libpamc_la_SOURCES = pamc_client.c pamc_converse.c pamc_load.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pamc.pc
diff --git a/libpamc/Makefile.in b/libpamc/Makefile.in
index 47cb3034..424c175a 100644
--- a/libpamc/Makefile.in
+++ b/libpamc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -19,6 +19,7 @@
#
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -96,25 +97,28 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/libpamc.map
subdir = libpamc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
$(noinst_HEADERS) $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = pamc.pc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
@@ -143,7 +147,8 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
+ "$(DESTDIR)$(includedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libpamc_la_LIBADD =
am_libpamc_la_OBJECTS = pamc_client.lo pamc_converse.lo pamc_load.lo
@@ -206,6 +211,7 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+DATA = $(pkgconfig_DATA)
HEADERS = $(include_HEADERS) $(noinst_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
@@ -235,7 +241,7 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(srcdir)/Makefile.in \
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/pamc.pc.in \
$(top_srcdir)/build-aux/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
@@ -281,6 +287,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -294,6 +303,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -313,7 +324,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -360,8 +370,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -372,6 +380,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -421,7 +430,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -429,9 +437,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -441,6 +446,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -455,6 +461,10 @@ libpamc_la_LDFLAGS = -no-undefined -version-info 82:1:82 \
$(am__append_1)
lib_LTLIBRARIES = libpamc.la
libpamc_la_SOURCES = pamc_client.c pamc_converse.c pamc_load.c
+
+# Pkg-config script.
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pamc.pc
all: all-recursive
.SUFFIXES:
@@ -488,6 +498,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+pamc.pc: $(top_builddir)/config.status $(srcdir)/pamc.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@@ -569,6 +581,27 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
@@ -750,10 +783,10 @@ distdir-am: $(DISTFILES)
done
check-am: all-am
check: check-recursive
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -812,7 +845,7 @@ info: info-recursive
info-am:
-install-data-am: install-includeHEADERS
+install-data-am: install-includeHEADERS install-pkgconfigDATA
install-dvi: install-dvi-recursive
@@ -860,7 +893,8 @@ ps: ps-recursive
ps-am:
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
+uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+ uninstall-pkgconfigDATA
.MAKE: $(am__recursive_targets) install-am install-strip
@@ -874,12 +908,13 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
install-exec-am install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES
+ install-pkgconfigDATA install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+ uninstall-pkgconfigDATA
.PRECIOUS: Makefile
diff --git a/libpamc/pamc.pc.in b/libpamc/pamc.pc.in
new file mode 100644
index 00000000..25a63854
--- /dev/null
+++ b/libpamc/pamc.pc.in
@@ -0,0 +1,9 @@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libpamc
+URL: http://www.linux-pam.org/
+Description: The PAM client API library and binary prompt support. Rarely used.
+Version: @VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lpamc
diff --git a/libpamc/test/Makefile.in b/libpamc/test/Makefile.in
index a88da2f1..e2f360bd 100644
--- a/libpamc/test/Makefile.in
+++ b/libpamc/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = libpamc/test
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -152,6 +155,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -165,6 +171,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -184,7 +192,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -231,8 +238,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -243,6 +248,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -292,7 +298,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -300,9 +305,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -312,6 +314,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
diff --git a/m4/attribute.m4 b/m4/attribute.m4
new file mode 100644
index 00000000..3aa2e5fc
--- /dev/null
+++ b/m4/attribute.m4
@@ -0,0 +1,16 @@
+#!/usr/bin/m4
+dnl Check for compiler attributes
+
+AC_DEFUN([PAM_ATTRIBUTE_UNUSED], [
+ AC_CACHE_CHECK([for __attribute__((unused))], [pam_cv_attribute_unused],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[int fun(int i __attribute__((unused)));]],
+ [[return fun(0);]])],
+ [pam_cv_attribute_unused=yes],
+ [pam_cv_attribute_unused=no])])
+ AS_IF([test "$pam_cv_attribute_unused" = yes],
+ [unused='__attribute__((unused))'],
+ [unused=])
+ AC_DEFINE_UNQUOTED([UNUSED], [$unused],
+ [Define if the compiler supports __attribute__((unused))])
+])
diff --git a/m4/japhar_grep_cflags.m4 b/m4/japhar_grep_cflags.m4
deleted file mode 100644
index cf2ea4a5..00000000
--- a/m4/japhar_grep_cflags.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-dnl
-dnl JAPHAR_GREP_CFLAGS(flag, cmd_if_missing, cmd_if_present)
-dnl
-dnl From Japhar. Report changes to japhar@hungry.com
-dnl
-AC_DEFUN([JAPHAR_GREP_CFLAGS],
-[case "$CFLAGS" in
-"$1" | "$1 "* | *" $1" | *" $1 "* )
- ifelse($#, 3, [$3], [:])
- ;;
-*)
- $2
- ;;
-esac
-])
-
-dnl
-dnl Test for __attribute__ ((unused))
-dnl Based on code from the tcpdump version 3.7.2 source.
-dnl
-
-AC_DEFUN([AC_C___ATTRIBUTE__], [
-AC_MSG_CHECKING(for __attribute__)
-AC_CACHE_VAL(ac_cv___attribute__, [
-AC_TRY_COMPILE([
-#include <stdlib.h>
-static void foo (void) __attribute__ ((unused));
-
-static void
-foo (void)
-{
- exit(1);
-}
-],
-[
- exit (0);
-],
-ac_cv___attribute__=yes,
-ac_cv___attribute__=no)])
-if test "$ac_cv___attribute__" = "yes"; then
- AC_DEFINE(UNUSED, __attribute__ ((unused)), [define if your compiler has __att
-ribute__ ((unused))])
-else
- AC_DEFINE(UNUSED,,)
-fi
-AC_MSG_RESULT($ac_cv___attribute__)
-])
diff --git a/m4/jh_path_xml_catalog.m4 b/m4/jh_path_xml_catalog.m4
index dd01f165..1f2eff3a 100644
--- a/m4/jh_path_xml_catalog.m4
+++ b/m4/jh_path_xml_catalog.m4
@@ -6,8 +6,8 @@ AC_DEFUN([JH_PATH_XML_CATALOG],
[
# check for the presence of the XML catalog
AC_ARG_WITH([xml-catalog],
- AC_HELP_STRING([--with-xml-catalog=CATALOG],
- [path to xml catalog to use]),,
+ [AS_HELP_STRING([--with-xml-catalog=CATALOG],
+ [path to xml catalog to use])],,
[with_xml_catalog=/etc/xml/catalog])
jh_found_xmlcatalog=true
XML_CATALOG_FILE="$with_xml_catalog"
diff --git a/m4/ld-O1.m4 b/m4/ld-O1.m4
index f67b959b..64593280 100644
--- a/m4/ld-O1.m4
+++ b/m4/ld-O1.m4
@@ -1,24 +1,15 @@
-# ld-O1.m4 serial 3
+#!/usr/bin/m4
+dnl Check whether ld supports -O1
-# Test if ld supports -O1
-
-AC_DEFUN([PAM_LD_O1],
- [
- AC_CACHE_CHECK(whether ld supports -O1,
- pam_cv_ld_O1, [ dnl
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,-O1 1>&AS_MESSAGE_LOG_FD])
- then
- pam_cv_ld_O1=yes
- LDFLAGS="$LDFLAGS -Wl,-O1"
- else
- pam_cv_ld_O1=no
- fi
- rm -f conftest*])
- AC_SUBST(pam_cv_ld_O1)
- ]
-)
+AC_DEFUN([PAM_LD_O1], [dnl
+ AC_CACHE_CHECK([whether ld supports -O1],
+ [pam_cv_ld_O1],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-O1"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_ld_O1=yes],
+ [pam_cv_ld_O1=no])
+ LDFLAGS="$saved_LDFLAGS"])
+ AS_IF([test $pam_cv_ld_O1 = yes],
+ [LDFLAGS="$LDFLAGS -Wl,-O1"])
+])
diff --git a/m4/ld-as-needed.m4 b/m4/ld-as-needed.m4
index 5ba6e0f9..d6590192 100644
--- a/m4/ld-as-needed.m4
+++ b/m4/ld-as-needed.m4
@@ -1,24 +1,15 @@
-# ld-as-needed.m4 serial 2
+#!/usr/bin/m4
+dnl Check whether ld supports --as-needed
-# Test if ld supports --as-needed
-
-AC_DEFUN([PAM_LD_AS_NEEDED],
- [
- AC_CACHE_CHECK(whether ld supports --as-needed,
- pam_cv_ld_as_needed, [ dnl
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,--as-needed 1>&AS_MESSAGE_LOG_FD])
- then
- pam_cv_ld_as_needed=yes
- LDFLAGS="$LDFLAGS -Wl,--as-needed"
- else
- pam_cv_ld_as_needed=no
- fi
- rm -f conftest*])
- AC_SUBST(pam_cv_ld_as_needed)
- ]
-)
+AC_DEFUN([PAM_LD_AS_NEEDED], [dnl
+ AC_CACHE_CHECK([whether ld supports --as-needed],
+ [pam_cv_ld_as_needed],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--as-needed"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_ld_as_needed=yes],
+ [pam_cv_ld_as_needed=no])
+ LDFLAGS="$saved_LDFLAGS"])
+ AS_IF([test $pam_cv_ld_as_needed = yes],
+ [LDFLAGS="$LDFLAGS -Wl,--as-needed"])
+])
diff --git a/m4/ld-no-undefined.m4 b/m4/ld-no-undefined.m4
index b6db946a..6f342d00 100644
--- a/m4/ld-no-undefined.m4
+++ b/m4/ld-no-undefined.m4
@@ -1,24 +1,15 @@
-# ld-no-undefined.m4 serial 1
+#!/usr/bin/m4
+dnl Check whether ld supports --no-undefined
-# Test if ld supports --no-undefined
-
-AC_DEFUN([PAM_LD_NO_UNDEFINED],
- [
- AC_CACHE_CHECK(whether ld supports --no-undefined,
- pam_cv_ld_no_undefined, [ dnl
- cat > conftest.c <<EOF
-int main (void) { return 0; }
-EOF
- if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
- -o conftest.o conftest.c
- -Wl,--no-undefined 1>&AS_MESSAGE_LOG_FD])
- then
- pam_cv_ld_no_undefined=yes
- LDFLAGS="$LDFLAGS -Wl,--no-undefined"
- else
- pam_cv_ld_no_undefined=no
- fi
- rm -f conftest*])
- AC_SUBST(pam_cv_ld_no_undefined)
- ]
-)
+AC_DEFUN([PAM_LD_NO_UNDEFINED], [dnl
+ AC_CACHE_CHECK([whether ld supports --no-undefined],
+ [pam_cv_ld_no_undefined],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,--no-undefined"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_ld_no_undefined=yes],
+ [pam_cv_ld_no_undefined=no])
+ LDFLAGS="$saved_LDFLAGS"])
+ AS_IF([test $pam_cv_ld_no_undefined = yes],
+ [LDFLAGS="$LDFLAGS -Wl,--no-undefined"])
+])
diff --git a/m4/ld-z-now.m4 b/m4/ld-z-now.m4
new file mode 100644
index 00000000..1bc82594
--- /dev/null
+++ b/m4/ld-z-now.m4
@@ -0,0 +1,16 @@
+#!/usr/bin/m4
+dnl Check whether ld supports "-z now"
+
+AC_DEFUN([PAM_LD_Z_NOW], [dnl
+ AC_CACHE_CHECK([whether ld supports "-z now"],
+ [pam_cv_ld_z_now],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-z,now"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_ld_z_now=yes],
+ [pam_cv_ld_z_now=no])
+ LDFLAGS="$saved_LDFLAGS"])
+ AS_IF([test $pam_cv_ld_z_now = yes],
+ [ZNOW_LDFLAGS="-Wl,-z,now"],
+ [ZNOW_LDFLAGS=])
+])
diff --git a/m4/libprelude.m4 b/m4/libprelude.m4
index a9ea404c..d6a1efd9 100644
--- a/m4/libprelude.m4
+++ b/m4/libprelude.m4
@@ -15,8 +15,8 @@ AC_DEFUN([AM_PATH_LIBPRELUDE],
[dnl
dnl Get the cflags and libraries from the libprelude-config script
dnl
-AC_ARG_WITH(libprelude-prefix, AC_HELP_STRING(--with-libprelude-prefix=PFX,
- Prefix where libprelude is installed (optional)),
+AC_ARG_WITH(libprelude-prefix, [AS_HELP_STRING([--with-libprelude-prefix=PFX],
+ [Prefix where libprelude is installed (optional)])],
libprelude_config_prefix="$withval", libprelude_config_prefix="")
if test x$libprelude_config_prefix != x ; then
@@ -52,7 +52,8 @@ dnl Now check if the installed libprelude is sufficiently new. Also sanity
dnl checks the results of libprelude-config to some extent
dnl
rm -f conf.libpreludetest
- AC_TRY_RUN([
+ AC_RUN_IFELSE([
+ AC_LANG_SOURCE([[
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -106,7 +107,7 @@ main ()
}
return 1;
}
-],, no_libprelude=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+]])],[],[no_libprelude=yes],[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
LDFLAGS="$ac_save_LDFLAGS"
@@ -122,24 +123,28 @@ main ()
AC_MSG_RESULT(no)
fi
if test "$LIBPRELUDE_CONFIG" = "no" ; then
- echo "*** The libprelude-config script installed by LIBPRELUDE could not be found"
- echo "*** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in"
- echo "*** your path, or set the LIBPRELUDE_CONFIG environment variable to the"
- echo "*** full path to libprelude-config."
+ if test x$libprelude_config_prefix != x ; then
+ echo "*** The libprelude-config script installed by LIBPRELUDE could not be found"
+ echo "*** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the LIBPRELUDE_CONFIG environment variable to the"
+ echo "*** full path to libprelude-config."
+ fi
else
if test -f conf.libpreludetest ; then
:
else
echo "*** Could not run libprelude test program, checking why..."
CFLAGS="$CFLAGS $LIBPRELUDE_CFLAGS"
- LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
+ LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
LIBS="$LIBS $LIBPRELUDE_LIBS"
- AC_TRY_LINK([
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libprelude/prelude.h>
-], [ return !!prelude_check_version(NULL); ],
+]],
+ [[ return !!prelude_check_version(NULL); ]])],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding LIBPRELUDE or finding the wrong"
echo "*** version of LIBPRELUDE. If it is not finding LIBPRELUDE, you'll need to set your"
@@ -155,7 +160,7 @@ main ()
echo "*** or that you have moved LIBPRELUDE since it was installed. In the latter case, you"
echo "*** may want to edit the libprelude-config script: $LIBPRELUDE_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
- LDFLAGS="$ac_save_LDFLAGS"
+ LDFLAGS="$ac_save_LDFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
diff --git a/m4/warn_lang_flags.m4 b/m4/warn_lang_flags.m4
new file mode 100644
index 00000000..7c4871d6
--- /dev/null
+++ b/m4/warn_lang_flags.m4
@@ -0,0 +1,33 @@
+#!/usr/bin/m4
+
+AC_DEFUN([pam_WARN_LANG_FLAGS], [dnl
+gl_WARN_ADD([-W])
+gl_WARN_ADD([-Wall])
+gl_WARN_ADD([-Wbad-function-cast])
+gl_WARN_ADD([-Wcast-align])
+gl_WARN_ADD([-Wcast-align=strict])
+gl_WARN_ADD([-Wcast-qual])
+gl_WARN_ADD([-Wdeprecated])
+gl_WARN_ADD([-Winline])
+gl_WARN_ADD([-Wmain])
+gl_WARN_ADD([-Wmissing-declarations])
+gl_WARN_ADD([-Wmissing-format-attribute])
+gl_WARN_ADD([-Wmissing-prototypes])
+gl_WARN_ADD([-Wp64])
+gl_WARN_ADD([-Wpointer-arith])
+gl_WARN_ADD([-Wreturn-type])
+gl_WARN_ADD([-Wshadow])
+gl_WARN_ADD([-Wstrict-prototypes])
+gl_WARN_ADD([-Wuninitialized])
+gl_WARN_ADD([-Wwrite-strings])
+AC_ARG_ENABLE([Werror],
+ [AS_HELP_STRING([--enable-Werror], [turn on -Werror compiler option])],
+ [case $enableval in
+ yes) gl_WARN_ADD([-Werror]) ;;
+ no) ;;
+ *) AC_MSG_ERROR([bad value $enableval for Werror option]) ;;
+ esac])
+AS_VAR_PUSHDEF([pam_WARN_FLAGS], [WARN_[]_AC_LANG_PREFIX[]FLAGS])dnl
+AC_SUBST(pam_WARN_FLAGS)
+AS_VAR_POPDEF([pam_WARN_FLAGS])dnl
+])
diff --git a/m4/warnings.m4 b/m4/warnings.m4
new file mode 100644
index 00000000..628627d0
--- /dev/null
+++ b/m4/warnings.m4
@@ -0,0 +1,85 @@
+# warnings.m4 serial 11
+# modified for strace project
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_AS_VAR_APPEND(VAR, VALUE)
+# ----------------------------
+# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
+m4_ifdef([AS_VAR_APPEND],
+[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
+[m4_define([gl_AS_VAR_APPEND],
+[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
+
+
+# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
+# [PROGRAM = AC_LANG_PROGRAM()])
+# -----------------------------------------------------------------
+# Check if the compiler supports OPTION when compiling PROGRAM.
+#
+# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
+# 2.64 or newer.
+AC_DEFUN([gl_COMPILER_OPTION_IF],
+[AS_VAR_PUSHDEF([gl_Flags], _AC_LANG_PREFIX[]FLAGS)dnl
+AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]gl_Flags[]_$1])dnl
+AS_LITERAL_IF([$1],
+ [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
+ [gl_positive="$1"
+case $gl_positive in
+ -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
+esac
+m4_pushdef([gl_Positive], [$gl_positive])])dnl
+AC_CACHE_CHECK([whether $[]_AC_CC[] handles $1], m4_defn([gl_Warn]), [
+ gl_save_compiler_FLAGS="$gl_Flags"
+ gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
+ [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
+ AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
+ [AS_VAR_SET(gl_Warn, [yes])],
+ [AS_VAR_SET(gl_Warn, [no])])
+ gl_Flags="$gl_save_compiler_FLAGS"
+])
+AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
+m4_popdef([gl_Positive])dnl
+AS_VAR_POPDEF([gl_Flags])dnl
+AS_VAR_POPDEF([gl_Warn])dnl
+])
+
+# gl_UNKNOWN_WARNINGS_ARE_ERRORS
+# ------------------------------
+# Clang doesn't complain about unknown warning options unless one also
+# specifies -Wunknown-warning-option -Werror. Detect this.
+AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
+[AS_IF([test x${gl_unknown_warnings_are_errors+set} = x],
+ [gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
+ [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
+ [gl_unknown_warnings_are_errors=])
+ ])
+])
+
+# gl_WARN_ADD(OPTION, [VARIABLE = WARN_[]_AC_LANG_PREFIX[]FLAGS],
+# [PROGRAM = AC_LANG_PROGRAM()])
+# ---------------------------------------------
+# Adds parameter to WARN_[]_AC_LANG_PREFIX[]FLAGS if the compiler supports it
+# when compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
+#
+# If VARIABLE is a variable name, AC_SUBST it.
+AC_DEFUN([gl_WARN_ADD],
+[AS_VAR_PUSHDEF([gl_WARN_FLAGS], [WARN_[]_AC_LANG_PREFIX[]FLAGS])dnl
+gl_UNKNOWN_WARNINGS_ARE_ERRORS
+gl_COMPILER_OPTION_IF([$1],
+ [gl_AS_VAR_APPEND(m4_if([$2], [], [gl_WARN_FLAGS], [[$2]]), [" $1"])],
+ [],
+ [$3])
+m4_ifval([$2],
+ [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
+ [AC_SUBST(gl_WARN_FLAGS)])dnl
+AS_VAR_POPDEF([gl_WARN_FLAGS])dnl
+])
+
+# Local Variables:
+# mode: autoconf
+# End:
diff --git a/modules/Makefile.am b/modules/Makefile.am
index c57ccc44..8da46410 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -2,10 +2,6 @@
# Copyright (c) 2005, 2006, 2008 Thorsten Kukuk <kukuk@thkukuk.de>
#
-if COND_BUILD_PAM_CRACKLIB
- MAYBE_PAM_CRACKLIB = pam_cracklib
-endif
-
if COND_BUILD_PAM_KEYINIT
MAYBE_PAM_KEYINIT = pam_keyinit
endif
@@ -34,25 +30,20 @@ if COND_BUILD_PAM_SETQUOTA
MAYBE_PAM_SETQUOTA = pam_setquota
endif
-if COND_BUILD_PAM_TALLY
- MAYBE_PAM_TALLY = pam_tally
-endif
-
-if COND_BUILD_PAM_TALLY2
- MAYBE_PAM_TALLY2 = pam_tally2
-endif
-
if COND_BUILD_PAM_TTY_AUDIT
MAYBE_PAM_TTY_AUDIT = pam_tty_audit
endif
+if COND_BUILD_PAM_UNIX
+ MAYBE_PAM_UNIX = pam_unix
+endif
+
if COND_BUILD_PAM_USERDB
MAYBE_PAM_USERDB = pam_userdb
endif
SUBDIRS := \
pam_access \
- $(MAYBE_PAM_CRACKLIB) \
pam_debug \
pam_deny \
pam_echo \
@@ -86,13 +77,11 @@ SUBDIRS := \
pam_shells \
pam_stress \
pam_succeed_if \
- $(MAYBE_PAM_TALLY) \
- $(MAYBE_PAM_TALLY2) \
pam_time \
pam_timestamp \
$(MAYBE_PAM_TTY_AUDIT) \
pam_umask \
- pam_unix \
+ $(MAYBE_PAM_UNIX) \
$(MAYBE_PAM_USERDB) \
pam_usertype \
pam_warn \
diff --git a/modules/Makefile.in b/modules/Makefile.in
index d3e319bd..98436b00 100644
--- a/modules/Makefile.in
+++ b/modules/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -93,18 +93,21 @@ build_triplet = @build@
host_triplet = @host@
subdir = modules
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -166,15 +169,15 @@ am__define_uniq_tagged_files = \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
-DIST_SUBDIRS = pam_access pam_cracklib pam_debug pam_deny pam_echo \
- pam_env pam_exec pam_faildelay pam_faillock pam_filter pam_ftp \
- pam_group pam_issue pam_keyinit pam_lastlog pam_limits \
- pam_listfile pam_localuser pam_loginuid pam_mail pam_mkhomedir \
- pam_motd pam_namespace pam_nologin pam_permit pam_pwhistory \
- pam_rhosts pam_rootok pam_securetty pam_selinux pam_sepermit \
- pam_setquota pam_shells pam_stress pam_succeed_if pam_tally \
- pam_tally2 pam_time pam_timestamp pam_tty_audit pam_umask \
- pam_unix pam_userdb pam_usertype pam_warn pam_wheel pam_xauth
+DIST_SUBDIRS = pam_access pam_debug pam_deny pam_echo pam_env pam_exec \
+ pam_faildelay pam_faillock pam_filter pam_ftp pam_group \
+ pam_issue pam_keyinit pam_lastlog pam_limits pam_listfile \
+ pam_localuser pam_loginuid pam_mail pam_mkhomedir pam_motd \
+ pam_namespace pam_nologin pam_permit pam_pwhistory pam_rhosts \
+ pam_rootok pam_securetty pam_selinux pam_sepermit pam_setquota \
+ pam_shells pam_stress pam_succeed_if pam_time pam_timestamp \
+ pam_tty_audit pam_umask pam_unix pam_userdb pam_usertype \
+ pam_warn pam_wheel pam_xauth
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
@@ -220,6 +223,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -233,6 +239,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -252,7 +260,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -299,8 +306,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -311,6 +316,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -360,7 +366,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -368,9 +373,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -380,11 +382,11 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-@COND_BUILD_PAM_CRACKLIB_TRUE@MAYBE_PAM_CRACKLIB = pam_cracklib
@COND_BUILD_PAM_KEYINIT_TRUE@MAYBE_PAM_KEYINIT = pam_keyinit
@COND_BUILD_PAM_LASTLOG_TRUE@MAYBE_PAM_LASTLOG = pam_lastlog
@COND_BUILD_PAM_NAMESPACE_TRUE@MAYBE_PAM_NAMESPACE = pam_namespace
@@ -392,13 +394,11 @@ top_srcdir = @top_srcdir@
@COND_BUILD_PAM_SELINUX_TRUE@MAYBE_PAM_SELINUX = pam_selinux
@COND_BUILD_PAM_SEPERMIT_TRUE@MAYBE_PAM_SEPERMIT = pam_sepermit
@COND_BUILD_PAM_SETQUOTA_TRUE@MAYBE_PAM_SETQUOTA = pam_setquota
-@COND_BUILD_PAM_TALLY_TRUE@MAYBE_PAM_TALLY = pam_tally
-@COND_BUILD_PAM_TALLY2_TRUE@MAYBE_PAM_TALLY2 = pam_tally2
@COND_BUILD_PAM_TTY_AUDIT_TRUE@MAYBE_PAM_TTY_AUDIT = pam_tty_audit
+@COND_BUILD_PAM_UNIX_TRUE@MAYBE_PAM_UNIX = pam_unix
@COND_BUILD_PAM_USERDB_TRUE@MAYBE_PAM_USERDB = pam_userdb
SUBDIRS := \
pam_access \
- $(MAYBE_PAM_CRACKLIB) \
pam_debug \
pam_deny \
pam_echo \
@@ -432,13 +432,11 @@ SUBDIRS := \
pam_shells \
pam_stress \
pam_succeed_if \
- $(MAYBE_PAM_TALLY) \
- $(MAYBE_PAM_TALLY2) \
pam_time \
pam_timestamp \
$(MAYBE_PAM_TTY_AUDIT) \
pam_umask \
- pam_unix \
+ $(MAYBE_PAM_UNIX) \
$(MAYBE_PAM_USERDB) \
pam_usertype \
pam_warn \
diff --git a/modules/pam_access/Makefile.in b/modules/pam_access/Makefile.in
index dc7db3c3..6f9abf45 100644
--- a/modules/pam_access/Makefile.in
+++ b/modules/pam_access/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_access
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -376,6 +379,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -420,6 +424,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -433,6 +440,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -452,7 +461,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -499,8 +507,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -511,6 +517,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -560,7 +567,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -568,9 +574,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -580,6 +583,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -981,7 +985,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_access/access.conf.5 b/modules/pam_access/access.conf.5
index 1c217b9f..3204aedf 100644
--- a/modules/pam_access/access.conf.5
+++ b/modules/pam_access/access.conf.5
@@ -2,12 +2,12 @@
.\" Title: access.conf
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "ACCESS\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "ACCESS\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_access/pam_access.8 b/modules/pam_access/pam_access.8
index c091642d..92de516d 100644
--- a/modules/pam_access/pam_access.8
+++ b/modules/pam_access/pam_access.8
@@ -2,12 +2,12 @@
.\" Title: pam_access
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ACCESS" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_ACCESS" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_access/pam_access.c b/modules/pam_access/pam_access.c
index 98848c54..277192b9 100644
--- a/modules/pam_access/pam_access.c
+++ b/modules/pam_access/pam_access.c
@@ -160,6 +160,7 @@ static int list_match (pam_handle_t *, char *, char *, struct login_info *,
static int user_match (pam_handle_t *, char *, struct login_info *);
static int group_match (pam_handle_t *, const char *, const char *, int);
static int from_match (pam_handle_t *, char *, struct login_info *);
+static int remote_match (pam_handle_t *, char *, struct login_info *);
static int string_match (pam_handle_t *, const char *, const char *, int);
static int network_netmask_match (pam_handle_t *, const char *, const char *, struct login_info *);
@@ -589,11 +590,9 @@ group_match (pam_handle_t *pamh, const char *tok, const char* usr,
/* from_match - match a host or tty against a list of tokens */
static int
-from_match (pam_handle_t *pamh UNUSED, char *tok, struct login_info *item)
+from_match (pam_handle_t *pamh, char *tok, struct login_info *item)
{
const char *string = item->from;
- int tok_len;
- int str_len;
int rv;
if (item->debug)
@@ -616,14 +615,29 @@ from_match (pam_handle_t *pamh UNUSED, char *tok, struct login_info *item)
} else if ((rv = string_match(pamh, tok, string, item->debug)) != NO) {
/* ALL or exact match */
return rv;
- } else if (tok[0] == '.') { /* domain: match last fields */
- if ((str_len = strlen(string)) > (tok_len = strlen(tok))
- && strcasecmp(tok, string + str_len - tok_len) == 0)
- return (YES);
- } else if (item->from_remote_host == 0) { /* local: no PAM_RHOSTS */
- if (strcasecmp(tok, "LOCAL") == 0)
- return (YES);
- } else if (tok[(tok_len = strlen(tok)) - 1] == '.') {
+ } else if (strcasecmp(tok, "LOCAL") == 0) {
+ /* LOCAL matches only local accesses */
+ if (!item->from_remote_host)
+ return YES;
+ return NO;
+ } else if (item->from_remote_host) {
+ return remote_match(pamh, tok, item);
+ }
+ return NO;
+}
+
+static int
+remote_match (pam_handle_t *pamh, char *tok, struct login_info *item)
+{
+ const char *string = item->from;
+ size_t tok_len = strlen(tok);
+ size_t str_len;
+
+ if (tok[0] == '.') { /* domain: match last fields */
+ if ((str_len = strlen(string)) > tok_len
+ && strcasecmp(tok, string + str_len - tok_len) == 0)
+ return YES;
+ } else if (tok[tok_len - 1] == '.') {
struct addrinfo hint;
memset (&hint, '\0', sizeof (hint));
@@ -661,13 +675,11 @@ from_match (pam_handle_t *pamh UNUSED, char *tok, struct login_info *item)
runp = runp->ai_next;
}
}
- } else {
- /* Assume network/netmask with a IP of a host. */
- if (network_netmask_match(pamh, tok, string, item))
- return YES;
+ return NO;
}
- return NO;
+ /* Assume network/netmask with an IP of a host. */
+ return network_netmask_match(pamh, tok, string, item);
}
/* string_match - match a string against one token */
diff --git a/modules/pam_cracklib/Makefile.am b/modules/pam_cracklib/Makefile.am
deleted file mode 100644
index e11c42d7..00000000
--- a/modules/pam_cracklib/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2005, 2006, 2009 Thorsten Kukuk <kukuk@suse.de>
-#
-
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-
-EXTRA_DIST = $(XMLS)
-
-if HAVE_DOC
-dist_man_MANS = pam_cracklib.8
-endif
-XMLS = README.xml pam_cracklib.8.xml
-dist_check_SCRIPTS = tst-pam_cracklib
-TESTS = $(dist_check_SCRIPTS)
-
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-AM_LDFLAGS = -no-undefined -avoid-version -module
-if HAVE_VERSIONING
- AM_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
-endif
-pam_cracklib_la_LIBADD = $(top_builddir)/libpam/libpam.la \
- @LIBCRACK@ @LIBCRYPT@
-securelib_LTLIBRARIES = pam_cracklib.la
-
-if ENABLE_REGENERATE_MAN
-dist_noinst_DATA = README
--include $(top_srcdir)/Make.xml.rules
-endif
diff --git a/modules/pam_cracklib/Makefile.in b/modules/pam_cracklib/Makefile.in
deleted file mode 100644
index 9cd1afc5..00000000
--- a/modules/pam_cracklib/Makefile.in
+++ /dev/null
@@ -1,1148 +0,0 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#
-# Copyright (c) 2005, 2006, 2009 Thorsten Kukuk <kukuk@suse.de>
-#
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
-subdir = modules/pam_cracklib
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
- $(top_srcdir)/m4/jh_path_xml_catalog.m4 \
- $(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
- $(am__dist_noinst_DATA_DIST) $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"
-LTLIBRARIES = $(securelib_LTLIBRARIES)
-pam_cracklib_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
-pam_cracklib_la_SOURCES = pam_cracklib.c
-pam_cracklib_la_OBJECTS = pam_cracklib.lo
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/pam_cracklib.Plo
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = pam_cracklib.c
-DIST_SOURCES = pam_cracklib.c
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(dist_man_MANS)
-am__dist_noinst_DATA_DIST = README
-DATA = $(dist_noinst_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = { \
- $(am__tty_colors_dummy); \
- if test "X$(AM_COLOR_TESTS)" = Xno; then \
- am__color_tests=no; \
- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
- am__color_tests=yes; \
- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
- am__color_tests=yes; \
- fi; \
- if test $$am__color_tests = yes; then \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
- fi; \
-}
-am__recheck_rx = ^[ ]*:recheck:[ ]*
-am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
-am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
- recheck = 1; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- { \
- if ((getline line2 < ($$0 ".log")) < 0) \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
- { \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
- { \
- break; \
- } \
- }; \
- if (recheck) \
- print $$0; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
- print "fatal: making $@: " msg | "cat >&2"; \
- exit 1; \
-} \
-function rst_section(header) \
-{ \
- print header; \
- len = length(header); \
- for (i = 1; i <= len; i = i + 1) \
- printf "="; \
- printf "\n\n"; \
-} \
-{ \
- copy_in_global_log = 1; \
- global_test_result = "RUN"; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".trs"); \
- if (line ~ /$(am__global_test_result_rx)/) \
- { \
- sub("$(am__global_test_result_rx)", "", line); \
- sub("[ ]*$$", "", line); \
- global_test_result = line; \
- } \
- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
- copy_in_global_log = 0; \
- }; \
- if (copy_in_global_log) \
- { \
- rst_section(global_test_result ": " $$0); \
- while ((rc = (getline line < ($$0 ".log"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".log"); \
- print line; \
- }; \
- printf "\n"; \
- }; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test. Creates the
-# directory for the log if needed. Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-case "$@" in \
- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
- *) am__odir=.;; \
-esac; \
-test "x$$am__odir" = x"." || test -d "$$am__odir" \
- || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
- am__expect_failure=yes;; \
- *) \
- am__expect_failure=no;; \
-esac; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed). The result is saved in the shell variable
-# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
- $(TEST_LOG_FLAGS)
-am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
- $(top_srcdir)/build-aux/depcomp \
- $(top_srcdir)/build-aux/test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BROWSER = @BROWSER@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-ECONF_CFLAGS = @ECONF_CFLAGS@
-ECONF_LIBS = @ECONF_LIBS@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FO2PDF = @FO2PDF@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
-LIBCRYPT = @LIBCRYPT@
-LIBDB = @LIBDB@
-LIBDL = @LIBDL@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBPRELUDE_CFLAGS = @LIBPRELUDE_CFLAGS@
-LIBPRELUDE_CONFIG = @LIBPRELUDE_CONFIG@
-LIBPRELUDE_CONFIG_PREFIX = @LIBPRELUDE_CONFIG_PREFIX@
-LIBPRELUDE_LDFLAGS = @LIBPRELUDE_LDFLAGS@
-LIBPRELUDE_LIBS = @LIBPRELUDE_LIBS@
-LIBPRELUDE_PREFIX = @LIBPRELUDE_PREFIX@
-LIBPRELUDE_PTHREAD_CFLAGS = @LIBPRELUDE_PTHREAD_CFLAGS@
-LIBS = @LIBS@
-LIBSELINUX = @LIBSELINUX@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NIS_CFLAGS = @NIS_CFLAGS@
-NIS_LIBS = @NIS_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NSL_CFLAGS = @NSL_CFLAGS@
-NSL_LIBS = @NSL_LIBS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-SCONFIGDIR = @SCONFIGDIR@
-SECUREDIR = @SECUREDIR@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
-STRIP = @STRIP@
-TIRPC_CFLAGS = @TIRPC_CFLAGS@
-TIRPC_LIBS = @TIRPC_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMLCATALOG = @XMLCATALOG@
-XMLLINT = @XMLLINT@
-XML_CATALOG_FILE = @XML_CATALOG_FILE@
-XSLTPROC = @XSLTPROC@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
-pam_xauth_path = @pam_xauth_path@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-EXTRA_DIST = $(XMLS)
-@HAVE_DOC_TRUE@dist_man_MANS = pam_cracklib.8
-XMLS = README.xml pam_cracklib.8.xml
-dist_check_SCRIPTS = tst-pam_cracklib
-TESTS = $(dist_check_SCRIPTS)
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-
-AM_LDFLAGS = -no-undefined -avoid-version -module $(am__append_1)
-pam_cracklib_la_LIBADD = $(top_builddir)/libpam/libpam.la \
- @LIBCRACK@ @LIBCRYPT@
-
-securelib_LTLIBRARIES = pam_cracklib.la
-@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/pam_cracklib/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu modules/pam_cracklib/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-securelibLTLIBRARIES: $(securelib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(securelibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(securelibdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(securelibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(securelibdir)"; \
- }
-
-uninstall-securelibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(securelibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(securelibdir)/$$f"; \
- done
-
-clean-securelibLTLIBRARIES:
- -test -z "$(securelib_LTLIBRARIES)" || rm -f $(securelib_LTLIBRARIES)
- @list='$(securelib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-pam_cracklib.la: $(pam_cracklib_la_OBJECTS) $(pam_cracklib_la_DEPENDENCIES) $(EXTRA_pam_cracklib_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) -rpath $(securelibdir) $(pam_cracklib_la_OBJECTS) $(pam_cracklib_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_cracklib.Plo@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-man8: $(dist_man_MANS)
- @$(NORMAL_INSTALL)
- @list1=''; \
- list2='$(dist_man_MANS)'; \
- test -n "$(man8dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.8[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list=''; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.8[a-z]*$$/p'; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
- rm -f $< $@
- $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
- @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__set_TESTS_bases); \
- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
- redo_bases=`for i in $$bases; do \
- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
- done`; \
- if test -n "$$redo_bases"; then \
- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
- if $(am__make_dryrun); then :; else \
- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- fi; \
- fi; \
- if test -n "$$am__remaking_logs"; then \
- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
- "recursion detected" >&2; \
- elif test -n "$$redo_logs"; then \
- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
- fi; \
- if $(am__make_dryrun); then :; else \
- st=0; \
- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
- for i in $$redo_bases; do \
- test -f $$i.trs && test -r $$i.trs \
- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
- test -f $$i.log && test -r $$i.log \
- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
- done; \
- test $$st -eq 0 || exit 1; \
- fi
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for b in $$bases; do echo $$b; done \
- | $(am__create_global_log); \
- } >$(TEST_SUITE_LOG).tmp || exit 1; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS: $(dist_check_SCRIPTS)
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- exit $$?;
-recheck: all $(dist_check_SCRIPTS)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- bases=`for i in $$bases; do echo $$i; done \
- | $(am__list_recheck_tests)` || exit 1; \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- log_list=`echo $$log_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
- am__force_recheck=am--force-recheck \
- TEST_LOGS="$$log_list"; \
- exit $$?
-tst-pam_cracklib.log: tst-pam_cracklib
- @p='tst-pam_cracklib'; \
- b='tst-pam_cracklib'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@ @p='$<'; \
-@am__EXEEXT_TRUE@ $(am__set_b); \
-@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(MANS) $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-securelibLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -f ./$(DEPDIR)/pam_cracklib.Plo
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man install-securelibLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/pam_cracklib.Plo
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man uninstall-securelibLTLIBRARIES
-
-uninstall-man: uninstall-man8
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
- check-am clean clean-generic clean-libtool \
- clean-securelibLTLIBRARIES cscopelist-am ctags ctags-am \
- distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am \
- install-securelibLTLIBRARIES install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- recheck tags tags-am uninstall uninstall-am uninstall-man \
- uninstall-man8 uninstall-securelibLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-@ENABLE_REGENERATE_MAN_TRUE@-include $(top_srcdir)/Make.xml.rules
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/modules/pam_cracklib/README b/modules/pam_cracklib/README
deleted file mode 100644
index d0745160..00000000
--- a/modules/pam_cracklib/README
+++ /dev/null
@@ -1,254 +0,0 @@
-pam_cracklib — PAM module to check the password against dictionary words
-
-â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
-
-DESCRIPTION
-
-This module can be plugged into the password stack of a given application to
-provide some plug-in strength-checking for passwords.
-
-The action of this module is to prompt the user for a password and check its
-strength against a system dictionary and a set of rules for identifying poor
-choices.
-
-The first action is to prompt for a single password, check its strength and
-then, if it is considered strong, prompt for the password a second time (to
-verify that it was typed correctly on the first occasion). All being well, the
-password is passed on to subsequent modules to be installed as the new
-authentication token.
-
-The strength checks works in the following manner: at first the Cracklib
-routine is called to check if the password is part of a dictionary; if this is
-not the case an additional set of strength checks is done. These checks are:
-
-Palindrome
-
- Is the new password a palindrome?
-
-Case Change Only
-
- Is the new password the old one with only a change of case?
-
-Similar
-
- Is the new password too much like the old one? This is primarily controlled
- by one argument, difok which is a number of character changes (inserts,
- removals, or replacements) between the old and new password that are enough
- to accept the new password. This defaults to 5 changes.
-
-Simple
-
- Is the new password too small? This is controlled by 6 arguments minlen,
- maxclassrepeat, dcredit, ucredit, lcredit, and ocredit. See the section on
- the arguments for the details of how these work and there defaults.
-
-Rotated
-
- Is the new password a rotated version of the old password?
-
-Same consecutive characters
-
- Optional check for same consecutive characters.
-
-Too long monotonic character sequence
-
- Optional check for too long monotonic character sequence.
-
-Contains user name
-
- Optional check whether the password contains the user's name in some form.
-
-This module with no arguments will work well for standard unix password
-encryption. With md5 encryption, passwords can be longer than 8 characters and
-the default settings for this module can make it hard for the user to choose a
-satisfactory new password. Notably, the requirement that the new password
-contain no more than 1/2 of the characters in the old password becomes a
-non-trivial constraint. For example, an old password of the form "the quick
-brown fox jumped over the lazy dogs" would be difficult to change... In
-addition, the default action is to allow passwords as small as 5 characters in
-length. For a md5 systems it can be a good idea to increase the required
-minimum size of a password. One can then allow more credit for different kinds
-of characters but accept that the new password may share most of these
-characters with the old password.
-
-OPTIONS
-
-debug
-
- This option makes the module write information to syslog(3) indicating the
- behavior of the module (this option does not write password information to
- the log file).
-
-authtok_type=XXX
-
- The default action is for the module to use the following prompts when
- requesting passwords: "New UNIX password: " and "Retype UNIX password: ".
- The example word UNIX can be replaced with this option, by default it is
- empty.
-
-retry=N
-
- Prompt user at most N times before returning with error. The default is 1.
-
-difok=N
-
- This argument will change the default of 5 for the number of character
- changes in the new password that differentiate it from the old password.
-
-minlen=N
-
- The minimum acceptable size for the new password (plus one if credits are
- not disabled which is the default). In addition to the number of characters
- in the new password, credit (of +1 in length) is given for each different
- kind of character (other, upper, lower and digit). The default for this
- parameter is 9 which is good for a old style UNIX password all of the same
- type of character but may be too low to exploit the added security of a md5
- system. Note that there is a pair of length limits in Cracklib itself, a
- "way too short" limit of 4 which is hard coded in and a defined limit (6)
- that will be checked without reference to minlen. If you want to allow
- passwords as short as 5 characters you should not use this module.
-
-dcredit=N
-
- (N >= 0) This is the maximum credit for having digits in the new password.
- If you have less than or N digits, each digit will count +1 towards meeting
- the current minlen value. The default for dcredit is 1 which is the
- recommended value for minlen less than 10.
-
- (N < 0) This is the minimum number of digits that must be met for a new
- password.
-
-ucredit=N
-
- (N >= 0) This is the maximum credit for having upper case letters in the
- new password. If you have less than or N upper case letters each letter
- will count +1 towards meeting the current minlen value. The default for
- ucredit is 1 which is the recommended value for minlen less than 10.
-
- (N < 0) This is the minimum number of upper case letters that must be met
- for a new password.
-
-lcredit=N
-
- (N >= 0) This is the maximum credit for having lower case letters in the
- new password. If you have less than or N lower case letters, each letter
- will count +1 towards meeting the current minlen value. The default for
- lcredit is 1 which is the recommended value for minlen less than 10.
-
- (N < 0) This is the minimum number of lower case letters that must be met
- for a new password.
-
-ocredit=N
-
- (N >= 0) This is the maximum credit for having other characters in the new
- password. If you have less than or N other characters, each character will
- count +1 towards meeting the current minlen value. The default for ocredit
- is 1 which is the recommended value for minlen less than 10.
-
- (N < 0) This is the minimum number of other characters that must be met for
- a new password.
-
-minclass=N
-
- The minimum number of required classes of characters for the new password.
- The default number is zero. The four classes are digits, upper and lower
- letters and other characters. The difference to the credit check is that a
- specific class if of characters is not required. Instead N out of four of
- the classes are required.
-
-maxrepeat=N
-
- Reject passwords which contain more than N same consecutive characters. The
- default is 0 which means that this check is disabled.
-
-maxsequence=N
-
- Reject passwords which contain monotonic character sequences longer than N.
- The default is 0 which means that this check is disabled. Examples of such
- sequence are '12345' or 'fedcb'. Note that most such passwords will not
- pass the simplicity check unless the sequence is only a minor part of the
- password.
-
-maxclassrepeat=N
-
- Reject passwords which contain more than N consecutive characters of the
- same class. The default is 0 which means that this check is disabled.
-
-reject_username
-
- Check whether the name of the user in straight or reversed form is
- contained in the new password. If it is found the new password is rejected.
-
-gecoscheck
-
- Check whether the words from the GECOS field (usually full name of the
- user) longer than 3 characters in straight or reversed form are contained
- in the new password. If any such word is found the new password is
- rejected.
-
-enforce_for_root
-
- The module will return error on failed check also if the user changing the
- password is root. This option is off by default which means that just the
- message about the failed check is printed but root can change the password
- anyway. Note that root is not asked for an old password so the checks that
- compare the old and new password are not performed.
-
-use_authtok
-
- This argument is used to force the module to not prompt the user for a new
- password but use the one provided by the previously stacked password
- module.
-
-dictpath=/path/to/dict
-
- Path to the cracklib dictionaries.
-
-EXAMPLES
-
-For an example of the use of this module, we show how it may be stacked with
-the password component of pam_unix(8)
-
-#
-# These lines stack two password type modules. In this example the
-# user is given 3 opportunities to enter a strong password. The
-# "use_authtok" argument ensures that the pam_unix module does not
-# prompt for a password, but instead uses the one provided by
-# pam_cracklib.
-#
-passwd password required pam_cracklib.so retry=3
-passwd password required pam_unix.so use_authtok
-
-
-Another example (in the /etc/pam.d/passwd format) is for the case that you want
-to use md5 password encryption:
-
-#%PAM-1.0
-#
-# These lines allow a md5 systems to support passwords of at least 14
-# bytes with extra credit of 2 for digits and 2 for others the new
-# password must have at least three bytes that are not present in the
-# old password
-#
-password required pam_cracklib.so \
- difok=3 minlen=15 dcredit= 2 ocredit=2
-password required pam_unix.so use_authtok nullok md5
-
-
-And here is another example in case you don't want to use credits:
-
-#%PAM-1.0
-#
-# These lines require the user to select a password with a minimum
-# length of 8 and with at least 1 digit number, 1 upper case letter,
-# and 1 other character
-#
-password required pam_cracklib.so \
- dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
-password required pam_unix.so use_authtok nullok md5
-
-
-AUTHOR
-
-pam_cracklib was written by Cristian Gafton <gafton@redhat.com>
-
diff --git a/modules/pam_cracklib/README.xml b/modules/pam_cracklib/README.xml
deleted file mode 100644
index c4a7b54c..00000000
--- a/modules/pam_cracklib/README.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.docbook.org/xml/4.3/docbookx.dtd"
-[
-<!--
-<!ENTITY pamaccess SYSTEM "pam_cracklib.8.xml">
--->
-]>
-
-<article>
-
- <articleinfo>
-
- <title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_cracklib-name"]/*)'/>
- </title>
-
- </articleinfo>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-description"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-options"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-examples"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_cracklib.8.xml" xpointer='xpointer(//refsect1[@id = "pam_cracklib-author"]/*)'/>
- </section>
-
-</article>
diff --git a/modules/pam_cracklib/pam_cracklib.8 b/modules/pam_cracklib/pam_cracklib.8
deleted file mode 100644
index b7a60536..00000000
--- a/modules/pam_cracklib/pam_cracklib.8
+++ /dev/null
@@ -1,363 +0,0 @@
-'\" t
-.\" Title: pam_cracklib
-.\" Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
-.\" Manual: Linux-PAM Manual
-.\" Source: Linux-PAM Manual
-.\" Language: English
-.\"
-.TH "PAM_CRACKLIB" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-pam_cracklib \- PAM module to check the password against dictionary words
-.SH "SYNOPSIS"
-.HP \w'\fBpam_cracklib\&.so\fR\ 'u
-\fBpam_cracklib\&.so\fR [\fI\&.\&.\&.\fR]
-.SH "DESCRIPTION"
-.PP
-This module can be plugged into the
-\fIpassword\fR
-stack of a given application to provide some plug\-in strength\-checking for passwords\&.
-.PP
-The action of this module is to prompt the user for a password and check its strength against a system dictionary and a set of rules for identifying poor choices\&.
-.PP
-The first action is to prompt for a single password, check its strength and then, if it is considered strong, prompt for the password a second time (to verify that it was typed correctly on the first occasion)\&. All being well, the password is passed on to subsequent modules to be installed as the new authentication token\&.
-.PP
-The strength checks works in the following manner: at first the
-\fBCracklib\fR
-routine is called to check if the password is part of a dictionary; if this is not the case an additional set of strength checks is done\&. These checks are:
-.PP
-Palindrome
-.RS 4
-Is the new password a palindrome?
-.RE
-.PP
-Case Change Only
-.RS 4
-Is the new password the old one with only a change of case?
-.RE
-.PP
-Similar
-.RS 4
-Is the new password too much like the old one? This is primarily controlled by one argument,
-\fBdifok\fR
-which is a number of character changes (inserts, removals, or replacements) between the old and new password that are enough to accept the new password\&. This defaults to 5 changes\&.
-.RE
-.PP
-Simple
-.RS 4
-Is the new password too small? This is controlled by 6 arguments
-\fBminlen\fR,
-\fBmaxclassrepeat\fR,
-\fBdcredit\fR,
-\fBucredit\fR,
-\fBlcredit\fR, and
-\fBocredit\fR\&. See the section on the arguments for the details of how these work and there defaults\&.
-.RE
-.PP
-Rotated
-.RS 4
-Is the new password a rotated version of the old password?
-.RE
-.PP
-Same consecutive characters
-.RS 4
-Optional check for same consecutive characters\&.
-.RE
-.PP
-Too long monotonic character sequence
-.RS 4
-Optional check for too long monotonic character sequence\&.
-.RE
-.PP
-Contains user name
-.RS 4
-Optional check whether the password contains the user\*(Aqs name in some form\&.
-.RE
-.PP
-This module with no arguments will work well for standard unix password encryption\&. With md5 encryption, passwords can be longer than 8 characters and the default settings for this module can make it hard for the user to choose a satisfactory new password\&. Notably, the requirement that the new password contain no more than 1/2 of the characters in the old password becomes a non\-trivial constraint\&. For example, an old password of the form "the quick brown fox jumped over the lazy dogs" would be difficult to change\&.\&.\&. In addition, the default action is to allow passwords as small as 5 characters in length\&. For a md5 systems it can be a good idea to increase the required minimum size of a password\&. One can then allow more credit for different kinds of characters but accept that the new password may share most of these characters with the old password\&.
-.SH "OPTIONS"
-.PP
-.PP
-\fBdebug\fR
-.RS 4
-This option makes the module write information to
-\fBsyslog\fR(3)
-indicating the behavior of the module (this option does not write password information to the log file)\&.
-.RE
-.PP
-\fBauthtok_type=\fR\fB\fIXXX\fR\fR
-.RS 4
-The default action is for the module to use the following prompts when requesting passwords: "New UNIX password: " and "Retype UNIX password: "\&. The example word
-\fIUNIX\fR
-can be replaced with this option, by default it is empty\&.
-.RE
-.PP
-\fBretry=\fR\fB\fIN\fR\fR
-.RS 4
-Prompt user at most
-\fIN\fR
-times before returning with error\&. The default is
-\fI1\fR\&.
-.RE
-.PP
-\fBdifok=\fR\fB\fIN\fR\fR
-.RS 4
-This argument will change the default of
-\fI5\fR
-for the number of character changes in the new password that differentiate it from the old password\&.
-.RE
-.PP
-\fBminlen=\fR\fB\fIN\fR\fR
-.RS 4
-The minimum acceptable size for the new password (plus one if credits are not disabled which is the default)\&. In addition to the number of characters in the new password, credit (of +1 in length) is given for each different kind of character (\fIother\fR,
-\fIupper\fR,
-\fIlower\fR
-and
-\fIdigit\fR)\&. The default for this parameter is
-\fI9\fR
-which is good for a old style UNIX password all of the same type of character but may be too low to exploit the added security of a md5 system\&. Note that there is a pair of length limits in
-\fICracklib\fR
-itself, a "way too short" limit of 4 which is hard coded in and a defined limit (6) that will be checked without reference to
-\fBminlen\fR\&. If you want to allow passwords as short as 5 characters you should not use this module\&.
-.RE
-.PP
-\fBdcredit=\fR\fB\fIN\fR\fR
-.RS 4
-(N >= 0) This is the maximum credit for having digits in the new password\&. If you have less than or
-\fIN\fR
-digits, each digit will count +1 towards meeting the current
-\fBminlen\fR
-value\&. The default for
-\fBdcredit\fR
-is 1 which is the recommended value for
-\fBminlen\fR
-less than 10\&.
-.sp
-(N < 0) This is the minimum number of digits that must be met for a new password\&.
-.RE
-.PP
-\fBucredit=\fR\fB\fIN\fR\fR
-.RS 4
-(N >= 0) This is the maximum credit for having upper case letters in the new password\&. If you have less than or
-\fIN\fR
-upper case letters each letter will count +1 towards meeting the current
-\fBminlen\fR
-value\&. The default for
-\fBucredit\fR
-is
-\fI1\fR
-which is the recommended value for
-\fBminlen\fR
-less than 10\&.
-.sp
-(N < 0) This is the minimum number of upper case letters that must be met for a new password\&.
-.RE
-.PP
-\fBlcredit=\fR\fB\fIN\fR\fR
-.RS 4
-(N >= 0) This is the maximum credit for having lower case letters in the new password\&. If you have less than or
-\fIN\fR
-lower case letters, each letter will count +1 towards meeting the current
-\fBminlen\fR
-value\&. The default for
-\fBlcredit\fR
-is 1 which is the recommended value for
-\fBminlen\fR
-less than 10\&.
-.sp
-(N < 0) This is the minimum number of lower case letters that must be met for a new password\&.
-.RE
-.PP
-\fBocredit=\fR\fB\fIN\fR\fR
-.RS 4
-(N >= 0) This is the maximum credit for having other characters in the new password\&. If you have less than or
-\fIN\fR
-other characters, each character will count +1 towards meeting the current
-\fBminlen\fR
-value\&. The default for
-\fBocredit\fR
-is 1 which is the recommended value for
-\fBminlen\fR
-less than 10\&.
-.sp
-(N < 0) This is the minimum number of other characters that must be met for a new password\&.
-.RE
-.PP
-\fBminclass=\fR\fB\fIN\fR\fR
-.RS 4
-The minimum number of required classes of characters for the new password\&. The default number is zero\&. The four classes are digits, upper and lower letters and other characters\&. The difference to the
-\fBcredit\fR
-check is that a specific class if of characters is not required\&. Instead
-\fIN\fR
-out of four of the classes are required\&.
-.RE
-.PP
-\fBmaxrepeat=\fR\fB\fIN\fR\fR
-.RS 4
-Reject passwords which contain more than N same consecutive characters\&. The default is 0 which means that this check is disabled\&.
-.RE
-.PP
-\fBmaxsequence=\fR\fB\fIN\fR\fR
-.RS 4
-Reject passwords which contain monotonic character sequences longer than N\&. The default is 0 which means that this check is disabled\&. Examples of such sequence are \*(Aq12345\*(Aq or \*(Aqfedcb\*(Aq\&. Note that most such passwords will not pass the simplicity check unless the sequence is only a minor part of the password\&.
-.RE
-.PP
-\fBmaxclassrepeat=\fR\fB\fIN\fR\fR
-.RS 4
-Reject passwords which contain more than N consecutive characters of the same class\&. The default is 0 which means that this check is disabled\&.
-.RE
-.PP
-\fBreject_username\fR
-.RS 4
-Check whether the name of the user in straight or reversed form is contained in the new password\&. If it is found the new password is rejected\&.
-.RE
-.PP
-\fBgecoscheck\fR
-.RS 4
-Check whether the words from the GECOS field (usually full name of the user) longer than 3 characters in straight or reversed form are contained in the new password\&. If any such word is found the new password is rejected\&.
-.RE
-.PP
-\fBenforce_for_root\fR
-.RS 4
-The module will return error on failed check also if the user changing the password is root\&. This option is off by default which means that just the message about the failed check is printed but root can change the password anyway\&. Note that root is not asked for an old password so the checks that compare the old and new password are not performed\&.
-.RE
-.PP
-\fBuse_authtok\fR
-.RS 4
-This argument is used to
-\fIforce\fR
-the module to not prompt the user for a new password but use the one provided by the previously stacked
-\fIpassword\fR
-module\&.
-.RE
-.PP
-\fBdictpath=\fR\fB\fI/path/to/dict\fR\fR
-.RS 4
-Path to the cracklib dictionaries\&.
-.RE
-.SH "MODULE TYPES PROVIDED"
-.PP
-Only the
-\fBpassword\fR
-module type is provided\&.
-.SH "RETURN VALUES"
-.PP
-.PP
-PAM_SUCCESS
-.RS 4
-The new password passes all checks\&.
-.RE
-.PP
-PAM_AUTHTOK_ERR
-.RS 4
-No new password was entered, the username could not be determined or the new password fails the strength checks\&.
-.RE
-.PP
-PAM_AUTHTOK_RECOVERY_ERR
-.RS 4
-The old password was not supplied by a previous stacked module or got not requested from the user\&. The first error can happen if
-\fBuse_authtok\fR
-is specified\&.
-.RE
-.PP
-PAM_SERVICE_ERR
-.RS 4
-A internal error occurred\&.
-.RE
-.SH "EXAMPLES"
-.PP
-For an example of the use of this module, we show how it may be stacked with the password component of
-\fBpam_unix\fR(8)
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-#
-# These lines stack two password type modules\&. In this example the
-# user is given 3 opportunities to enter a strong password\&. The
-# "use_authtok" argument ensures that the pam_unix module does not
-# prompt for a password, but instead uses the one provided by
-# pam_cracklib\&.
-#
-passwd password required pam_cracklib\&.so retry=3
-passwd password required pam_unix\&.so use_authtok
-
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-Another example (in the
-/etc/pam\&.d/passwd
-format) is for the case that you want to use md5 password encryption:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-#%PAM\-1\&.0
-#
-# These lines allow a md5 systems to support passwords of at least 14
-# bytes with extra credit of 2 for digits and 2 for others the new
-# password must have at least three bytes that are not present in the
-# old password
-#
-password required pam_cracklib\&.so \e
- difok=3 minlen=15 dcredit= 2 ocredit=2
-password required pam_unix\&.so use_authtok nullok md5
-
-.fi
-.if n \{\
-.RE
-.\}
-.PP
-And here is another example in case you don\*(Aqt want to use credits:
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-#%PAM\-1\&.0
-#
-# These lines require the user to select a password with a minimum
-# length of 8 and with at least 1 digit number, 1 upper case letter,
-# and 1 other character
-#
-password required pam_cracklib\&.so \e
- dcredit=\-1 ucredit=\-1 ocredit=\-1 lcredit=0 minlen=8
-password required pam_unix\&.so use_authtok nullok md5
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
-.SH "SEE ALSO"
-.PP
-\fBpam.conf\fR(5),
-\fBpam.d\fR(5),
-\fBpam\fR(8)
-.SH "AUTHOR"
-.PP
-pam_cracklib was written by Cristian Gafton <gafton@redhat\&.com>
diff --git a/modules/pam_cracklib/pam_cracklib.8.xml b/modules/pam_cracklib/pam_cracklib.8.xml
deleted file mode 100644
index 75e44e2d..00000000
--- a/modules/pam_cracklib/pam_cracklib.8.xml
+++ /dev/null
@@ -1,592 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="pam_cracklib">
-
- <refmeta>
- <refentrytitle>pam_cracklib</refentrytitle>
- <manvolnum>8</manvolnum>
- <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
- </refmeta>
-
- <refnamediv id="pam_cracklib-name">
- <refname>pam_cracklib</refname>
- <refpurpose>PAM module to check the password against dictionary words</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <cmdsynopsis id="pam_cracklib-cmdsynopsis">
- <command>pam_cracklib.so</command>
- <arg choice="opt">
- <replaceable>...</replaceable>
- </arg>
- </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1 id="pam_cracklib-description">
-
- <title>DESCRIPTION</title>
-
- <para>
- This module can be plugged into the <emphasis>password</emphasis> stack of
- a given application to provide some plug-in strength-checking for passwords.
- </para>
-
- <para>
- The action of this module is to prompt the user for a password and
- check its strength against a system dictionary and a set of rules for
- identifying poor choices.
- </para>
-
- <para>
- The first action is to prompt for a single password, check its
- strength and then, if it is considered strong, prompt for the password
- a second time (to verify that it was typed correctly on the first
- occasion). All being well, the password is passed on to subsequent
- modules to be installed as the new authentication token.
- </para>
-
- <para>
- The strength checks works in the following manner: at first the
- <function>Cracklib</function> routine is called to check if the password
- is part of a dictionary; if this is not the case an additional set of
- strength checks is done. These checks are:
- </para>
-
- <variablelist>
- <varlistentry>
- <term>Palindrome</term>
- <listitem>
- <para>
- Is the new password a palindrome?
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Case Change Only</term>
- <listitem>
- <para>
- Is the new password the old one with only a change of case?
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Similar</term>
- <listitem>
- <para>
- Is the new password too much like the old one?
- This is primarily controlled by one argument,
- <option>difok</option> which is a number of character changes
- (inserts, removals, or replacements) between the old and new
- password that are enough to accept the new password.
- This defaults to 5 changes.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Simple</term>
- <listitem>
- <para>
- Is the new password too small?
- This is controlled by 6 arguments <option>minlen</option>,
- <option>maxclassrepeat</option>,
- <option>dcredit</option>, <option>ucredit</option>,
- <option>lcredit</option>, and <option>ocredit</option>. See the section
- on the arguments for the details of how these work and there defaults.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Rotated</term>
- <listitem>
- <para>
- Is the new password a rotated version of the old password?
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Same consecutive characters</term>
- <listitem>
- <para>
- Optional check for same consecutive characters.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Too long monotonic character sequence</term>
- <listitem>
- <para>
- Optional check for too long monotonic character sequence.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Contains user name</term>
- <listitem>
- <para>
- Optional check whether the password contains the user's name
- in some form.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>
- This module with no arguments will work well for standard unix
- password encryption. With md5 encryption, passwords can be longer
- than 8 characters and the default settings for this module can make it
- hard for the user to choose a satisfactory new password. Notably, the
- requirement that the new password contain no more than 1/2 of the
- characters in the old password becomes a non-trivial constraint. For
- example, an old password of the form "the quick brown fox jumped over
- the lazy dogs" would be difficult to change... In addition, the
- default action is to allow passwords as small as 5 characters in
- length. For a md5 systems it can be a good idea to increase the
- required minimum size of a password. One can then allow more credit
- for different kinds of characters but accept that the new password may
- share most of these characters with the old password.
- </para>
-
- </refsect1>
-
- <refsect1 id="pam_cracklib-options">
-
- <title>OPTIONS</title>
- <para>
- <variablelist>
-
- <varlistentry>
- <term>
- <option>debug</option>
- </term>
- <listitem>
- <para>
- This option makes the module write information to
- <citerefentry>
- <refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry>
- indicating the behavior of the module (this option does
- not write password information to the log file).
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>authtok_type=<replaceable>XXX</replaceable></option>
- </term>
- <listitem>
- <para>
- The default action is for the module to use the
- following prompts when requesting passwords:
- "New UNIX password: " and "Retype UNIX password: ".
- The example word <emphasis>UNIX</emphasis> can
- be replaced with this option, by default it is empty.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>retry=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- Prompt user at most <replaceable>N</replaceable> times
- before returning with error. The default is
- <emphasis>1</emphasis>.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>difok=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- This argument will change the default of
- <emphasis>5</emphasis> for the number of character
- changes in the new password that differentiate it
- from the old password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>minlen=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- The minimum acceptable size for the new password (plus
- one if credits are not disabled which is the default).
- In addition to the number of characters in the new password,
- credit (of +1 in length) is given for each different kind
- of character (<emphasis>other</emphasis>,
- <emphasis>upper</emphasis>, <emphasis>lower</emphasis> and
- <emphasis>digit</emphasis>). The default for this parameter
- is <emphasis>9</emphasis> which is good for a old style UNIX
- password all of the same type of character but may be too low
- to exploit the added security of a md5 system. Note that
- there is a pair of length limits in
- <emphasis>Cracklib</emphasis> itself, a "way too short" limit
- of 4 which is hard coded in and a defined limit (6) that will
- be checked without reference to <option>minlen</option>.
- If you want to allow passwords as short as 5 characters you
- should not use this module.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>dcredit=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- (N &gt;= 0) This is the maximum credit for having digits in
- the new password. If you have less than or
- <replaceable>N</replaceable>
- digits, each digit will count +1 towards meeting the current
- <option>minlen</option> value. The default for
- <option>dcredit</option> is 1 which is the recommended
- value for <option>minlen</option> less than 10.
- </para>
- <para>
- (N &lt; 0) This is the minimum number of digits that must
- be met for a new password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>ucredit=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- (N &gt;= 0) This is the maximum credit for having upper
- case letters in the new password. If you have less than
- or <replaceable>N</replaceable> upper case letters each
- letter will count +1 towards meeting the current
- <option>minlen</option> value. The default for
- <option>ucredit</option> is <emphasis>1</emphasis> which
- is the recommended value for <option>minlen</option> less
- than 10.
- </para>
- <para>
- (N &lt; 0) This is the minimum number of upper
- case letters that must be met for a new password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>lcredit=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- (N &gt;= 0) This is the maximum credit for having
- lower case letters in the new password. If you have
- less than or <replaceable>N</replaceable> lower case
- letters, each letter will count +1 towards meeting the
- current <option>minlen</option> value. The default for
- <option>lcredit</option> is 1 which is the recommended
- value for <option>minlen</option> less than 10.
- </para>
- <para>
- (N &lt; 0) This is the minimum number of lower
- case letters that must be met for a new password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>ocredit=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- (N &gt;= 0) This is the maximum credit for having other
- characters in the new password. If you have less than or
- <replaceable>N</replaceable> other characters, each
- character will count +1 towards meeting the current
- <option>minlen</option> value. The default for
- <option>ocredit</option> is 1 which is the recommended
- value for <option>minlen</option> less than 10.
- </para>
- <para>
- (N &lt; 0) This is the minimum number of other
- characters that must be met for a new password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>minclass=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- The minimum number of required classes of characters for
- the new password. The default number is zero. The four
- classes are digits, upper and lower letters and other
- characters.
- The difference to the <option>credit</option> check is
- that a specific class if of characters is not required.
- Instead <replaceable>N</replaceable> out of four of the
- classes are required.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>maxrepeat=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- Reject passwords which contain more than N same consecutive
- characters. The default is 0 which means that this check
- is disabled.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>maxsequence=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- Reject passwords which contain monotonic character sequences
- longer than N. The default is 0 which means that this check
- is disabled. Examples of such sequence are '12345' or 'fedcb'.
- Note that most such passwords will not pass the simplicity
- check unless the sequence is only a minor part of the password.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>maxclassrepeat=<replaceable>N</replaceable></option>
- </term>
- <listitem>
- <para>
- Reject passwords which contain more than N consecutive
- characters of the same class. The default is 0 which means
- that this check is disabled.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>reject_username</option>
- </term>
- <listitem>
- <para>
- Check whether the name of the user in straight or reversed
- form is contained in the new password. If it is found the
- new password is rejected.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>gecoscheck</option>
- </term>
- <listitem>
- <para>
- Check whether the words from the GECOS field (usually full name
- of the user) longer than 3 characters in straight or reversed
- form are contained in the new password. If any such word is
- found the new password is rejected.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>enforce_for_root</option>
- </term>
- <listitem>
- <para>
- The module will return error on failed check also if the user
- changing the password is root. This option is off by default
- which means that just the message about the failed check is
- printed but root can change the password anyway.
- Note that root is not asked for an old password so the checks
- that compare the old and new password are not performed.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>use_authtok</option>
- </term>
- <listitem>
- <para>
- This argument is used to <emphasis>force</emphasis> the
- module to not prompt the user for a new password but use
- the one provided by the previously stacked
- <emphasis>password</emphasis> module.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- <option>dictpath=<replaceable>/path/to/dict</replaceable></option>
- </term>
- <listitem>
- <para>
- Path to the cracklib dictionaries.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </para>
- </refsect1>
-
- <refsect1 id="pam_cracklib-types">
- <title>MODULE TYPES PROVIDED</title>
- <para>
- Only the <option>password</option> module type is provided.
- </para>
- </refsect1>
-
- <refsect1 id='pam_cracklib-return_values'>
- <title>RETURN VALUES</title>
- <para>
- <variablelist>
-
- <varlistentry>
- <term>PAM_SUCCESS</term>
- <listitem>
- <para>
- The new password passes all checks.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>PAM_AUTHTOK_ERR</term>
- <listitem>
- <para>
- No new password was entered,
- the username could not be determined or the new
- password fails the strength checks.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>PAM_AUTHTOK_RECOVERY_ERR</term>
- <listitem>
- <para>
- The old password was not supplied by a previous stacked
- module or got not requested from the user.
- The first error can happen if <option>use_authtok</option>
- is specified.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>PAM_SERVICE_ERR</term>
- <listitem>
- <para>
- A internal error occurred.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </para>
- </refsect1>
-
- <refsect1 id='pam_cracklib-examples'>
- <title>EXAMPLES</title>
- <para>
- For an example of the use of this module, we show how it may be
- stacked with the password component of
- <citerefentry>
- <refentrytitle>pam_unix</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>
- <programlisting>
-#
-# These lines stack two password type modules. In this example the
-# user is given 3 opportunities to enter a strong password. The
-# "use_authtok" argument ensures that the pam_unix module does not
-# prompt for a password, but instead uses the one provided by
-# pam_cracklib.
-#
-passwd password required pam_cracklib.so retry=3
-passwd password required pam_unix.so use_authtok
- </programlisting>
- </para>
-
- <para>
- Another example (in the <filename>/etc/pam.d/passwd</filename> format)
- is for the case that you want to use md5 password encryption:
- <programlisting>
-#%PAM-1.0
-#
-# These lines allow a md5 systems to support passwords of at least 14
-# bytes with extra credit of 2 for digits and 2 for others the new
-# password must have at least three bytes that are not present in the
-# old password
-#
-password required pam_cracklib.so \
- difok=3 minlen=15 dcredit= 2 ocredit=2
-password required pam_unix.so use_authtok nullok md5
- </programlisting>
- </para>
-
- <para>
- And here is another example in case you don't want to use credits:
- <programlisting>
-#%PAM-1.0
-#
-# These lines require the user to select a password with a minimum
-# length of 8 and with at least 1 digit number, 1 upper case letter,
-# and 1 other character
-#
-password required pam_cracklib.so \
- dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
-password required pam_unix.so use_authtok nullok md5
- </programlisting>
- </para>
-
- </refsect1>
-
- <refsect1 id='pam_cracklib-see_also'>
- <title>SEE ALSO</title>
- <para>
- <citerefentry>
- <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-
- <refsect1 id='pam_cracklib-author'>
- <title>AUTHOR</title>
- <para>
- pam_cracklib was written by Cristian Gafton &lt;gafton@redhat.com&gt;
- </para>
- </refsect1>
-
-</refentry>
diff --git a/modules/pam_cracklib/pam_cracklib.c b/modules/pam_cracklib/pam_cracklib.c
deleted file mode 100644
index 01291305..00000000
--- a/modules/pam_cracklib/pam_cracklib.c
+++ /dev/null
@@ -1,899 +0,0 @@
-/*
- * pam_cracklib module
- *
- * 0.9. switch to using a distance algorithm in similar()
- * 0.86. added support for setting minimum numbers of digits, uppers,
- * lowers, and others
- * 0.85. added six new options to use this with long passwords.
- * 0.8. tidied output and improved D(()) usage for debugging.
- * 0.7. added support for more obscure checks for new passwd.
- * 0.6. root can reset user passwd to any values (it's only warned)
- * 0.5. supports retries - 'retry=N' argument
- * 0.4. added argument 'type=XXX' for 'New XXX password' prompt
- * 0.3. Added argument 'debug'
- * 0.2. new password is fed to cracklib for verify after typed once
- * 0.1. First release
- *
- * Written by Cristian Gafton <gafton@redhat.com> 1996/09/10
- * Long password support by Philip W. Dalrymple <pwd@mdtsoft.com> 1997/07/18
- * See the end of the file for Copyright Information
- *
- * Modification for long password systems (>8 chars). The original
- * module had problems when used in a md5 password system in that it
- * allowed too short passwords but required that at least half of the
- * bytes in the new password did not appear in the old one. this
- * action is still the default and the changes should not break any
- * current user. This modification adds 6 new options, one to set the
- * number of bytes in the new password that are not in the old one,
- * the other five to control the length checking, these are all
- * documented (or will be before anyone else sees this code) in the PAM
- * S.A.G. in the section on the cracklib module.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#ifdef HAVE_LIBXCRYPT
-# include <xcrypt.h>
-#elif defined(HAVE_CRYPT_H)
-# include <crypt.h>
-#endif
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <limits.h>
-#include <pwd.h>
-#include <security/pam_modutil.h>
-
-#ifdef HAVE_CRACK_H
-#include <crack.h>
-#else
-extern char *FascistCheck(char *pw, const char *dictpath);
-#endif
-
-#ifndef CRACKLIB_DICTS
-#define CRACKLIB_DICTS NULL
-#endif
-
-#ifdef MIN
-#undef MIN
-#endif
-#define MIN(_a, _b) (((_a) < (_b)) ? (_a) : (_b))
-
-#include <security/pam_modules.h>
-#include <security/_pam_macros.h>
-#include <security/pam_ext.h>
-#include "pam_inline.h"
-
-/* argument parsing */
-#define PAM_DEBUG_ARG 0x0001
-
-struct cracklib_options {
- int retry_times;
- int diff_ok;
- int min_length;
- int dig_credit;
- int up_credit;
- int low_credit;
- int oth_credit;
- int min_class;
- int max_repeat;
- int max_sequence;
- int max_class_repeat;
- int reject_user;
- int gecos_check;
- int enforce_for_root;
- const char *cracklib_dictpath;
-};
-
-#define CO_RETRY_TIMES 1
-#define CO_DIFF_OK 5
-#define CO_MIN_LENGTH 9
-# define CO_MIN_LENGTH_BASE 5
-#define CO_DIG_CREDIT 1
-#define CO_UP_CREDIT 1
-#define CO_LOW_CREDIT 1
-#define CO_OTH_CREDIT 1
-#define CO_MIN_WORD_LENGTH 4
-
-static int
-_pam_parse (pam_handle_t *pamh, struct cracklib_options *opt,
- int argc, const char **argv)
-{
- int ctrl=0;
-
- /* step through arguments */
- for (ctrl=0; argc-- > 0; ++argv) {
- const char *str;
- char *ep = NULL;
-
- /* generic options */
-
- if (!strcmp(*argv,"debug"))
- ctrl |= PAM_DEBUG_ARG;
- else if ((str = pam_str_skip_prefix(*argv, "type=")) != NULL)
- pam_set_item (pamh, PAM_AUTHTOK_TYPE, str);
- else if ((str = pam_str_skip_prefix(*argv, "retry=")) != NULL) {
- opt->retry_times = strtol(str, &ep, 10);
- if (!ep || (opt->retry_times < 1))
- opt->retry_times = CO_RETRY_TIMES;
- } else if ((str = pam_str_skip_prefix(*argv, "difok=")) != NULL) {
- opt->diff_ok = strtol(str, &ep, 10);
- if (!ep || (opt->diff_ok < 0))
- opt->diff_ok = CO_DIFF_OK;
- } else if (pam_str_skip_prefix(*argv, "difignore=") != NULL) {
- /* just ignore */
- } else if ((str = pam_str_skip_prefix(*argv, "minlen=")) != NULL) {
- opt->min_length = strtol(str, &ep, 10);
- if (!ep || (opt->min_length < CO_MIN_LENGTH_BASE))
- opt->min_length = CO_MIN_LENGTH_BASE;
- } else if ((str = pam_str_skip_prefix(*argv, "dcredit=")) != NULL) {
- opt->dig_credit = strtol(str, &ep, 10);
- if (!ep)
- opt->dig_credit = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "ucredit=")) != NULL) {
- opt->up_credit = strtol(str, &ep, 10);
- if (!ep)
- opt->up_credit = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "lcredit=")) != NULL) {
- opt->low_credit = strtol(str, &ep, 10);
- if (!ep)
- opt->low_credit = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "ocredit=")) != NULL) {
- opt->oth_credit = strtol(str, &ep, 10);
- if (!ep)
- opt->oth_credit = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "minclass=")) != NULL) {
- opt->min_class = strtol(str, &ep, 10);
- if (!ep)
- opt->min_class = 0;
- if (opt->min_class > 4)
- opt->min_class = 4;
- } else if ((str = pam_str_skip_prefix(*argv, "maxrepeat=")) != NULL) {
- opt->max_repeat = strtol(str, &ep, 10);
- if (!ep)
- opt->max_repeat = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "maxsequence=")) != NULL) {
- opt->max_sequence = strtol(str, &ep, 10);
- if (!ep)
- opt->max_sequence = 0;
- } else if ((str = pam_str_skip_prefix(*argv, "maxclassrepeat=")) != NULL) {
- opt->max_class_repeat = strtol(str, &ep, 10);
- if (!ep)
- opt->max_class_repeat = 0;
- } else if (!strcmp(*argv, "reject_username")) {
- opt->reject_user = 1;
- } else if (!strcmp(*argv, "gecoscheck")) {
- opt->gecos_check = 1;
- } else if (!strcmp(*argv, "enforce_for_root")) {
- opt->enforce_for_root = 1;
- } else if (pam_str_skip_prefix(*argv, "authtok_type=") != NULL) {
- /* for pam_get_authtok, ignore */;
- } else if (!strcmp(*argv, "use_authtok")) {
- /* for pam_get_authtok, ignore */;
- } else if (!strcmp(*argv, "use_first_pass")) {
- /* for pam_get_authtok, ignore */;
- } else if (!strcmp(*argv, "try_first_pass")) {
- /* for pam_get_authtok, ignore */;
- } else if ((str = pam_str_skip_prefix(*argv, "dictpath=")) != NULL) {
- opt->cracklib_dictpath = str;
- if (!*(opt->cracklib_dictpath)) {
- opt->cracklib_dictpath = CRACKLIB_DICTS;
- }
- } else {
- pam_syslog(pamh,LOG_ERR,"pam_parse: unknown option; %s",*argv);
- }
- }
-
- return ctrl;
-}
-
-/* Helper functions */
-
-/*
- * can't be a palindrome - like `R A D A R' or `M A D A M'
- */
-static int palindrome(const char *new)
-{
- int i, j;
-
- i = strlen (new);
-
- for (j = 0;j < i;j++)
- if (new[i - j - 1] != new[j])
- return 0;
-
- return 1;
-}
-
-/*
- * Calculate how different two strings are in terms of the number of
- * character removals, additions, and changes needed to go from one to
- * the other
- */
-
-static int distdifferent(const char *old, const char *new,
- size_t i, size_t j)
-{
- char c, d;
-
- if ((i == 0) || (strlen(old) < i)) {
- c = 0;
- } else {
- c = old[i - 1];
- }
- if ((j == 0) || (strlen(new) < j)) {
- d = 0;
- } else {
- d = new[j - 1];
- }
- return (c != d);
-}
-
-static int distcalculate(int **distances, const char *old, const char *new,
- size_t i, size_t j)
-{
- int tmp = 0;
-
- if (distances[i][j] != -1) {
- return distances[i][j];
- }
-
- tmp = distcalculate(distances, old, new, i - 1, j - 1);
- tmp = MIN(tmp, distcalculate(distances, old, new, i, j - 1));
- tmp = MIN(tmp, distcalculate(distances, old, new, i - 1, j));
- tmp += distdifferent(old, new, i, j);
-
- distances[i][j] = tmp;
-
- return tmp;
-}
-
-static int distance(const char *old, const char *new)
-{
- int **distances = NULL;
- size_t m, n, i, j, r;
-
- m = strlen(old);
- n = strlen(new);
- distances = malloc(sizeof(int*) * (m + 1));
-
- for (i = 0; i <= m; i++) {
- distances[i] = malloc(sizeof(int) * (n + 1));
- for(j = 0; j <= n; j++) {
- distances[i][j] = -1;
- }
- }
- for (i = 0; i <= m; i++) {
- distances[i][0] = i;
- }
- for (j = 0; j <= n; j++) {
- distances[0][j] = j;
- }
- distances[0][0] = 0;
-
- r = distcalculate(distances, old, new, m, n);
-
- for (i = 0; i <= m; i++) {
- memset(distances[i], 0, sizeof(int) * (n + 1));
- free(distances[i]);
- }
- free(distances);
-
- return r;
-}
-
-static int similar(struct cracklib_options *opt,
- const char *old, const char *new)
-{
- if (distance(old, new) >= opt->diff_ok) {
- return 0;
- }
-
- if (strlen(new) >= (strlen(old) * 2)) {
- return 0;
- }
-
- /* passwords are too similar */
- return 1;
-}
-
-/*
- * enough classes of characters
- */
-
-static int minclass (struct cracklib_options *opt,
- const char *new)
-{
- int digits = 0;
- int uppers = 0;
- int lowers = 0;
- int others = 0;
- int total_class;
- int i;
- int retval;
-
- D(( "called" ));
- for (i = 0; new[i]; i++)
- {
- if (isdigit (new[i]))
- digits = 1;
- else if (isupper (new[i]))
- uppers = 1;
- else if (islower (new[i]))
- lowers = 1;
- else
- others = 1;
- }
-
- total_class = digits + uppers + lowers + others;
-
- D (("total class: %d\tmin_class: %d", total_class, opt->min_class));
-
- if (total_class >= opt->min_class)
- retval = 0;
- else
- retval = 1;
-
- return retval;
-}
-
-
-/*
- * a nice mix of characters.
- */
-static int simple(struct cracklib_options *opt, const char *new)
-{
- int digits = 0;
- int uppers = 0;
- int lowers = 0;
- int others = 0;
- int size;
- int i;
- enum { NONE, DIGIT, UCASE, LCASE, OTHER } prevclass = NONE;
- int sameclass = 0;
-
- for (i = 0;new[i];i++) {
- if (isdigit (new[i])) {
- digits++;
- if (prevclass != DIGIT) {
- prevclass = DIGIT;
- sameclass = 1;
- } else
- sameclass++;
- }
- else if (isupper (new[i])) {
- uppers++;
- if (prevclass != UCASE) {
- prevclass = UCASE;
- sameclass = 1;
- } else
- sameclass++;
- }
- else if (islower (new[i])) {
- lowers++;
- if (prevclass != LCASE) {
- prevclass = LCASE;
- sameclass = 1;
- } else
- sameclass++;
- }
- else {
- others++;
- if (prevclass != OTHER) {
- prevclass = OTHER;
- sameclass = 1;
- } else
- sameclass++;
- }
- if (opt->max_class_repeat > 0 && sameclass > opt->max_class_repeat) {
- return 1;
- }
- }
-
- /*
- * The scam was this - a password of only one character type
- * must be 8 letters long. Two types, 7, and so on.
- * This is now changed, the base size and the credits or defaults
- * see the docs on the module for info on these parameters, the
- * defaults cause the effect to be the same as before the change
- */
-
- if ((opt->dig_credit >= 0) && (digits > opt->dig_credit))
- digits = opt->dig_credit;
-
- if ((opt->up_credit >= 0) && (uppers > opt->up_credit))
- uppers = opt->up_credit;
-
- if ((opt->low_credit >= 0) && (lowers > opt->low_credit))
- lowers = opt->low_credit;
-
- if ((opt->oth_credit >= 0) && (others > opt->oth_credit))
- others = opt->oth_credit;
-
- size = opt->min_length;
-
- if (opt->dig_credit >= 0)
- size -= digits;
- else if (digits < opt->dig_credit * -1)
- return 1;
-
- if (opt->up_credit >= 0)
- size -= uppers;
- else if (uppers < opt->up_credit * -1)
- return 1;
-
- if (opt->low_credit >= 0)
- size -= lowers;
- else if (lowers < opt->low_credit * -1)
- return 1;
-
- if (opt->oth_credit >= 0)
- size -= others;
- else if (others < opt->oth_credit * -1)
- return 1;
-
- if (size <= i)
- return 0;
-
- return 1;
-}
-
-static int consecutive(struct cracklib_options *opt, const char *new)
-{
- char c;
- int i;
- int same;
-
- if (opt->max_repeat == 0)
- return 0;
-
- for (i = 0; new[i]; i++) {
- if (i > 0 && new[i] == c) {
- ++same;
- if (same > opt->max_repeat)
- return 1;
- } else {
- c = new[i];
- same = 1;
- }
- }
- return 0;
-}
-
-static int sequence(struct cracklib_options *opt, const char *new)
-{
- char c;
- int i;
- int sequp = 1;
- int seqdown = 1;
-
- if (opt->max_sequence == 0)
- return 0;
-
- if (new[0] == '\0')
- return 0;
-
- for (i = 1; new[i]; i++) {
- c = new[i-1];
- if (new[i] == c+1) {
- ++sequp;
- if (sequp > opt->max_sequence)
- return 1;
- seqdown = 1;
- } else if (new[i] == c-1) {
- ++seqdown;
- if (seqdown > opt->max_sequence)
- return 1;
- sequp = 1;
- } else {
- sequp = 1;
- seqdown = 1;
- }
- }
- return 0;
-}
-
-static int wordcheck(const char *new, char *word)
-{
- char *f, *b;
-
- if (strstr(new, word) != NULL)
- return 1;
-
- /* now reverse the word, we can do that in place
- as it is strdup-ed */
- f = word;
- b = word+strlen(word)-1;
- while (f < b) {
- char c;
-
- c = *f;
- *f = *b;
- *b = c;
- --b;
- ++f;
- }
-
- if (strstr(new, word) != NULL)
- return 1;
- return 0;
-}
-
-static int usercheck(struct cracklib_options *opt, const char *new,
- char *user)
-{
- if (!opt->reject_user)
- return 0;
-
- return wordcheck(new, user);
-}
-
-static char * str_lower(char *string)
-{
- char *cp;
-
- if (!string)
- return NULL;
-
- for (cp = string; *cp; cp++)
- *cp = tolower(*cp);
- return string;
-}
-
-static int gecoscheck(pam_handle_t *pamh, struct cracklib_options *opt, const char *new,
- const char *user)
-{
- struct passwd *pwd;
- char *list;
- char *p;
- char *next;
-
- if (!opt->gecos_check)
- return 0;
-
- if ((pwd = pam_modutil_getpwnam(pamh, user)) == NULL) {
- return 0;
- }
-
- list = strdup(pwd->pw_gecos);
-
- if (list == NULL || *list == '\0') {
- free(list);
- return 0;
- }
-
- for (p = list;;p = next + 1) {
- next = strchr(p, ' ');
- if (next)
- *next = '\0';
-
- if (strlen(p) >= CO_MIN_WORD_LENGTH) {
- str_lower(p);
- if (wordcheck(new, p)) {
- free(list);
- return 1;
- }
- }
-
- if (!next)
- break;
- }
-
- free(list);
- return 0;
-}
-
-static const char *password_check(pam_handle_t *pamh, struct cracklib_options *opt,
- const char *old, const char *new,
- const char *user)
-{
- const char *msg = NULL;
- char *oldmono = NULL, *newmono, *wrapped = NULL;
- char *usermono = NULL;
-
- if (old && strcmp(new, old) == 0) {
- msg = _("is the same as the old one");
- return msg;
- }
-
- newmono = str_lower(strdup(new));
- if (!newmono)
- msg = _("memory allocation error");
-
- usermono = str_lower(strdup(user));
- if (!usermono)
- msg = _("memory allocation error");
-
- if (!msg && old) {
- oldmono = str_lower(strdup(old));
- if (oldmono)
- wrapped = malloc(strlen(oldmono) * 2 + 1);
- if (wrapped) {
- strcpy (wrapped, oldmono);
- strcat (wrapped, oldmono);
- } else {
- msg = _("memory allocation error");
- }
- }
-
- if (!msg && palindrome(newmono))
- msg = _("is a palindrome");
-
- if (!msg && oldmono && strcmp(oldmono, newmono) == 0)
- msg = _("case changes only");
-
- if (!msg && oldmono && similar(opt, oldmono, newmono))
- msg = _("is too similar to the old one");
-
- if (!msg && simple(opt, new))
- msg = _("is too simple");
-
- if (!msg && wrapped && strstr(wrapped, newmono))
- msg = _("is rotated");
-
- if (!msg && minclass (opt, new))
- msg = _("not enough character classes");
-
- if (!msg && consecutive(opt, new))
- msg = _("contains too many same characters consecutively");
-
- if (!msg && sequence(opt, new))
- msg = _("contains too long of a monotonic character sequence");
-
- if (!msg && (usercheck(opt, newmono, usermono) || gecoscheck(pamh, opt, newmono, user)))
- msg = _("contains the user name in some form");
-
- free(usermono);
- if (newmono) {
- memset(newmono, 0, strlen(newmono));
- free(newmono);
- }
- if (oldmono) {
- memset(oldmono, 0, strlen(oldmono));
- free(oldmono);
- }
- if (wrapped) {
- memset(wrapped, 0, strlen(wrapped));
- free(wrapped);
- }
-
- return msg;
-}
-
-
-static int _pam_unix_approve_pass(pam_handle_t *pamh,
- unsigned int ctrl,
- struct cracklib_options *opt,
- const char *pass_old,
- const char *pass_new)
-{
- const char *msg = NULL;
- const char *user;
- int retval;
-
- if (pass_new == NULL || (pass_old && !strcmp(pass_old,pass_new))) {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh, LOG_DEBUG, "bad authentication token");
- pam_error(pamh, "%s", pass_new == NULL ?
- _("No password has been supplied.") :
- _("The password has not been changed."));
- return PAM_AUTHTOK_ERR;
- }
-
- retval = pam_get_user(pamh, &user, NULL);
- if (retval != PAM_SUCCESS) {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh, LOG_NOTICE, "cannot determine user name: %s",
- pam_strerror(pamh, retval));
- return PAM_AUTHTOK_ERR;
- }
- /*
- * if one wanted to hardwire authentication token strength
- * checking this would be the place
- */
- msg = password_check(pamh, opt, pass_old, pass_new, user);
-
- if (msg) {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh, LOG_NOTICE,
- "new passwd fails strength check: %s", msg);
- pam_error(pamh, _("BAD PASSWORD: %s"), msg);
- return PAM_AUTHTOK_ERR;
- };
- return PAM_SUCCESS;
-
-}
-
-/* The Main Thing (by Cristian Gafton, CEO at this module :-)
- * (stolen from http://home.netscape.com)
- */
-int
-pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv)
-{
- unsigned int ctrl;
- struct cracklib_options options;
-
- D(("called."));
-
- memset(&options, 0, sizeof(options));
- options.retry_times = CO_RETRY_TIMES;
- options.diff_ok = CO_DIFF_OK;
- options.min_length = CO_MIN_LENGTH;
- options.dig_credit = CO_DIG_CREDIT;
- options.up_credit = CO_UP_CREDIT;
- options.low_credit = CO_LOW_CREDIT;
- options.oth_credit = CO_OTH_CREDIT;
- options.cracklib_dictpath = CRACKLIB_DICTS;
-
- ctrl = _pam_parse(pamh, &options, argc, argv);
-
- if (flags & PAM_PRELIM_CHECK) {
- /* Check for passwd dictionary */
- /* We cannot do that, since the original path is compiled
- into the cracklib library and we don't know it. */
- return PAM_SUCCESS;
- } else if (flags & PAM_UPDATE_AUTHTOK) {
- int retval;
- const void *oldtoken;
- int tries;
-
- D(("do update"));
-
-
- retval = pam_get_item (pamh, PAM_OLDAUTHTOK, &oldtoken);
- if (retval != PAM_SUCCESS) {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh,LOG_ERR,"Can not get old passwd");
- oldtoken = NULL;
- }
-
- tries = 0;
- while (tries < options.retry_times) {
- const char *crack_msg;
- const char *newtoken = NULL;
-
-
- tries++;
-
- /* Planned modus operandi:
- * Get a passwd.
- * Verify it against cracklib.
- * If okay get it a second time.
- * Check to be the same with the first one.
- * set PAM_AUTHTOK and return
- */
-
- retval = pam_get_authtok_noverify (pamh, &newtoken, NULL);
- if (retval != PAM_SUCCESS) {
- pam_syslog(pamh, LOG_ERR, "pam_get_authtok_noverify returned error: %s",
- pam_strerror (pamh, retval));
- continue;
- } else if (newtoken == NULL) { /* user aborted password change, quit */
- return PAM_AUTHTOK_ERR;
- }
-
- D(("testing password"));
- /* now test this passwd against cracklib */
-
- D(("against cracklib"));
- if ((crack_msg = FascistCheck (newtoken, options.cracklib_dictpath))) {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh,LOG_DEBUG,"bad password: %s",crack_msg);
- pam_error (pamh, _("BAD PASSWORD: %s"), crack_msg);
- if (getuid() || options.enforce_for_root || (flags & PAM_CHANGE_EXPIRED_AUTHTOK))
- {
- pam_set_item (pamh, PAM_AUTHTOK, NULL);
- retval = PAM_AUTHTOK_ERR;
- continue;
- }
- }
-
- /* check it for strength too... */
- D(("for strength"));
- retval = _pam_unix_approve_pass (pamh, ctrl, &options,
- oldtoken, newtoken);
- if (retval != PAM_SUCCESS) {
- if (getuid() || options.enforce_for_root || (flags & PAM_CHANGE_EXPIRED_AUTHTOK))
- {
- pam_set_item(pamh, PAM_AUTHTOK, NULL);
- retval = PAM_AUTHTOK_ERR;
- continue;
- }
- }
-
- retval = pam_get_authtok_verify (pamh, &newtoken, NULL);
- if (retval != PAM_SUCCESS) {
- pam_syslog(pamh, LOG_ERR, "pam_get_authtok_verify returned error: %s",
- pam_strerror (pamh, retval));
- pam_set_item(pamh, PAM_AUTHTOK, NULL);
- continue;
- } else if (newtoken == NULL) { /* user aborted password change, quit */
- return PAM_AUTHTOK_ERR;
- }
-
- return PAM_SUCCESS;
- }
-
- D(("returning because maxtries reached"));
-
- pam_set_item (pamh, PAM_AUTHTOK, NULL);
-
- /* if we have only one try, we can use the real reason,
- else say that there were too many tries. */
- if (options.retry_times > 1)
- return PAM_MAXTRIES;
- else
- return retval;
-
- } else {
- if (ctrl & PAM_DEBUG_ARG)
- pam_syslog(pamh, LOG_NOTICE, "UNKNOWN flags setting %02X",flags);
- return PAM_SERVICE_ERR;
- }
-
- /* Not reached */
- return PAM_SERVICE_ERR;
-}
-
-
-
-/*
- * Copyright (c) Cristian Gafton <gafton@redhat.com>, 1996.
- * All rights reserved
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, and the entire permission notice in its entirety,
- * including the disclaimer of warranties.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * ALTERNATIVELY, this product may be distributed under the terms of
- * the GNU Public License, in which case the provisions of the GPL are
- * required INSTEAD OF the above restrictions. (This clause is
- * necessary due to a potential bad interaction between the GPL and
- * the restrictions contained in a BSD-style copyright.)
- *
- * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The following copyright was appended for the long password support
- * added with the libpam 0.58 release:
- *
- * Modificaton Copyright (c) Philip W. Dalrymple III <pwd@mdtsoft.com>
- * 1997. All rights reserved
- *
- * THE MODIFICATION THAT PROVIDES SUPPORT FOR LONG PASSWORD TYPE CHECKING TO
- * THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
diff --git a/modules/pam_cracklib/tst-pam_cracklib b/modules/pam_cracklib/tst-pam_cracklib
deleted file mode 100755
index 46a7060d..00000000
--- a/modules/pam_cracklib/tst-pam_cracklib
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-../../tests/tst-dlopen .libs/pam_cracklib.so
diff --git a/modules/pam_debug/Makefile.in b/modules/pam_debug/Makefile.in
index abc2a9d2..ba2cc799 100644
--- a/modules/pam_debug/Makefile.in
+++ b/modules/pam_debug/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_debug-retval$(EXEEXT)
subdir = modules/pam_debug
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_debug/pam_debug.8 b/modules/pam_debug/pam_debug.8
index 552da6b3..b3e68e21 100644
--- a/modules/pam_debug/pam_debug.8
+++ b/modules/pam_debug/pam_debug.8
@@ -2,12 +2,12 @@
.\" Title: pam_debug
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_DEBUG" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_DEBUG" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_deny/Makefile.in b/modules/pam_deny/Makefile.in
index 7622e003..612ee697 100644
--- a/modules/pam_deny/Makefile.in
+++ b/modules/pam_deny/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_deny-retval$(EXEEXT)
subdir = modules/pam_deny
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_deny/pam_deny.8 b/modules/pam_deny/pam_deny.8
index e4c4ec56..7f474330 100644
--- a/modules/pam_deny/pam_deny.8
+++ b/modules/pam_deny/pam_deny.8
@@ -2,12 +2,12 @@
.\" Title: pam_deny
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_DENY" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_DENY" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_echo/Makefile.in b/modules/pam_echo/Makefile.in
index 67e226d4..7b591fa3 100644
--- a/modules/pam_echo/Makefile.in
+++ b/modules/pam_echo/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_echo-retval$(EXEEXT)
subdir = modules/pam_echo
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_echo/pam_echo.8 b/modules/pam_echo/pam_echo.8
index 625eb848..ba46e061 100644
--- a/modules/pam_echo/pam_echo.8
+++ b/modules/pam_echo/pam_echo.8
@@ -2,12 +2,12 @@
.\" Title: pam_echo
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ECHO" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_ECHO" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_env/Makefile.in b/modules/pam_env/Makefile.in
index b422c591..255458f5 100644
--- a/modules/pam_env/Makefile.in
+++ b/modules/pam_env/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_env
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -1004,7 +1008,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_env/README b/modules/pam_env/README
index 1542f6d7..a040caf7 100644
--- a/modules/pam_env/README
+++ b/modules/pam_env/README
@@ -57,7 +57,12 @@ user_envfile=filename
user_readenv=0|1
Turns on or off the reading of the user specific environment file. 0 is
- off, 1 is on. By default this option is off.
+ off, 1 is on. By default this option is off as user supplied environment
+ variables in the PAM environment could affect behavior of subsequent
+ modules in the stack without the consent of the system administrator.
+
+ Due to problematic security this functionality is deprecated since the
+ 1.5.0 version and will be removed completely at some point in the future.
EXAMPLES
@@ -83,7 +88,7 @@ Now some simple variables
NNTPSERVER DEFAULT=localhost
PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
- XDG_DATA_HOME @{HOME}/share/
+ XDG_DATA_HOME DEFAULT=@{HOME}/share/
Silly examples of escaped variables, just to show how they work.
diff --git a/modules/pam_env/pam_env.8 b/modules/pam_env/pam_env.8
index f674024c..8b0d5199 100644
--- a/modules/pam_env/pam_env.8
+++ b/modules/pam_env/pam_env.8
@@ -2,12 +2,12 @@
.\" Title: pam_env
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ENV" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_ENV" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -101,7 +101,9 @@ file to override the default\&.The syntax is the same as for
.PP
\fBuser_readenv=\fR\fB\fI0|1\fR\fR
.RS 4
-Turns on or off the reading of the user specific environment file\&. 0 is off, 1 is on\&. By default this option is off\&.
+Turns on or off the reading of the user specific environment file\&. 0 is off, 1 is on\&. By default this option is off as user supplied environment variables in the PAM environment could affect behavior of subsequent modules in the stack without the consent of the system administrator\&.
+.sp
+Due to problematic security this functionality is deprecated since the 1\&.5\&.0 version and will be removed completely at some point in the future\&.
.RE
.SH "MODULE TYPES PROVIDED"
.PP
diff --git a/modules/pam_env/pam_env.8.xml b/modules/pam_env/pam_env.8.xml
index b765e527..75ff862b 100644
--- a/modules/pam_env/pam_env.8.xml
+++ b/modules/pam_env/pam_env.8.xml
@@ -158,7 +158,15 @@
<listitem>
<para>
Turns on or off the reading of the user specific environment
- file. 0 is off, 1 is on. By default this option is off.
+ file. 0 is off, 1 is on. By default this option is off as user
+ supplied environment variables in the PAM environment could affect
+ behavior of subsequent modules in the stack without the consent
+ of the system administrator.
+ </para>
+ <para>
+ Due to problematic security this functionality is deprecated
+ since the 1.5.0 version and will be removed completely at some
+ point in the future.
</para>
</listitem>
</varlistentry>
diff --git a/modules/pam_env/pam_env.c b/modules/pam_env/pam_env.c
index 79d43722..f5f8cead 100644
--- a/modules/pam_env/pam_env.c
+++ b/modules/pam_env/pam_env.c
@@ -120,6 +120,9 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv,
pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
}
+ if (*user_readenv)
+ pam_syslog(pamh, LOG_DEBUG, "deprecated reading of user environment enabled");
+
return ctrl;
}
@@ -311,7 +314,7 @@ static int _assemble_line(FILE *f, char *buffer, int buf_len)
D(("_assemble_line: corrupted or binary file"));
return -1;
}
- if (p[strlen(p)-1] != '\n') {
+ if (p[strlen(p)-1] != '\n' && !feof(f)) {
D(("_assemble_line: line too long"));
return -1;
}
diff --git a/modules/pam_env/pam_env.conf.5 b/modules/pam_env/pam_env.conf.5
index 3a7155b0..40fd118b 100644
--- a/modules/pam_env/pam_env.conf.5
+++ b/modules/pam_env/pam_env.conf.5
@@ -2,12 +2,12 @@
.\" Title: pam_env.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ENV\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_ENV\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -36,7 +36,7 @@ The
file specifies the environment variables to be set, unset or modified by
\fBpam_env\fR(8)\&. When someone logs in, this file is read and the environment variables are set according\&.
.PP
-Each line starts with the variable name, there are then two possible options for each variable DEFAULT and OVERRIDE\&. DEFAULT allows and administrator to set the value of the variable to some default value, if none is supplied then the empty string is assumed\&. The OVERRIDE option tells pam_env that it should enter in its value (overriding the default value) if there is one to use\&. OVERRIDE is not used, "" is assumed and no override will be done\&.
+Each line starts with the variable name, there are then two possible options for each variable DEFAULT and OVERRIDE\&. DEFAULT allows an administrator to set the value of the variable to some default value, if none is supplied then the empty string is assumed\&. The OVERRIDE option tells pam_env that it should enter in its value (overriding the default value) if there is one to use\&. OVERRIDE is not used, "" is assumed and no override will be done\&.
.PP
\fIVARIABLE\fR
[\fIDEFAULT=[value]\fR] [\fIOVERRIDE=[value]\fR]
@@ -99,7 +99,7 @@ Now some simple variables
NNTPSERVER DEFAULT=localhost
PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\e
:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
- XDG_DATA_HOME @{HOME}/share/
+ XDG_DATA_HOME DEFAULT=@{HOME}/share/
.fi
.if n \{\
diff --git a/modules/pam_env/pam_env.conf.5.xml b/modules/pam_env/pam_env.conf.5.xml
index c47f17d9..fca046fe 100644
--- a/modules/pam_env/pam_env.conf.5.xml
+++ b/modules/pam_env/pam_env.conf.5.xml
@@ -29,7 +29,7 @@
</para>
<para>
Each line starts with the variable name, there are then two possible
- options for each variable DEFAULT and OVERRIDE. DEFAULT allows and
+ options for each variable DEFAULT and OVERRIDE. DEFAULT allows an
administrator to set the value of the variable to some default
value, if none is supplied then the empty string is assumed. The
OVERRIDE option tells pam_env that it should enter in its value
@@ -103,7 +103,7 @@
NNTPSERVER DEFAULT=localhost
PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
- XDG_DATA_HOME @{HOME}/share/
+ XDG_DATA_HOME DEFAULT=@{HOME}/share/
</programlisting>
<para>
diff --git a/modules/pam_exec/Makefile.in b/modules/pam_exec/Makefile.in
index 84bc31ab..a312387a 100644
--- a/modules/pam_exec/Makefile.in
+++ b/modules/pam_exec/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_exec
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_exec/README b/modules/pam_exec/README
index 57147c80..39591625 100644
--- a/modules/pam_exec/README
+++ b/modules/pam_exec/README
@@ -47,6 +47,11 @@ quiet
Per default pam_exec.so will echo the exit status of the external command
if it fails. Specifying this option will suppress the message.
+quiet_log
+
+ Per default pam_exec.so will log the exit status of the external command if
+ it fails. Specifying this option will suppress the log message.
+
seteuid
Per default pam_exec.so will execute the external command with the real
diff --git a/modules/pam_exec/pam_exec.8 b/modules/pam_exec/pam_exec.8
index 8e9093e0..71087918 100644
--- a/modules/pam_exec/pam_exec.8
+++ b/modules/pam_exec/pam_exec.8
@@ -2,12 +2,12 @@
.\" Title: pam_exec
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_EXEC" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_EXEC" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
pam_exec \- PAM module which calls an external command
.SH "SYNOPSIS"
.HP \w'\fBpam_exec\&.so\fR\ 'u
-\fBpam_exec\&.so\fR [debug] [expose_authtok] [seteuid] [quiet] [stdout] [log=\fIfile\fR] [type=\fItype\fR] \fIcommand\fR [\fI\&.\&.\&.\fR]
+\fBpam_exec\&.so\fR [debug] [expose_authtok] [seteuid] [quiet] [quiet_log] [stdout] [log=\fIfile\fR] [type=\fItype\fR] \fIcommand\fR [\fI\&.\&.\&.\fR]
.SH "DESCRIPTION"
.PP
pam_exec is a PAM module that can be used to run an external command\&.
@@ -94,6 +94,11 @@ option is ignored\&.
Per default pam_exec\&.so will echo the exit status of the external command if it fails\&. Specifying this option will suppress the message\&.
.RE
.PP
+\fBquiet_log\fR
+.RS 4
+Per default pam_exec\&.so will log the exit status of the external command if it fails\&. Specifying this option will suppress the log message\&.
+.RE
+.PP
\fBseteuid\fR
.RS 4
Per default pam_exec\&.so will execute the external command with the real user ID of the calling process\&. Specifying this option means the command is run with the effective user ID\&.
diff --git a/modules/pam_exec/pam_exec.8.xml b/modules/pam_exec/pam_exec.8.xml
index 1f217339..7e89943c 100644
--- a/modules/pam_exec/pam_exec.8.xml
+++ b/modules/pam_exec/pam_exec.8.xml
@@ -31,6 +31,9 @@
quiet
</arg>
<arg choice="opt">
+ quiet_log
+ </arg>
+ <arg choice="opt">
stdout
</arg>
<arg choice="opt">
@@ -161,6 +164,19 @@
<varlistentry>
<term>
+ <option>quiet_log</option>
+ </term>
+ <listitem>
+ <para>
+ Per default pam_exec.so will log the exit status of the
+ external command if it fails.
+ Specifying this option will suppress the log message.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
<option>seteuid</option>
</term>
<listitem>
diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c
index 5ca85ab3..05dec167 100644
--- a/modules/pam_exec/pam_exec.c
+++ b/modules/pam_exec/pam_exec.c
@@ -93,6 +93,7 @@ call_exec (const char *pam_type, pam_handle_t *pamh,
int debug = 0;
int call_setuid = 0;
int quiet = 0;
+ int quiet_log = 0;
int expose_authtok = 0;
int use_stdout = 0;
int optargc;
@@ -133,6 +134,8 @@ call_exec (const char *pam_type, pam_handle_t *pamh,
call_setuid = 1;
else if (strcasecmp (argv[optargc], "quiet") == 0)
quiet = 1;
+ else if (strcasecmp (argv[optargc], "quiet_log") == 0)
+ quiet_log = 1;
else if (strcasecmp (argv[optargc], "expose_authtok") == 0)
expose_authtok = 1;
else
@@ -269,6 +272,7 @@ call_exec (const char *pam_type, pam_handle_t *pamh,
{
if (WIFEXITED(status))
{
+ if (!quiet_log)
pam_syslog (pamh, LOG_ERR, "%s failed: exit code %d",
argv[optargc], WEXITSTATUS(status));
if (!quiet)
@@ -277,6 +281,7 @@ call_exec (const char *pam_type, pam_handle_t *pamh,
}
else if (WIFSIGNALED(status))
{
+ if (!quiet_log)
pam_syslog (pamh, LOG_ERR, "%s failed: caught signal %d%s",
argv[optargc], WTERMSIG(status),
WCOREDUMP(status) ? " (core dumped)" : "");
@@ -287,6 +292,7 @@ call_exec (const char *pam_type, pam_handle_t *pamh,
}
else
{
+ if (!quiet_log)
pam_syslog (pamh, LOG_ERR, "%s failed: unknown status 0x%x",
argv[optargc], status);
if (!quiet)
diff --git a/modules/pam_faildelay/Makefile.in b/modules/pam_faildelay/Makefile.in
index 6eddb0c0..f06712a5 100644
--- a/modules/pam_faildelay/Makefile.in
+++ b/modules/pam_faildelay/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_faildelay-retval$(EXEEXT)
subdir = modules/pam_faildelay
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -379,6 +382,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -423,6 +427,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -436,6 +443,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -455,7 +464,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -502,8 +510,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -514,6 +520,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -563,7 +570,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -571,9 +577,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -583,6 +586,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -933,7 +937,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_faildelay/pam_faildelay.8 b/modules/pam_faildelay/pam_faildelay.8
index 4cefeed0..5a29b6ea 100644
--- a/modules/pam_faildelay/pam_faildelay.8
+++ b/modules/pam_faildelay/pam_faildelay.8
@@ -2,12 +2,12 @@
.\" Title: pam_faildelay
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_FAILDELAY" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_FAILDELAY" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_faillock/Makefile.am b/modules/pam_faillock/Makefile.am
index b1f2b3e5..44a49660 100644
--- a/modules/pam_faillock/Makefile.am
+++ b/modules/pam_faillock/Makefile.am
@@ -25,7 +25,7 @@ noinst_HEADERS = faillock.h
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
$(WARN_CFLAGS)
-faillock_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@
+faillock_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
pam_faillock_la_LDFLAGS = -no-undefined -avoid-version -module
pam_faillock_la_LIBADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
@@ -33,7 +33,7 @@ if HAVE_VERSIONING
pam_faillock_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
endif
-faillock_LDFLAGS = @PIE_LDFLAGS@
+faillock_LDFLAGS = @EXE_LDFLAGS@
faillock_LDADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
dist_secureconf_DATA = faillock.conf
diff --git a/modules/pam_faillock/Makefile.in b/modules/pam_faillock/Makefile.in
index b2a80262..9070f173 100644
--- a/modules/pam_faillock/Makefile.in
+++ b/modules/pam_faillock/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -101,18 +101,21 @@ host_triplet = @host@
sbin_PROGRAMS = faillock$(EXEEXT)
subdir = modules/pam_faillock
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -400,6 +403,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -444,6 +448,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -457,6 +464,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -476,7 +485,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -523,8 +531,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -535,6 +541,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -584,7 +591,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -592,9 +598,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -604,6 +607,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -621,11 +625,11 @@ noinst_HEADERS = faillock.h
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
$(WARN_CFLAGS)
-faillock_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@
+faillock_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
pam_faillock_la_LDFLAGS = -no-undefined -avoid-version -module \
$(am__append_1)
pam_faillock_la_LIBADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
-faillock_LDFLAGS = @PIE_LDFLAGS@
+faillock_LDFLAGS = @EXE_LDFLAGS@
faillock_LDADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
dist_secureconf_DATA = faillock.conf
securelib_LTLIBRARIES = pam_faillock.la
@@ -1095,7 +1099,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_faillock/README b/modules/pam_faillock/README
index c88705ad..3b63c6bb 100644
--- a/modules/pam_faillock/README
+++ b/modules/pam_faillock/README
@@ -66,7 +66,7 @@ screensaver.
Note that using the module in preauth without the silent option specified in /
etc/security/faillock.conf or with requisite control field leaks an information
-about existence or non-existence of an user account in the system because the
+about existence or non-existence of a user account in the system because the
failures are not recorded for the unknown users. The message about the user
account being locked is never displayed for non-existing user accounts allowing
the adversary to infer that a particular account is not existing on a system.
diff --git a/modules/pam_faillock/faillock.8 b/modules/pam_faillock/faillock.8
index 3ba58aa0..55443532 100644
--- a/modules/pam_faillock/faillock.8
+++ b/modules/pam_faillock/faillock.8
@@ -2,12 +2,12 @@
.\" Title: faillock
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "FAILLOCK" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "FAILLOCK" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_faillock/faillock.c b/modules/pam_faillock/faillock.c
index e492f5f9..091f253a 100644
--- a/modules/pam_faillock/faillock.c
+++ b/modules/pam_faillock/faillock.c
@@ -74,9 +74,12 @@ open_tally (const char *dir, const char *user, uid_t uid, int create)
if (create) {
flags |= O_CREAT;
+ if (access(dir, F_OK) != 0) {
+ mkdir(dir, 0755);
+ }
}
- fd = open(path, flags, 0600);
+ fd = open(path, flags, 0660);
free(path);
@@ -88,6 +91,18 @@ open_tally (const char *dir, const char *user, uid_t uid, int create)
if (st.st_uid != uid) {
ignore_return(fchown(fd, uid, -1));
}
+
+ /*
+ * If umask is set to 022, as will probably in most systems, then the
+ * group will not be able to write to the file. So, change the file
+ * permissions just in case.
+ * Note: owners of this file are user:root, so if the permissions are
+ * not changed the root process writing to this file will require
+ * CAP_DAC_OVERRIDE.
+ */
+ if (!(st.st_mode & S_IWGRP)) {
+ ignore_return(fchmod(fd, 0660));
+ }
}
}
diff --git a/modules/pam_faillock/faillock.conf.5 b/modules/pam_faillock/faillock.conf.5
index 7870153d..7b4ddb55 100644
--- a/modules/pam_faillock/faillock.conf.5
+++ b/modules/pam_faillock/faillock.conf.5
@@ -2,12 +2,12 @@
.\" Title: faillock.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "FAILLOCK\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "FAILLOCK\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -76,6 +76,11 @@ Only track failed user authentications attempts for local users in /etc/passwd a
command will also no longer track user failed authentication attempts\&. Enabling this option will prevent a double\-lockout scenario where a user is locked out locally and in the centralized mechanism\&.
.RE
.PP
+\fBnodelay\fR
+.RS 4
+Don\*(Aqt enforce a delay after authentication failures\&.
+.RE
+.PP
\fBdeny=\fR\fB\fIn\fR\fR
.RS 4
Deny access if the number of consecutive authentication failures for this user during the recent interval exceeds
diff --git a/modules/pam_faillock/faillock.conf.5.xml b/modules/pam_faillock/faillock.conf.5.xml
index aa8500b9..04a84107 100644
--- a/modules/pam_faillock/faillock.conf.5.xml
+++ b/modules/pam_faillock/faillock.conf.5.xml
@@ -96,6 +96,16 @@
</varlistentry>
<varlistentry>
<term>
+ <option>nodelay</option>
+ </term>
+ <listitem>
+ <para>
+ Don't enforce a delay after authentication failures.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
<option>deny=<replaceable>n</replaceable></option>
</term>
<listitem>
diff --git a/modules/pam_faillock/main.c b/modules/pam_faillock/main.c
index c5780166..f62e1bb2 100644
--- a/modules/pam_faillock/main.c
+++ b/modules/pam_faillock/main.c
@@ -70,14 +70,13 @@ args_parse(int argc, char **argv, struct options *opts)
opts->progname = argv[0];
for (i = 1; i < argc; ++i) {
-
if (strcmp(argv[i], "--dir") == 0) {
++i;
if (i >= argc || strlen(argv[i]) == 0) {
fprintf(stderr, "%s: No directory supplied.\n", argv[0]);
return -1;
}
- opts->dir = argv[i];
+ opts->dir = argv[i];
}
else if (strcmp(argv[i], "--user") == 0) {
++i;
@@ -85,7 +84,7 @@ args_parse(int argc, char **argv, struct options *opts)
fprintf(stderr, "%s: No user name supplied.\n", argv[0]);
return -1;
}
- opts->user = argv[i];
+ opts->user = argv[i];
}
else if (strcmp(argv[i], "--reset") == 0) {
opts->reset = 1;
@@ -157,7 +156,7 @@ do_user(struct options *opts, const char *user)
unsigned int i;
memset(&tallies, 0, sizeof(tallies));
- if ((rv=read_tally(fd, &tallies)) == -1) {
+ if (read_tally(fd, &tallies) == -1) {
fprintf(stderr, "%s: Error reading the tally file for %s:",
opts->progname, user);
perror(NULL);
diff --git a/modules/pam_faillock/pam_faillock.8 b/modules/pam_faillock/pam_faillock.8
index 593b1fec..cec02ea2 100644
--- a/modules/pam_faillock/pam_faillock.8
+++ b/modules/pam_faillock/pam_faillock.8
@@ -2,12 +2,12 @@
.\" Title: pam_faillock
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_FAILLOCK" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_FAILLOCK" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -145,7 +145,7 @@ option specified in
/etc/security/faillock\&.conf
or with
\fIrequisite\fR
-control field leaks an information about existence or non\-existence of an user account in the system because the failures are not recorded for the unknown users\&. The message about the user account being locked is never displayed for non\-existing user accounts allowing the adversary to infer that a particular account is not existing on a system\&.
+control field leaks an information about existence or non\-existence of a user account in the system because the failures are not recorded for the unknown users\&. The message about the user account being locked is never displayed for non\-existing user accounts allowing the adversary to infer that a particular account is not existing on a system\&.
.SH "EXAMPLES"
.PP
Here are two possible configuration examples for
diff --git a/modules/pam_faillock/pam_faillock.8.xml b/modules/pam_faillock/pam_faillock.8.xml
index f43b4015..58c16442 100644
--- a/modules/pam_faillock/pam_faillock.8.xml
+++ b/modules/pam_faillock/pam_faillock.8.xml
@@ -234,7 +234,7 @@
Note that using the module in <option>preauth</option> without the
<option>silent</option> option specified in <filename>/etc/security/faillock.conf</filename>
or with <emphasis>requisite</emphasis> control field leaks an information about
- existence or non-existence of an user account in the system because
+ existence or non-existence of a user account in the system because
the failures are not recorded for the unknown users. The message
about the user account being locked is never displayed for non-existing
user accounts allowing the adversary to infer that a particular account
diff --git a/modules/pam_faillock/pam_faillock.c b/modules/pam_faillock/pam_faillock.c
index f592d0a2..8328fbae 100644
--- a/modules/pam_faillock/pam_faillock.c
+++ b/modules/pam_faillock/pam_faillock.c
@@ -67,12 +67,11 @@
#define FAILLOCK_FLAG_NO_LOG_INFO 0x8
#define FAILLOCK_FLAG_UNLOCKED 0x10
#define FAILLOCK_FLAG_LOCAL_ONLY 0x20
+#define FAILLOCK_FLAG_NO_DELAY 0x40
#define MAX_TIME_INTERVAL 604800 /* 7 days */
#define FAILLOCK_CONF_MAX_LINELEN 1023
-#define PATH_PASSWD "/etc/passwd"
-
static const char default_faillock_conf[] = FAILLOCK_DEFAULT_CONF;
struct options {
@@ -111,6 +110,7 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
int flags, struct options *opts)
{
int i;
+ int config_arg_index = -1;
int rv;
const char *conf = default_faillock_conf;
@@ -123,10 +123,12 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
opts->root_unlock_time = MAX_TIME_INTERVAL+1;
for (i = 0; i < argc; ++i) {
- const char *str;
+ const char *str = pam_str_skip_prefix(argv[i], "conf=");
- if ((str = pam_str_skip_prefix(argv[i], "conf=")) != NULL)
+ if (str != NULL) {
conf = str;
+ config_arg_index = i;
+ }
}
if ((rv = read_config_file(pamh, opts, conf)) != PAM_SUCCESS) {
@@ -136,7 +138,10 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
}
for (i = 0; i < argc; ++i) {
- if (strcmp(argv[i], "preauth") == 0) {
+ if (i == config_arg_index) {
+ continue;
+ }
+ else if (strcmp(argv[i], "preauth") == 0) {
opts->action = FAILLOCK_ACTION_PREAUTH;
}
else if (strcmp(argv[i], "authfail") == 0) {
@@ -340,6 +345,9 @@ set_conf_opt(pam_handle_t *pamh, struct options *opts, const char *name, const c
else if (strcmp(name, "local_users_only") == 0) {
opts->flags |= FAILLOCK_FLAG_LOCAL_ONLY;
}
+ else if (strcmp(name, "nodelay") == 0) {
+ opts->flags |= FAILLOCK_FLAG_NO_DELAY;
+ }
else {
pam_syslog(pamh, LOG_ERR, "Unknown option: %s", name);
}
@@ -348,42 +356,7 @@ set_conf_opt(pam_handle_t *pamh, struct options *opts, const char *name, const c
static int
check_local_user (pam_handle_t *pamh, const char *user)
{
- struct passwd pw, *pwp;
- char buf[16384];
- int found = 0;
- FILE *fp;
- int errn;
-
- fp = fopen(PATH_PASSWD, "r");
- if (fp == NULL) {
- pam_syslog(pamh, LOG_ERR, "unable to open %s: %m",
- PATH_PASSWD);
- return -1;
- }
-
- for (;;) {
- errn = fgetpwent_r(fp, &pw, buf, sizeof (buf), &pwp);
- if (errn == ERANGE) {
- pam_syslog(pamh, LOG_WARNING, "%s contains very long lines; corrupted?",
- PATH_PASSWD);
- break;
- }
- if (errn != 0)
- break;
- if (strcmp(pwp->pw_name, user) == 0) {
- found = 1;
- break;
- }
- }
-
- fclose (fp);
-
- if (errn != 0 && errn != ENOENT) {
- pam_syslog(pamh, LOG_ERR, "unable to enumerate local accounts: %m");
- return -1;
- } else {
- return found;
- }
+ return pam_modutil_check_user_in_passwd(pamh, user, NULL) == PAM_SUCCESS;
}
static int
@@ -647,7 +620,21 @@ faillock_message(pam_handle_t *pamh, struct options *opts)
if (left > 0) {
left = (left + 59)/60; /* minutes */
- pam_info(pamh, _("(%d minutes left to unlock)"), (int)left);
+#if defined HAVE_DNGETTEXT && defined ENABLE_NLS
+ pam_info(
+ pamh,
+ dngettext(PACKAGE,
+ "(%d minute left to unlock)",
+ "(%d minutes left to unlock)",
+ (int)left),
+ (int)left);
+#else
+ if (left == 1)
+ pam_info(pamh, _("(%d minute left to unlock)"), (int)left);
+ else
+ /* TRANSLATORS: only used if dngettext is not supported. */
+ pam_info(pamh, _("(%d minutes left to unlock)"), (int)left);
+#endif
}
}
}
@@ -685,7 +672,9 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags,
if (rv != PAM_SUCCESS)
goto err;
- pam_fail_delay(pamh, 2000000); /* 2 sec delay on failure */
+ if (!(opts.flags & FAILLOCK_FLAG_NO_DELAY)) {
+ pam_fail_delay(pamh, 2000000); /* 2 sec delay on failure */
+ }
if ((rv=get_pam_user(pamh, &opts)) != PAM_SUCCESS) {
goto err;
diff --git a/modules/pam_filter/Makefile.in b/modules/pam_filter/Makefile.in
index 76fc4684..76b17653 100644
--- a/modules/pam_filter/Makefile.in
+++ b/modules/pam_filter/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_filter
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -393,6 +396,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
@@ -462,6 +466,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -475,6 +482,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -494,7 +503,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -541,8 +549,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -553,6 +559,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -602,7 +609,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -610,9 +616,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -622,6 +625,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -1027,7 +1031,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_filter/pam_filter.8 b/modules/pam_filter/pam_filter.8
index b4e4104a..d804faf9 100644
--- a/modules/pam_filter/pam_filter.8
+++ b/modules/pam_filter/pam_filter.8
@@ -2,12 +2,12 @@
.\" Title: pam_filter
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_FILTER" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_FILTER" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_filter/pam_filter.c b/modules/pam_filter/pam_filter.c
index 2f0af4fb..6e6def37 100644
--- a/modules/pam_filter/pam_filter.c
+++ b/modules/pam_filter/pam_filter.c
@@ -354,7 +354,7 @@ set_filter (pam_handle_t *pamh, int flags UNUSED, int ctrl,
int t = open("/dev/tty", O_RDWR|O_NOCTTY);
#else
int t = open("/dev/tty",O_RDWR);
- if (t > 0) {
+ if (t >= 0) {
(void) ioctl(t, TIOCNOTTY, NULL);
close(t);
}
diff --git a/modules/pam_filter/upperLOWER/Makefile.am b/modules/pam_filter/upperLOWER/Makefile.am
index 34391e89..f65c462b 100644
--- a/modules/pam_filter/upperLOWER/Makefile.am
+++ b/modules/pam_filter/upperLOWER/Makefile.am
@@ -8,8 +8,8 @@ securelibfilterdir = $(SECUREDIR)/pam_filter
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- -I$(srcdir)/.. @PIE_CFLAGS@ $(WARN_CFLAGS)
-AM_LDFLAGS = @PIE_LDFLAGS@
+ -I$(srcdir)/.. @EXE_CFLAGS@ $(WARN_CFLAGS)
+AM_LDFLAGS = @EXE_LDFLAGS@
LDADD = $(top_builddir)/libpam/libpam.la
securelibfilter_PROGRAMS = upperLOWER
diff --git a/modules/pam_filter/upperLOWER/Makefile.in b/modules/pam_filter/upperLOWER/Makefile.in
index 4b3d5b6c..3046fe82 100644
--- a/modules/pam_filter/upperLOWER/Makefile.in
+++ b/modules/pam_filter/upperLOWER/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -95,18 +95,21 @@ host_triplet = @host@
securelibfilter_PROGRAMS = upperLOWER$(EXEEXT)
subdir = modules/pam_filter/upperLOWER
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -206,6 +209,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -219,6 +225,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -238,7 +246,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -285,8 +292,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -297,6 +302,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -346,7 +352,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -354,9 +359,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -366,6 +368,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -373,9 +376,9 @@ top_srcdir = @top_srcdir@
CLEANFILES = *~
securelibfilterdir = $(SECUREDIR)/pam_filter
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- -I$(srcdir)/.. @PIE_CFLAGS@ $(WARN_CFLAGS)
+ -I$(srcdir)/.. @EXE_CFLAGS@ $(WARN_CFLAGS)
-AM_LDFLAGS = @PIE_LDFLAGS@
+AM_LDFLAGS = @EXE_LDFLAGS@
LDADD = $(top_builddir)/libpam/libpam.la
all: all-am
diff --git a/modules/pam_ftp/Makefile.in b/modules/pam_ftp/Makefile.in
index b9d1b2bb..7788d6e3 100644
--- a/modules/pam_ftp/Makefile.in
+++ b/modules/pam_ftp/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_ftp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_ftp/pam_ftp.8 b/modules/pam_ftp/pam_ftp.8
index a7b97ec8..28e1af89 100644
--- a/modules/pam_ftp/pam_ftp.8
+++ b/modules/pam_ftp/pam_ftp.8
@@ -2,12 +2,12 @@
.\" Title: pam_ftp
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_FTP" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_FTP" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_ftp/pam_ftp.c b/modules/pam_ftp/pam_ftp.c
index b2c32b74..441f2bba 100644
--- a/modules/pam_ftp/pam_ftp.c
+++ b/modules/pam_ftp/pam_ftp.c
@@ -133,6 +133,8 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED,
retval = pam_set_item(pamh, PAM_USER, (const void *)anon_user);
if (retval != PAM_SUCCESS || anon_user == NULL) {
pam_syslog(pamh, LOG_ERR, "user resetting failed");
+ free(anon_user);
+
return PAM_USER_UNKNOWN;
}
free(anon_user);
diff --git a/modules/pam_group/Makefile.in b/modules/pam_group/Makefile.in
index 1761ebfd..6d916f1a 100644
--- a/modules/pam_group/Makefile.in
+++ b/modules/pam_group/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_group
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -376,6 +379,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -420,6 +424,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -433,6 +440,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -452,7 +461,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -499,8 +507,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -511,6 +517,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -560,7 +567,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -568,9 +574,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -580,6 +583,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -980,7 +984,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_group/group.conf.5 b/modules/pam_group/group.conf.5
index 8e359a78..bbbe307a 100644
--- a/modules/pam_group/group.conf.5
+++ b/modules/pam_group/group.conf.5
@@ -2,12 +2,12 @@
.\" Title: group.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "GROUP\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "GROUP\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_group/pam_group.8 b/modules/pam_group/pam_group.8
index 94b4afb0..77c73419 100644
--- a/modules/pam_group/pam_group.8
+++ b/modules/pam_group/pam_group.8
@@ -2,12 +2,12 @@
.\" Title: pam_group
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_GROUP" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_GROUP" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_issue/Makefile.in b/modules/pam_issue/Makefile.in
index ea74d07e..91627c5c 100644
--- a/modules/pam_issue/Makefile.in
+++ b/modules/pam_issue/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_issue
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_issue/pam_issue.8 b/modules/pam_issue/pam_issue.8
index abe2585f..810406ed 100644
--- a/modules/pam_issue/pam_issue.8
+++ b/modules/pam_issue/pam_issue.8
@@ -2,12 +2,12 @@
.\" Title: pam_issue
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ISSUE" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_ISSUE" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_keyinit/Makefile.in b/modules/pam_keyinit/Makefile.in
index a1a11625..600c19cb 100644
--- a/modules/pam_keyinit/Makefile.in
+++ b/modules/pam_keyinit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_keyinit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_keyinit/pam_keyinit.8 b/modules/pam_keyinit/pam_keyinit.8
index 814008c3..01bfa529 100644
--- a/modules/pam_keyinit/pam_keyinit.8
+++ b/modules/pam_keyinit/pam_keyinit.8
@@ -2,12 +2,12 @@
.\" Title: pam_keyinit
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_KEYINIT" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_KEYINIT" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_lastlog/Makefile.in b/modules/pam_lastlog/Makefile.in
index 85de1bb0..16baea83 100644
--- a/modules/pam_lastlog/Makefile.in
+++ b/modules/pam_lastlog/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_lastlog
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_lastlog/README b/modules/pam_lastlog/README
index c0feca04..9b0cff9c 100644
--- a/modules/pam_lastlog/README
+++ b/modules/pam_lastlog/README
@@ -76,7 +76,7 @@ unlimited
EXAMPLES
-Add the following line to /etc/pam.d/login to display the last login time of an
+Add the following line to /etc/pam.d/login to display the last login time of a
user:
session required pam_lastlog.so nowtmp
diff --git a/modules/pam_lastlog/pam_lastlog.8 b/modules/pam_lastlog/pam_lastlog.8
index f21038e7..325456e8 100644
--- a/modules/pam_lastlog/pam_lastlog.8
+++ b/modules/pam_lastlog/pam_lastlog.8
@@ -2,12 +2,12 @@
.\" Title: pam_lastlog
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_LASTLOG" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_LASTLOG" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -153,7 +153,7 @@ There was an error during reading the lastlog file in the auth or account phase
.PP
Add the following line to
/etc/pam\&.d/login
-to display the last login time of an user:
+to display the last login time of a user:
.sp
.if n \{\
.RS 4
diff --git a/modules/pam_lastlog/pam_lastlog.8.xml b/modules/pam_lastlog/pam_lastlog.8.xml
index a2f14fc2..bada2ea0 100644
--- a/modules/pam_lastlog/pam_lastlog.8.xml
+++ b/modules/pam_lastlog/pam_lastlog.8.xml
@@ -286,7 +286,7 @@
<title>EXAMPLES</title>
<para>
Add the following line to <filename>/etc/pam.d/login</filename> to
- display the last login time of an user:
+ display the last login time of a user:
</para>
<programlisting>
session required pam_lastlog.so nowtmp
diff --git a/modules/pam_limits/Makefile.in b/modules/pam_limits/Makefile.in
index ac06d6c0..ac265081 100644
--- a/modules/pam_limits/Makefile.in
+++ b/modules/pam_limits/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_limits
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -376,6 +379,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -420,6 +424,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -433,6 +440,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -452,7 +461,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -499,8 +507,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -511,6 +517,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -560,7 +567,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -568,9 +574,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -580,6 +583,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -982,7 +986,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_limits/README b/modules/pam_limits/README
index 6aabd54f..ed104d62 100644
--- a/modules/pam_limits/README
+++ b/modules/pam_limits/README
@@ -62,6 +62,7 @@ limits.conf.
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
+@student - nonewprivs 1
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10
diff --git a/modules/pam_limits/limits.conf b/modules/pam_limits/limits.conf
index be621a7c..e8a746cc 100644
--- a/modules/pam_limits/limits.conf
+++ b/modules/pam_limits/limits.conf
@@ -1,5 +1,16 @@
# /etc/security/limits.conf
#
+#This file sets the resource limits for the users logged in via PAM.
+#It does not affect resource limits of the system services.
+#
+#Also note that configuration files in /etc/security/limits.d directory,
+#which are read in alphabetical order, override the settings in this
+#file in case the domain is the same or more specific.
+#That means, for example, that setting a limit for wildcard domain here
+#can be overridden with a wildcard setting in a config file in the
+#subdirectory, but a user specific setting here can be overridden only
+#with a user specific setting in the subdirectory.
+#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
diff --git a/modules/pam_limits/limits.conf.5 b/modules/pam_limits/limits.conf.5
index f527fec8..a4a0ed31 100644
--- a/modules/pam_limits/limits.conf.5
+++ b/modules/pam_limits/limits.conf.5
@@ -2,12 +2,12 @@
.\" Title: limits.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "LIMITS\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "LIMITS\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -245,6 +245,11 @@ maximum number of all logins on system; user is not allowed to log\-in if total
\fIuid=0\fR)
.RE
.PP
+\fBnonewprivs\fR
+.RS 4
+value of 0 or 1; if set to 1 disables acquiring new privileges by invoking prctl(PR_SET_NO_NEW_PRIVS)
+.RE
+.PP
\fBpriority\fR
.RS 4
the priority to run user process with (negative values boost process priority)
@@ -282,9 +287,11 @@ All items support the values
or
\fIinfinity\fR
indicating no limit, except for
-\fBpriority\fR
-and
-\fBnice\fR\&.
+\fBpriority\fR,
+\fBnice\fR, and
+\fBnonewprivs\fR\&. If
+\fBnofile\fR
+is to be set to one of these values, it will be set to the contents of /proc/sys/fs/nr_open instead (see setrlimit(3))\&.
.PP
If a hard limit or soft limit of a resource is set to a valid value, but outside of the supported range of the local system, the system may reject the new limit or unexpected behavior may occur\&. If the control value
\fIrequired\fR
@@ -321,6 +328,7 @@ These are some example lines which might be specified in
@faculty hard nproc 50
ftp hard nproc 0
@student \- maxlogins 4
+@student \- nonewprivs 1
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10
diff --git a/modules/pam_limits/limits.conf.5.xml b/modules/pam_limits/limits.conf.5.xml
index 380a1399..c5bd6768 100644
--- a/modules/pam_limits/limits.conf.5.xml
+++ b/modules/pam_limits/limits.conf.5.xml
@@ -228,6 +228,13 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>nonewprivs</option></term>
+ <listitem>
+ <para>value of 0 or 1; if set to 1 disables acquiring new
+ privileges by invoking prctl(PR_SET_NO_NEW_PRIVS)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><option>priority</option></term>
<listitem>
<para>the priority to run user process with (negative
@@ -274,7 +281,10 @@
<para>
All items support the values <emphasis>-1</emphasis>,
<emphasis>unlimited</emphasis> or <emphasis>infinity</emphasis> indicating no limit,
- except for <emphasis remap='B'>priority</emphasis> and <emphasis remap='B'>nice</emphasis>.
+ except for <emphasis remap='B'>priority</emphasis>, <emphasis remap='B'>nice</emphasis>,
+ and <emphasis remap='B'>nonewprivs</emphasis>.
+ If <emphasis remap='B'>nofile</emphasis> is to be set to one of these values,
+ it will be set to the contents of /proc/sys/fs/nr_open instead (see setrlimit(3)).
</para>
<para>
If a hard limit or soft limit of a resource is set to a valid value,
@@ -323,6 +333,7 @@
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
+@student - nonewprivs 1
:123 hard cpu 5000
@500: soft cpu 10000
600:700 hard locks 10
diff --git a/modules/pam_limits/pam_limits.8 b/modules/pam_limits/pam_limits.8
index fbbacc66..50e9a100 100644
--- a/modules/pam_limits/pam_limits.8
+++ b/modules/pam_limits/pam_limits.8
@@ -2,12 +2,12 @@
.\" Title: pam_limits
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_LIMITS" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_LIMITS" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_limits/pam_limits.c b/modules/pam_limits/pam_limits.c
index b791cdce..7cc45d77 100644
--- a/modules/pam_limits/pam_limits.c
+++ b/modules/pam_limits/pam_limits.c
@@ -28,6 +28,7 @@
#include <syslog.h>
#include <stdarg.h>
#include <signal.h>
+#include <sys/prctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/resource.h>
@@ -49,7 +50,7 @@
/* Module defines */
#define LINE_LENGTH 1024
-#define LIMITS_DEF_USER 0 /* limit was set by an user entry */
+#define LIMITS_DEF_USER 0 /* limit was set by a user entry */
#define LIMITS_DEF_GROUP 1 /* limit was set by a group entry */
#define LIMITS_DEF_ALLGROUP 2 /* limit was set by a group entry */
#define LIMITS_DEF_ALL 3 /* limit was set by an all entry */
@@ -88,6 +89,7 @@ struct pam_limit_s {
int flag_numsyslogins; /* whether to limit logins only for a
specific user or to count all logins */
int priority; /* the priority to run user process with */
+ int nonewprivs; /* whether to prctl(PR_SET_NO_NEW_PRIVS) */
struct user_limits_struct limits[RLIM_NLIMITS];
const char *conf_file;
int utmp_after_pam_call;
@@ -98,6 +100,7 @@ struct pam_limit_s {
#define LIMIT_NUMSYSLOGINS RLIM_NLIMITS+2
#define LIMIT_PRI RLIM_NLIMITS+3
+#define LIMIT_NONEWPRIVS RLIM_NLIMITS+4
#define LIMIT_SOFT 1
#define LIMIT_HARD 2
@@ -484,6 +487,41 @@ static int init_limits(pam_handle_t *pamh, struct pam_limit_s *pl, int ctrl)
return retval;
}
+/*
+ * Read the contents of <pathname> and return it in *valuep
+ * return 1 if conversion succeeds, result is in *valuep
+ * return 0 if conversion fails, *valuep is untouched.
+ */
+static int
+value_from_file(const char *pathname, rlim_t *valuep)
+{
+ char buf[128];
+ FILE *fp;
+ int retval;
+
+ retval = 0;
+
+ if ((fp = fopen(pathname, "r")) != NULL) {
+ if (fgets(buf, sizeof(buf), fp) != NULL) {
+ char *endptr;
+ unsigned long long value;
+
+ errno = 0;
+ value = strtoull(buf, &endptr, 10);
+ if (endptr != buf &&
+ (value != ULLONG_MAX || errno == 0) &&
+ (unsigned long long) (rlim_t) value == value) {
+ *valuep = (rlim_t) value;
+ retval = 1;
+ }
+ }
+
+ fclose(fp);
+ }
+
+ return retval;
+}
+
static void
process_limit (const pam_handle_t *pamh, int source, const char *lim_type,
const char *lim_item, const char *lim_value,
@@ -551,6 +589,8 @@ process_limit (const pam_handle_t *pamh, int source, const char *lim_type,
pl->flag_numsyslogins = 1;
} else if (strcmp(lim_item, "priority") == 0) {
limit_item = LIMIT_PRI;
+ } else if (strcmp(lim_item, "nonewprivs") == 0) {
+ limit_item = LIMIT_NONEWPRIVS;
} else {
pam_syslog(pamh, LOG_DEBUG, "unknown limit item '%s'", lim_item);
return;
@@ -562,11 +602,23 @@ process_limit (const pam_handle_t *pamh, int source, const char *lim_type,
limit_type=LIMIT_HARD;
else if (strcmp(lim_type,"-")==0)
limit_type=LIMIT_SOFT | LIMIT_HARD;
- else if (limit_item != LIMIT_LOGIN && limit_item != LIMIT_NUMSYSLOGINS) {
+ else if (limit_item != LIMIT_LOGIN && limit_item != LIMIT_NUMSYSLOGINS
+ && limit_item != LIMIT_NONEWPRIVS) {
pam_syslog(pamh, LOG_DEBUG, "unknown limit type '%s'", lim_type);
return;
}
- if (limit_item != LIMIT_PRI
+ if (limit_item == LIMIT_NONEWPRIVS) {
+ /* just require a bool-style 0 or 1 */
+ if (strcmp(lim_value, "0") == 0) {
+ int_value = 0;
+ } else if (strcmp(lim_value, "1") == 0) {
+ int_value = 1;
+ } else {
+ pam_syslog(pamh, LOG_DEBUG,
+ "wrong limit value '%s' for limit type '%s'",
+ lim_value, lim_type);
+ }
+ } else if (limit_item != LIMIT_PRI
#ifdef RLIMIT_NICE
&& limit_item != RLIMIT_NICE
#endif
@@ -649,11 +701,26 @@ process_limit (const pam_handle_t *pamh, int source, const char *lim_type,
rlimit_value = 20 - int_value;
break;
#endif
+ case RLIMIT_NOFILE:
+ /*
+ * If nofile is to be set to "unlimited", try to set it to
+ * the value in /proc/sys/fs/nr_open instead.
+ */
+ if (rlimit_value == RLIM_INFINITY) {
+ if (!value_from_file("/proc/sys/fs/nr_open", &rlimit_value))
+ pam_syslog(pamh, LOG_WARNING,
+ "Cannot set \"nofile\" to a sensible value");
+ else if (ctrl & PAM_DEBUG_ARG)
+ pam_syslog(pamh, LOG_DEBUG, "Setting \"nofile\" limit to %llu",
+ (unsigned long long) rlimit_value);
+ }
+ break;
}
if ( (limit_item != LIMIT_LOGIN)
&& (limit_item != LIMIT_NUMSYSLOGINS)
- && (limit_item != LIMIT_PRI) ) {
+ && (limit_item != LIMIT_PRI)
+ && (limit_item != LIMIT_NONEWPRIVS) ) {
if (limit_type & LIMIT_SOFT) {
if (pl->limits[limit_item].src_soft < source) {
return;
@@ -674,14 +741,16 @@ process_limit (const pam_handle_t *pamh, int source, const char *lim_type,
/* recent kernels support negative priority limits (=raise priority) */
if (limit_item == LIMIT_PRI) {
- pl->priority = int_value;
+ pl->priority = int_value;
+ } else if (limit_item == LIMIT_NONEWPRIVS) {
+ pl->nonewprivs = int_value;
} else {
- if (pl->login_limit_def < source) {
- return;
- } else {
- pl->login_limit = int_value;
- pl->login_limit_def = source;
- }
+ if (pl->login_limit_def < source) {
+ return;
+ } else {
+ pl->login_limit = int_value;
+ pl->login_limit_def = source;
+ }
}
}
return;
@@ -995,6 +1064,13 @@ static int setup_limits(pam_handle_t *pamh,
retval |= LOGIN_ERR;
}
+ if (pl->nonewprivs) {
+ if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) {
+ pam_syslog(pamh, LOG_ERR, "Could not set prctl(PR_SET_NO_NEW_PRIVS): %m");
+ retval |= LIMIT_ERR;
+ }
+ }
+
return retval;
}
diff --git a/modules/pam_listfile/Makefile.in b/modules/pam_listfile/Makefile.in
index 5cf383d2..86a9e918 100644
--- a/modules/pam_listfile/Makefile.in
+++ b/modules/pam_listfile/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_listfile
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_listfile/pam_listfile.8 b/modules/pam_listfile/pam_listfile.8
index 18cf0f83..35cc2e74 100644
--- a/modules/pam_listfile/pam_listfile.8
+++ b/modules/pam_listfile/pam_listfile.8
@@ -2,12 +2,12 @@
.\" Title: pam_listfile
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_LISTFILE" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_LISTFILE" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_localuser/Makefile.in b/modules/pam_localuser/Makefile.in
index 81aa2789..9f1526f2 100644
--- a/modules/pam_localuser/Makefile.in
+++ b/modules/pam_localuser/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_localuser-retval$(EXEEXT)
subdir = modules/pam_localuser
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -379,6 +382,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -423,6 +427,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -436,6 +443,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -455,7 +464,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -502,8 +510,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -514,6 +520,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -563,7 +570,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -571,9 +577,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -583,6 +586,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -933,7 +937,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_localuser/pam_localuser.8 b/modules/pam_localuser/pam_localuser.8
index 65e49990..724ab543 100644
--- a/modules/pam_localuser/pam_localuser.8
+++ b/modules/pam_localuser/pam_localuser.8
@@ -2,12 +2,12 @@
.\" Title: pam_localuser
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_LOCALUSER" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_LOCALUSER" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_localuser/pam_localuser.c b/modules/pam_localuser/pam_localuser.c
index cb507524..a9f2233c 100644
--- a/modules/pam_localuser/pam_localuser.c
+++ b/modules/pam_localuser/pam_localuser.c
@@ -45,92 +45,10 @@
#include <unistd.h>
#include <security/pam_modules.h>
+#include <security/pam_modutil.h>
#include <security/pam_ext.h>
#include "pam_inline.h"
-static int
-check_user_in_passwd(pam_handle_t *pamh, const char *user_name,
- const char *file_name)
-{
- int rc;
- size_t user_len;
- FILE *fp;
- char line[BUFSIZ];
-
- /* Validate the user name. */
- if ((user_len = strlen(user_name)) == 0) {
- pam_syslog(pamh, LOG_NOTICE, "user name is not valid");
- return PAM_SERVICE_ERR;
- }
-
- if (user_len > sizeof(line) - sizeof(":")) {
- pam_syslog(pamh, LOG_NOTICE, "user name is too long");
- return PAM_SERVICE_ERR;
- }
-
- if (strchr(user_name, ':') != NULL) {
- /*
- * "root:x" is not a local user name even if the passwd file
- * contains a line starting with "root:x:".
- */
- return PAM_PERM_DENIED;
- }
-
- /* Open the passwd file. */
- if (file_name == NULL) {
- file_name = "/etc/passwd";
- }
- if ((fp = fopen(file_name, "r")) == NULL) {
- pam_syslog(pamh, LOG_ERR, "error opening %s: %m", file_name);
- return PAM_SERVICE_ERR;
- }
-
- /*
- * Scan the file using fgets() instead of fgetpwent_r() because
- * the latter is not flexible enough in handling long lines
- * in passwd files.
- */
- rc = PAM_PERM_DENIED;
- while (fgets(line, sizeof(line), fp) != NULL) {
- size_t line_len;
- const char *str;
-
- /*
- * Does this line start with the user name
- * followed by a colon?
- */
- if (strncmp(user_name, line, user_len) == 0 &&
- line[user_len] == ':') {
- rc = PAM_SUCCESS;
- break;
- }
- /* Has a newline been read? */
- line_len = strlen(line);
- if (line_len < sizeof(line) - 1 ||
- line[line_len - 1] == '\n') {
- /* Yes, continue with the next line. */
- continue;
- }
-
- /* No, read till the end of this line first. */
- while ((str = fgets(line, sizeof(line), fp)) != NULL) {
- line_len = strlen(line);
- if (line_len == 0 ||
- line[line_len - 1] == '\n') {
- break;
- }
- }
- if (str == NULL) {
- /* fgets returned NULL, we are done. */
- break;
- }
- /* Continue with the next line. */
- }
-
- fclose(fp);
- return rc;
-}
-
int
pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED,
int argc, const char **argv)
@@ -173,7 +91,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED,
return rc == PAM_CONV_AGAIN ? PAM_INCOMPLETE : rc;
}
- return check_user_in_passwd(pamh, user_name, file_name);
+ return pam_modutil_check_user_in_passwd(pamh, user_name, file_name);
}
int
diff --git a/modules/pam_loginuid/Makefile.in b/modules/pam_loginuid/Makefile.in
index 2bd0872d..bcfe714b 100644
--- a/modules/pam_loginuid/Makefile.in
+++ b/modules/pam_loginuid/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_loginuid
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_loginuid/pam_loginuid.8 b/modules/pam_loginuid/pam_loginuid.8
index e2f45e63..3bb3fda2 100644
--- a/modules/pam_loginuid/pam_loginuid.8
+++ b/modules/pam_loginuid/pam_loginuid.8
@@ -2,12 +2,12 @@
.\" Title: pam_loginuid
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_LOGINUID" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_LOGINUID" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_loginuid/pam_loginuid.c b/modules/pam_loginuid/pam_loginuid.c
index 62dd3d59..6f5a6380 100644
--- a/modules/pam_loginuid/pam_loginuid.c
+++ b/modules/pam_loginuid/pam_loginuid.c
@@ -65,7 +65,7 @@ static int set_loginuid(pam_handle_t *pamh, uid_t uid)
fd = open("/proc/self/uid_map", O_RDONLY);
if (fd >= 0) {
count = pam_modutil_read(fd, uid_map, sizeof(uid_map));
- if (strncmp(uid_map, host_uid_map, count) != 0)
+ if (count <= 0 || strncmp(uid_map, host_uid_map, count) != 0)
rc = PAM_IGNORE;
close(fd);
}
diff --git a/modules/pam_mail/Makefile.in b/modules/pam_mail/Makefile.in
index 9f7d8228..fbbffa78 100644
--- a/modules/pam_mail/Makefile.in
+++ b/modules/pam_mail/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_mail
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_mail/pam_mail.8 b/modules/pam_mail/pam_mail.8
index 4761b122..a6f77667 100644
--- a/modules/pam_mail/pam_mail.8
+++ b/modules/pam_mail/pam_mail.8
@@ -2,12 +2,12 @@
.\" Title: pam_mail
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MAIL" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_MAIL" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_mkhomedir/Makefile.am b/modules/pam_mkhomedir/Makefile.am
index 973bc336..04da1dcc 100644
--- a/modules/pam_mkhomedir/Makefile.am
+++ b/modules/pam_mkhomedir/Makefile.am
@@ -31,6 +31,8 @@ endif
sbin_PROGRAMS = mkhomedir_helper
mkhomedir_helper_SOURCES = mkhomedir_helper.c
+mkhomedir_helper_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
+mkhomedir_helper_LDFLAGS = @EXE_LDFLAGS@
mkhomedir_helper_LDADD = $(top_builddir)/libpam/libpam.la
check_PROGRAMS = tst-pam_mkhomedir-retval
diff --git a/modules/pam_mkhomedir/Makefile.in b/modules/pam_mkhomedir/Makefile.in
index 8776cb58..163531e8 100644
--- a/modules/pam_mkhomedir/Makefile.in
+++ b/modules/pam_mkhomedir/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -100,18 +100,21 @@ sbin_PROGRAMS = mkhomedir_helper$(EXEEXT)
check_PROGRAMS = tst-pam_mkhomedir-retval$(EXEEXT)
subdir = modules/pam_mkhomedir
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -162,9 +165,14 @@ pam_mkhomedir_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) $(pam_mkhomedir_la_LDFLAGS) $(LDFLAGS) \
-o $@
-am_mkhomedir_helper_OBJECTS = mkhomedir_helper.$(OBJEXT)
+am_mkhomedir_helper_OBJECTS = \
+ mkhomedir_helper-mkhomedir_helper.$(OBJEXT)
mkhomedir_helper_OBJECTS = $(am_mkhomedir_helper_OBJECTS)
mkhomedir_helper_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
+mkhomedir_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(mkhomedir_helper_CFLAGS) $(CFLAGS) \
+ $(mkhomedir_helper_LDFLAGS) $(LDFLAGS) -o $@
tst_pam_mkhomedir_retval_SOURCES = tst-pam_mkhomedir-retval.c
tst_pam_mkhomedir_retval_OBJECTS = tst-pam_mkhomedir-retval.$(OBJEXT)
tst_pam_mkhomedir_retval_DEPENDENCIES = \
@@ -184,7 +192,8 @@ am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/mkhomedir_helper.Po \
+am__depfiles_remade = \
+ ./$(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po \
./$(DEPDIR)/pam_mkhomedir.Plo \
./$(DEPDIR)/tst-pam_mkhomedir-retval.Po
am__mv = mv -f
@@ -394,6 +403,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -438,6 +448,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -451,6 +464,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -470,7 +485,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -517,8 +531,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -529,6 +541,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -578,7 +591,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -586,9 +598,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -598,6 +607,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -620,6 +630,8 @@ pam_mkhomedir_la_LIBADD = $(top_builddir)/libpam/libpam.la
pam_mkhomedir_la_LDFLAGS = -no-undefined -avoid-version -module \
$(am__append_1)
mkhomedir_helper_SOURCES = mkhomedir_helper.c
+mkhomedir_helper_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
+mkhomedir_helper_LDFLAGS = @EXE_LDFLAGS@
mkhomedir_helper_LDADD = $(top_builddir)/libpam/libpam.la
tst_pam_mkhomedir_retval_LDADD = $(top_builddir)/libpam/libpam.la
@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
@@ -755,7 +767,7 @@ pam_mkhomedir.la: $(pam_mkhomedir_la_OBJECTS) $(pam_mkhomedir_la_DEPENDENCIES) $
mkhomedir_helper$(EXEEXT): $(mkhomedir_helper_OBJECTS) $(mkhomedir_helper_DEPENDENCIES) $(EXTRA_mkhomedir_helper_DEPENDENCIES)
@rm -f mkhomedir_helper$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(mkhomedir_helper_OBJECTS) $(mkhomedir_helper_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(mkhomedir_helper_LINK) $(mkhomedir_helper_OBJECTS) $(mkhomedir_helper_LDADD) $(LIBS)
tst-pam_mkhomedir-retval$(EXEEXT): $(tst_pam_mkhomedir_retval_OBJECTS) $(tst_pam_mkhomedir_retval_DEPENDENCIES) $(EXTRA_tst_pam_mkhomedir_retval_DEPENDENCIES)
@rm -f tst-pam_mkhomedir-retval$(EXEEXT)
@@ -767,7 +779,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkhomedir_helper.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_mkhomedir.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_mkhomedir-retval.Po@am__quote@ # am--include-marker
@@ -798,6 +810,20 @@ am--depfiles: $(am__depfiles_remade)
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+mkhomedir_helper-mkhomedir_helper.o: mkhomedir_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mkhomedir_helper_CFLAGS) $(CFLAGS) -MT mkhomedir_helper-mkhomedir_helper.o -MD -MP -MF $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Tpo -c -o mkhomedir_helper-mkhomedir_helper.o `test -f 'mkhomedir_helper.c' || echo '$(srcdir)/'`mkhomedir_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Tpo $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mkhomedir_helper.c' object='mkhomedir_helper-mkhomedir_helper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mkhomedir_helper_CFLAGS) $(CFLAGS) -c -o mkhomedir_helper-mkhomedir_helper.o `test -f 'mkhomedir_helper.c' || echo '$(srcdir)/'`mkhomedir_helper.c
+
+mkhomedir_helper-mkhomedir_helper.obj: mkhomedir_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mkhomedir_helper_CFLAGS) $(CFLAGS) -MT mkhomedir_helper-mkhomedir_helper.obj -MD -MP -MF $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Tpo -c -o mkhomedir_helper-mkhomedir_helper.obj `if test -f 'mkhomedir_helper.c'; then $(CYGPATH_W) 'mkhomedir_helper.c'; else $(CYGPATH_W) '$(srcdir)/mkhomedir_helper.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Tpo $(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mkhomedir_helper.c' object='mkhomedir_helper-mkhomedir_helper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mkhomedir_helper_CFLAGS) $(CFLAGS) -c -o mkhomedir_helper-mkhomedir_helper.obj `if test -f 'mkhomedir_helper.c'; then $(CYGPATH_W) 'mkhomedir_helper.c'; else $(CYGPATH_W) '$(srcdir)/mkhomedir_helper.c'; fi`
+
mostlyclean-libtool:
-rm -f *.lo
@@ -1006,7 +1032,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@@ -1153,7 +1179,7 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
clean-sbinPROGRAMS clean-securelibLTLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -f ./$(DEPDIR)/mkhomedir_helper.Po
+ -rm -f ./$(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po
-rm -f ./$(DEPDIR)/pam_mkhomedir.Plo
-rm -f ./$(DEPDIR)/tst-pam_mkhomedir-retval.Po
-rm -f Makefile
@@ -1201,7 +1227,7 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/mkhomedir_helper.Po
+ -rm -f ./$(DEPDIR)/mkhomedir_helper-mkhomedir_helper.Po
-rm -f ./$(DEPDIR)/pam_mkhomedir.Plo
-rm -f ./$(DEPDIR)/tst-pam_mkhomedir-retval.Po
-rm -f Makefile
diff --git a/modules/pam_mkhomedir/mkhomedir_helper.8 b/modules/pam_mkhomedir/mkhomedir_helper.8
index 5ac40fbd..a9e68a0e 100644
--- a/modules/pam_mkhomedir/mkhomedir_helper.8
+++ b/modules/pam_mkhomedir/mkhomedir_helper.8
@@ -2,12 +2,12 @@
.\" Title: mkhomedir_helper
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "MKHOMEDIR_HELPER" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "MKHOMEDIR_HELPER" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
mkhomedir_helper \- Helper binary that creates home directories
.SH "SYNOPSIS"
.HP \w'\fBmkhomedir_helper\fR\ 'u
-\fBmkhomedir_helper\fR {\fIuser\fR} [\fIumask\fR\ [\ \fIpath\-to\-skel\fR\ ]]
+\fBmkhomedir_helper\fR {\fIuser\fR} [\fIumask\fR\ [\ \fIpath\-to\-skel\fR\ [\ \fIhome_mode\fR\ ]\ ]]
.SH "DESCRIPTION"
.PP
\fImkhomedir_helper\fR
@@ -44,7 +44,10 @@ The default value of
is 0022 and the default value of
\fIpath\-to\-skel\fR
is
-\fI/etc/skel\fR\&.
+\fI/etc/skel\fR\&. The default value of
+\fIhome_mode\fR
+is computed from the value of
+\fIumask\fR\&.
.PP
The helper is separated from the module to not require direct access from login SELinux domains to the contents of user home directories\&. The SELinux domain transition happens when the module is executing the
\fImkhomedir_helper\fR\&.
diff --git a/modules/pam_mkhomedir/mkhomedir_helper.8.xml b/modules/pam_mkhomedir/mkhomedir_helper.8.xml
index c834eddd..8a76f2d6 100644
--- a/modules/pam_mkhomedir/mkhomedir_helper.8.xml
+++ b/modules/pam_mkhomedir/mkhomedir_helper.8.xml
@@ -25,6 +25,9 @@
<replaceable>umask</replaceable>
<arg choice="opt">
<replaceable>path-to-skel</replaceable>
+ <arg choice="opt">
+ <replaceable>home_mode</replaceable>
+ </arg>
</arg>
</arg>
</cmdsynopsis>
@@ -43,7 +46,9 @@
<para>
The default value of <replaceable>umask</replaceable> is 0022 and the
default value of <replaceable>path-to-skel</replaceable> is
- <emphasis>/etc/skel</emphasis>.
+ <emphasis>/etc/skel</emphasis>. The default value of
+ <replaceable>home_mode</replaceable> is computed from the value of
+ <replaceable>umask</replaceable>.
</para>
<para>
diff --git a/modules/pam_mkhomedir/mkhomedir_helper.c b/modules/pam_mkhomedir/mkhomedir_helper.c
index 8969da52..582fecce 100644
--- a/modules/pam_mkhomedir/mkhomedir_helper.c
+++ b/modules/pam_mkhomedir/mkhomedir_helper.c
@@ -27,6 +27,7 @@
#include <security/pam_modutil.h>
static unsigned long u_mask = 0022;
+static unsigned long home_mode = 0;
static char skeldir[BUFSIZ] = "/etc/skel";
/* Do the actual work of creating a home dir */
@@ -232,6 +233,8 @@ create_homedir(const struct passwd *pwd,
{
pam_syslog(NULL, LOG_DEBUG,
"unable to open or stat src file %s: %m", newsource);
+ if (srcfd >= 0)
+ close(srcfd);
closedir(d);
#ifndef PATH_MAX
@@ -258,7 +261,7 @@ create_homedir(const struct passwd *pwd,
}
/* Set the proper ownership and permissions for the module. We make
- the file a+w and then mask it with the set mask. This preseves
+ the file a+w and then mask it with the set mask. This preserves
execute bits */
if (fchmod(destfd, (st.st_mode | 0222) & (~u_mask)) != 0 ||
fchown(destfd, pwd->pw_uid, pwd->pw_gid) != 0)
@@ -332,6 +335,24 @@ create_homedir(const struct passwd *pwd,
}
static int
+create_homedir_helper(const struct passwd *_pwd,
+ const char *_skeldir, const char *_homedir)
+{
+ int retval = PAM_SESSION_ERR;
+
+ retval = create_homedir(_pwd, _skeldir, _homedir);
+
+ if (chmod(_homedir, home_mode) != 0)
+ {
+ pam_syslog(NULL, LOG_DEBUG,
+ "unable to change perms on home directory %s: %m", _homedir);
+ return PAM_PERM_DENIED;
+ }
+
+ return retval;
+}
+
+static int
make_parent_dirs(char *dir, int make)
{
int rc = PAM_SUCCESS;
@@ -364,9 +385,10 @@ main(int argc, char *argv[])
{
struct passwd *pwd;
struct stat st;
+ char *eptr;
if (argc < 2) {
- fprintf(stderr, "Usage: %s <username> [<umask> [<skeldir>]]\n", argv[0]);
+ fprintf(stderr, "Usage: %s <username> [<umask> [<skeldir> [<home_mode>]]]\n", argv[0]);
return PAM_SESSION_ERR;
}
@@ -377,7 +399,6 @@ main(int argc, char *argv[])
}
if (argc >= 3) {
- char *eptr;
errno = 0;
u_mask = strtoul(argv[2], &eptr, 0);
if (errno != 0 || *eptr != '\0') {
@@ -394,6 +415,18 @@ main(int argc, char *argv[])
strcpy(skeldir, argv[3]);
}
+ if (argc >= 5) {
+ errno = 0;
+ home_mode = strtoul(argv[4], &eptr, 0);
+ if (errno != 0 || *eptr != '\0') {
+ pam_syslog(NULL, LOG_ERR, "Bogus home_mode value %s", argv[4]);
+ return PAM_SESSION_ERR;
+ }
+ }
+
+ if (home_mode == 0)
+ home_mode = 0777 & ~u_mask;
+
/* Stat the home directory, if something exists then we assume it is
correct and return a success */
if (stat(pwd->pw_dir, &st) == 0)
@@ -402,5 +435,5 @@ main(int argc, char *argv[])
if (make_parent_dirs(pwd->pw_dir, 0) != PAM_SUCCESS)
return PAM_PERM_DENIED;
- return create_homedir(pwd, skeldir, pwd->pw_dir);
+ return create_homedir_helper(pwd, skeldir, pwd->pw_dir);
}
diff --git a/modules/pam_mkhomedir/pam_mkhomedir.8 b/modules/pam_mkhomedir/pam_mkhomedir.8
index 4889135f..b8a4754c 100644
--- a/modules/pam_mkhomedir/pam_mkhomedir.8
+++ b/modules/pam_mkhomedir/pam_mkhomedir.8
@@ -2,12 +2,12 @@
.\" Title: pam_mkhomedir
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MKHOMEDIR" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_MKHOMEDIR" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -53,8 +53,13 @@ Turns on debugging via
.PP
\fBumask=\fR\fB\fImask\fR\fR
.RS 4
-The user file\-creation mask is set to
-\fImask\fR\&. The default value of mask is 0022\&.
+The file mode creation mask is set to
+\fImask\fR\&. The default value of mask is 0022\&. If this option is not specified, then the permissions of created user home directory is set to the value of
+\fBHOME_MODE\fR
+configuration item from
+/etc/login\&.defs\&. If there is no such configuration item then the value is computed from the value of
+\fBUMASK\fR
+in the same file\&. If there is no such configuration option either the default value of 0755 is used for the mode\&.
.RE
.PP
\fBskel=\fR\fB\fI/path/to/skel/directory\fR\fR
diff --git a/modules/pam_mkhomedir/pam_mkhomedir.8.xml b/modules/pam_mkhomedir/pam_mkhomedir.8.xml
index 19744de8..10109067 100644
--- a/modules/pam_mkhomedir/pam_mkhomedir.8.xml
+++ b/modules/pam_mkhomedir/pam_mkhomedir.8.xml
@@ -90,9 +90,16 @@
</term>
<listitem>
<para>
- The user file-creation mask is set to
- <replaceable>mask</replaceable>. The default value of mask is
- 0022.
+ The file mode creation mask is set to
+ <replaceable>mask</replaceable>. The default value of mask
+ is 0022. If this option is not specified, then the permissions
+ of created user home directory is set to the value of
+ <option>HOME_MODE</option> configuration item from
+ <filename>/etc/login.defs</filename>. If there is no such
+ configuration item then the value is computed from the
+ value of <option>UMASK</option> in the same file. If
+ there is no such configuration option either the default
+ value of 0755 is used for the mode.
</para>
</listitem>
</varlistentry>
diff --git a/modules/pam_mkhomedir/pam_mkhomedir.c b/modules/pam_mkhomedir/pam_mkhomedir.c
index cb773e8f..48e578fa 100644
--- a/modules/pam_mkhomedir/pam_mkhomedir.c
+++ b/modules/pam_mkhomedir/pam_mkhomedir.c
@@ -56,6 +56,9 @@
#define MKHOMEDIR_DEBUG 020 /* be verbose about things */
#define MKHOMEDIR_QUIET 040 /* keep quiet about things */
+#define LOGIN_DEFS "/etc/login.defs"
+#define UMASK_DEFAULT "0022"
+
struct options_t {
int ctrl;
const char *umask;
@@ -68,7 +71,7 @@ _pam_parse (const pam_handle_t *pamh, int flags, int argc, const char **argv,
options_t *opt)
{
opt->ctrl = 0;
- opt->umask = "0022";
+ opt->umask = NULL;
opt->skeldir = "/etc/skel";
/* does the application require quiet? */
@@ -94,6 +97,17 @@ _pam_parse (const pam_handle_t *pamh, int flags, int argc, const char **argv,
}
}
+static char*
+_pam_conv_str_umask_to_homemode(const char *umask)
+{
+ unsigned int m = 0;
+ char tmp[5];
+
+ m = 0777 & ~strtoul(umask, NULL, 8);
+ (void) snprintf(tmp, sizeof(tmp), "0%o", m);
+ return strdup(tmp);
+}
+
/* Do the actual work of creating a home dir */
static int
create_homedir (pam_handle_t *pamh, options_t *opt,
@@ -101,6 +115,8 @@ create_homedir (pam_handle_t *pamh, options_t *opt,
{
int retval, child;
struct sigaction newsa, oldsa;
+ char *login_umask = NULL;
+ char *login_homemode = NULL;
/* Mention what is happening, if the notification fails that is OK */
if (!(opt->ctrl & MKHOMEDIR_QUIET))
@@ -122,11 +138,26 @@ create_homedir (pam_handle_t *pamh, options_t *opt,
pam_syslog(pamh, LOG_DEBUG, "Executing mkhomedir_helper.");
}
+ /* fetch UMASK from /etc/login.defs if not in argv */
+ if (opt->umask == NULL) {
+ login_umask = pam_modutil_search_key(pamh, LOGIN_DEFS, "UMASK");
+ login_homemode = pam_modutil_search_key(pamh, LOGIN_DEFS, "HOME_MODE");
+ if (login_homemode == NULL) {
+ if (login_umask != NULL) {
+ login_homemode = _pam_conv_str_umask_to_homemode(login_umask);
+ } else {
+ login_homemode = _pam_conv_str_umask_to_homemode(UMASK_DEFAULT);
+ }
+ }
+ } else {
+ login_homemode = _pam_conv_str_umask_to_homemode(opt->umask);
+ }
+
/* fork */
child = fork();
if (child == 0) {
static char *envp[] = { NULL };
- const char *args[] = { NULL, NULL, NULL, NULL, NULL };
+ const char *args[] = { NULL, NULL, NULL, NULL, NULL, NULL };
if (pam_modutil_sanitize_helper_fds(pamh, PAM_MODUTIL_PIPE_FD,
PAM_MODUTIL_PIPE_FD,
@@ -136,8 +167,9 @@ create_homedir (pam_handle_t *pamh, options_t *opt,
/* exec the mkhomedir helper */
args[0] = MKHOMEDIR_HELPER;
args[1] = user;
- args[2] = opt->umask;
+ args[2] = opt->umask ? opt->umask : UMASK_DEFAULT;
args[3] = opt->skeldir;
+ args[4] = login_homemode;
DIAG_PUSH_IGNORE_CAST_QUAL;
execve(MKHOMEDIR_HELPER, (char **)args, envp);
@@ -175,6 +207,9 @@ create_homedir (pam_handle_t *pamh, options_t *opt,
dir);
}
+ free(login_umask);
+ free(login_homemode);
+
D(("returning %d", retval));
return retval;
}
diff --git a/modules/pam_motd/Makefile.in b/modules/pam_motd/Makefile.in
index 9ed9e2e4..14ab6bb8 100644
--- a/modules/pam_motd/Makefile.in
+++ b/modules/pam_motd/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_motd
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_motd/README b/modules/pam_motd/README
index cd1e27e9..01bc64e9 100644
--- a/modules/pam_motd/README
+++ b/modules/pam_motd/README
@@ -24,8 +24,9 @@ Similar overriding behavior applies to the directories. Files in /etc/motd.d/
override files with the same name in /run/motd.d/ and /usr/lib/motd.d/. Files
in /run/motd.d/ override files with the same name in /usr/lib/motd.d/.
-Files the in the directories listed above are displayed in lexicographic order
-by name.
+Files in the directories listed above are displayed in lexicographic order by
+name. Moreover, the files are filtered by reading them with the credentials of
+the target user authenticating on the system.
To silence a message, a symbolic link with target /dev/null may be placed in /
etc/motd.d with the same filename as the message to be silenced. Example:
diff --git a/modules/pam_motd/pam_motd.8 b/modules/pam_motd/pam_motd.8
index 63da02fa..a211d6ee 100644
--- a/modules/pam_motd/pam_motd.8
+++ b/modules/pam_motd/pam_motd.8
@@ -2,12 +2,12 @@
.\" Title: pam_motd
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_MOTD" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_MOTD" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -77,7 +77,7 @@ and
override files with the same name in
/usr/lib/motd\&.d/\&.
.PP
-Files the in the directories listed above are displayed in lexicographic order by name\&.
+Files in the directories listed above are displayed in lexicographic order by name\&. Moreover, the files are filtered by reading them with the credentials of the target user authenticating on the system\&.
.PP
To silence a message, a symbolic link with target
/dev/null
diff --git a/modules/pam_motd/pam_motd.8.xml b/modules/pam_motd/pam_motd.8.xml
index b533530b..0afd4c99 100644
--- a/modules/pam_motd/pam_motd.8.xml
+++ b/modules/pam_motd/pam_motd.8.xml
@@ -64,8 +64,9 @@
override files with the same name in <filename>/usr/lib/motd.d/</filename>.
</para>
<para>
- Files the in the directories listed above are displayed in
- lexicographic order by name.
+ Files in the directories listed above are displayed in lexicographic
+ order by name. Moreover, the files are filtered by reading them with the
+ credentials of the target user authenticating on the system.
</para>
<para>
To silence a message,
diff --git a/modules/pam_motd/pam_motd.c b/modules/pam_motd/pam_motd.c
index 46f4fe61..6ac8cba2 100644
--- a/modules/pam_motd/pam_motd.c
+++ b/modules/pam_motd/pam_motd.c
@@ -282,6 +282,72 @@ static void try_to_display_directories_with_overrides(pam_handle_t *pamh,
_pam_drop(dirscans);
}
+static int drop_privileges(pam_handle_t *pamh, struct pam_modutil_privs *privs)
+{
+ struct passwd *pw;
+ const char *username;
+ int retval;
+
+ retval = pam_get_user(pamh, &username, NULL);
+
+ if (retval == PAM_SUCCESS) {
+ pw = pam_modutil_getpwnam (pamh, username);
+ } else {
+ return PAM_SESSION_ERR;
+ }
+
+ if (pw == NULL || pam_modutil_drop_priv(pamh, privs, pw)) {
+ return PAM_SESSION_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
+static int try_to_display(pam_handle_t *pamh, char **motd_path_split,
+ unsigned int num_motd_paths,
+ char **motd_dir_path_split,
+ unsigned int num_motd_dir_paths, int report_missing)
+{
+ PAM_MODUTIL_DEF_PRIVS(privs);
+
+ if (drop_privileges(pamh, &privs) != PAM_SUCCESS) {
+ pam_syslog(pamh, LOG_ERR, "Unable to drop privileges");
+ return PAM_SESSION_ERR;
+ }
+
+ if (motd_path_split != NULL) {
+ unsigned int i;
+
+ for (i = 0; i < num_motd_paths; i++) {
+ int fd = open(motd_path_split[i], O_RDONLY, 0);
+
+ if (fd >= 0) {
+ try_to_display_fd(pamh, fd);
+ close(fd);
+
+ /* We found and displayed a file,
+ * move onto next filename.
+ */
+ break;
+ }
+ }
+ }
+
+ if (motd_dir_path_split != NULL) {
+ try_to_display_directories_with_overrides(pamh,
+ motd_dir_path_split,
+ num_motd_dir_paths,
+ report_missing);
+ }
+
+ if (pam_modutil_regain_priv(pamh, &privs)) {
+ pam_syslog(pamh, LOG_ERR, "Unable to regain privileges");
+ return PAM_SESSION_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
int pam_sm_open_session(pam_handle_t *pamh, int flags,
int argc, const char **argv)
{
@@ -358,25 +424,9 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags,
}
}
- if (motd_path_split != NULL) {
- unsigned int i;
-
- for (i = 0; i < num_motd_paths; i++) {
- int fd = open(motd_path_split[i], O_RDONLY, 0);
-
- if (fd >= 0) {
- try_to_display_fd(pamh, fd);
- close(fd);
-
- /* We found and displayed a file, move onto next filename. */
- break;
- }
- }
- }
-
- if (motd_dir_path_split != NULL)
- try_to_display_directories_with_overrides(pamh, motd_dir_path_split,
- num_motd_dir_paths, report_missing);
+ retval = try_to_display(pamh, motd_path_split, num_motd_paths,
+ motd_dir_path_split, num_motd_dir_paths,
+ report_missing);
out:
_pam_drop(motd_path_copy);
@@ -384,9 +434,12 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags,
_pam_drop(motd_dir_path_copy);
_pam_drop(motd_dir_path_split);
- retval = pam_putenv(pamh, "MOTD_SHOWN=pam");
-
- return retval == PAM_SUCCESS ? PAM_IGNORE : retval;
+ if (retval == PAM_SUCCESS) {
+ retval = pam_putenv(pamh, "MOTD_SHOWN=pam");
+ return retval == PAM_SUCCESS ? PAM_IGNORE : retval;
+ } else {
+ return retval;
+ }
}
/* end of module definition */
diff --git a/modules/pam_namespace/Makefile.am b/modules/pam_namespace/Makefile.am
index 21e1b33a..47cc38e1 100644
--- a/modules/pam_namespace/Makefile.am
+++ b/modules/pam_namespace/Makefile.am
@@ -18,7 +18,7 @@ TESTS = $(dist_check_SCRIPTS)
securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
namespaceddir = $(SCONFIGDIR)/namespace.d
-servicedir = $(prefix)/lib/systemd/system
+servicedir = $(systemdunitdir)
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
-DSECURECONF_DIR=\"$(SCONFIGDIR)/\" $(WARN_CFLAGS)
diff --git a/modules/pam_namespace/Makefile.in b/modules/pam_namespace/Makefile.in
index 7524287e..e21c836d 100644
--- a/modules/pam_namespace/Makefile.in
+++ b/modules/pam_namespace/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -99,18 +99,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_namespace
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -384,6 +387,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -430,6 +434,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -443,6 +450,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -462,7 +471,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -509,8 +517,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -521,6 +527,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -570,7 +577,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -578,9 +584,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -590,6 +593,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -604,7 +608,7 @@ TESTS = $(dist_check_SCRIPTS)
securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
namespaceddir = $(SCONFIGDIR)/namespace.d
-servicedir = $(prefix)/lib/systemd/system
+servicedir = $(systemdunitdir)
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
-DSECURECONF_DIR=\"$(SCONFIGDIR)/\" $(WARN_CFLAGS)
@@ -1094,7 +1098,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_namespace/md5.c b/modules/pam_namespace/md5.c
index b9a7f084..22e41ee0 100644
--- a/modules/pam_namespace/md5.c
+++ b/modules/pam_namespace/md5.c
@@ -18,14 +18,12 @@
*
*/
-#include <string.h>
#include "md5.h"
+#include <string.h>
#define MD5Name(x) x
-#if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
-#define byteReverse(buf, len) /* Nothing */
-#else
+#ifdef WORDS_BIGENDIAN
typedef unsigned char PAM_ATTRIBUTE_ALIGNED(4) uint8_aligned;
static void byteReverse(uint8_aligned *buf, unsigned longs);
@@ -43,6 +41,8 @@ static void byteReverse(uint8_aligned *buf, unsigned longs)
buf += 4;
} while (--longs);
}
+#else
+#define byteReverse(buf, len) /* Nothing */
#endif
/*
@@ -51,10 +51,10 @@ static void byteReverse(uint8_aligned *buf, unsigned longs)
*/
void MD5Name(MD5Init)(struct MD5Context *ctx)
{
- ctx->buf[0] = 0x67452301U;
- ctx->buf[1] = 0xefcdab89U;
- ctx->buf[2] = 0x98badcfeU;
- ctx->buf[3] = 0x10325476U;
+ ctx->buf.i[0] = 0x67452301U;
+ ctx->buf.i[1] = 0xefcdab89U;
+ ctx->buf.i[2] = 0x98badcfeU;
+ ctx->buf.i[3] = 0x10325476U;
ctx->bits[0] = 0;
ctx->bits[1] = 0;
@@ -80,7 +80,7 @@ void MD5Name(MD5Update)(struct MD5Context *ctx, unsigned const char *buf, unsign
/* Handle any leading odd-sized chunks */
if (t) {
- unsigned char *p = (unsigned char *) ctx->in + t;
+ unsigned char *p = ctx->in.c + t;
t = 64 - t;
if (len < t) {
@@ -88,24 +88,24 @@ void MD5Name(MD5Update)(struct MD5Context *ctx, unsigned const char *buf, unsign
return;
}
memcpy(p, buf, t);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
buf += t;
len -= t;
}
/* Process data in 64-byte chunks */
while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ memcpy(ctx->in.c, buf, 64);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
buf += 64;
len -= 64;
}
/* Handle any remaining bytes of data. */
- memcpy(ctx->in, buf, len);
+ memcpy(ctx->in.c, buf, len);
}
/*
@@ -122,7 +122,7 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx)
/* Set the first char of padding to 0x80. This is safe since there is
always at least one byte free */
- p = ctx->in + count;
+ p = ctx->in.c + count;
*p++ = 0x80;
/* Bytes of padding needed to make 64 bytes */
@@ -132,23 +132,23 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx)
if (count < 8) {
/* Two lots of padding: Pad the first block to 64 bytes */
memset(p, 0, count);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
/* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
+ memset(ctx->in.c, 0, 56);
} else {
/* Pad block to 56 bytes */
memset(p, 0, count - 8);
}
- byteReverse(ctx->in, 14);
+ byteReverse(ctx->in.c, 14);
/* Append length in bits and transform */
- memcpy((uint32 *)ctx->in + 14, ctx->bits, 2*sizeof(uint32));
+ memcpy(ctx->in.i + 14, ctx->bits, 2*sizeof(uint32));
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
- byteReverse((unsigned char *) ctx->buf, 4);
- memcpy(digest, ctx->buf, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
+ byteReverse(ctx->buf.c, 4);
+ memcpy(digest, ctx->buf.c, 16);
memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
}
diff --git a/modules/pam_namespace/md5.h b/modules/pam_namespace/md5.h
index bded3302..501aab4b 100644
--- a/modules/pam_namespace/md5.h
+++ b/modules/pam_namespace/md5.h
@@ -7,9 +7,15 @@
typedef unsigned int uint32;
struct MD5Context {
- uint32 buf[4];
+ union {
+ uint32 i[4];
+ unsigned char c[16] PAM_ATTRIBUTE_ALIGNED(4);
+ } buf;
uint32 bits[2];
- unsigned char in[64] PAM_ATTRIBUTE_ALIGNED(4);
+ union {
+ uint32 i[16];
+ unsigned char c[64] PAM_ATTRIBUTE_ALIGNED(4);
+ } in;
};
#define MD5_DIGEST_LENGTH 16
diff --git a/modules/pam_namespace/namespace.conf.5 b/modules/pam_namespace/namespace.conf.5
index be186c9d..ff122cbf 100644
--- a/modules/pam_namespace/namespace.conf.5
+++ b/modules/pam_namespace/namespace.conf.5
@@ -2,12 +2,12 @@
.\" Title: namespace.conf
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "NAMESPACE\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "NAMESPACE\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_namespace/pam_namespace.8 b/modules/pam_namespace/pam_namespace.8
index 6fca41f4..d0afb6c6 100644
--- a/modules/pam_namespace/pam_namespace.8
+++ b/modules/pam_namespace/pam_namespace.8
@@ -2,12 +2,12 @@
.\" Title: pam_namespace
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_NAMESPACE" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_NAMESPACE" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -142,37 +142,7 @@ For the <service>s you need polyinstantiation (login for example) put the follow
.PP
session required pam_namespace\&.so [arguments]
.PP
-To use polyinstantiation with graphical display manager gdm, insert the following line, before exit 0, in /etc/gdm/PostSession/Default:
-.PP
-/usr/sbin/gdm\-safe\-restart
-.PP
-This allows gdm to restart after each session and appropriately adjust namespaces of display manager and the X server\&. If polyinstantiation of /tmp is desired along with the graphical environment, then additional configuration changes are needed to address the interaction of X server and font server namespaces with their use of /tmp to create communication sockets\&. Please use the initialization script
-/etc/security/namespace\&.init
-to ensure that the X server and its clients can appropriately access the communication socket X0\&. Please refer to the sample instructions provided in the comment section of the instance initialization script
-/etc/security/namespace\&.init\&. In addition, perform the following changes to use graphical environment with polyinstantiation of /tmp:
-.PP
-.if n \{\
-.RS 4
-.\}
-.nf
- 1\&. Disable the use of font server by commenting out "FontPath"
- line in /etc/X11/xorg\&.conf\&. If you do want to use the font server
- then you will have to augment the instance initialization
- script to appropriately provide /tmp/\&.font\-unix from the
- polyinstantiated /tmp\&.
- 2\&. Ensure that the gdm service is setup to use pam_namespace,
- as described above, by modifying /etc/pam\&.d/gdm\&.
- 3\&. Ensure that the display manager is configured to restart X server
- with each new session\&. This default setup can be verified by
- making sure that /usr/share/gdm/defaults\&.conf contains
- "AlwaysRestartServer=true", and it is not overridden by
- /etc/gdm/custom\&.conf\&.
-
-.fi
-.if n \{\
-.RE
-.\}
-.sp
+To use polyinstantiation with graphical display manager gdm, please refer to gdm\*(Aqs documentation\&.
.SH "SEE ALSO"
.PP
\fBnamespace.conf\fR(5),
diff --git a/modules/pam_namespace/pam_namespace.8.xml b/modules/pam_namespace/pam_namespace.8.xml
index f0f80d33..57c44c4b 100644
--- a/modules/pam_namespace/pam_namespace.8.xml
+++ b/modules/pam_namespace/pam_namespace.8.xml
@@ -343,45 +343,8 @@
</para>
<para>
- To use polyinstantiation with graphical display manager gdm, insert the
- following line, before exit 0, in /etc/gdm/PostSession/Default:
- </para>
-
- <para>
- /usr/sbin/gdm-safe-restart
- </para>
-
- <para>
- This allows gdm to restart after each session and appropriately adjust
- namespaces of display manager and the X server. If polyinstantiation
- of /tmp is desired along with the graphical environment, then additional
- configuration changes are needed to address the interaction of X server
- and font server namespaces with their use of /tmp to create
- communication sockets. Please use the initialization script
- <filename>/etc/security/namespace.init</filename> to ensure that
- the X server and its clients can appropriately access the
- communication socket X0. Please refer to the sample instructions
- provided in the comment section of the instance initialization script
- <filename>/etc/security/namespace.init</filename>. In addition,
- perform the following changes to use graphical environment with
- polyinstantiation of /tmp:
- </para>
-
- <para>
- <literallayout>
- 1. Disable the use of font server by commenting out "FontPath"
- line in /etc/X11/xorg.conf. If you do want to use the font server
- then you will have to augment the instance initialization
- script to appropriately provide /tmp/.font-unix from the
- polyinstantiated /tmp.
- 2. Ensure that the gdm service is setup to use pam_namespace,
- as described above, by modifying /etc/pam.d/gdm.
- 3. Ensure that the display manager is configured to restart X server
- with each new session. This default setup can be verified by
- making sure that /usr/share/gdm/defaults.conf contains
- "AlwaysRestartServer=true", and it is not overridden by
- /etc/gdm/custom.conf.
- </literallayout>
+ To use polyinstantiation with graphical display manager gdm, please refer
+ to gdm's documentation.
</para>
</refsect1>
diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c
index 63b5c665..4d4188d0 100644
--- a/modules/pam_namespace/pam_namespace.c
+++ b/modules/pam_namespace/pam_namespace.c
@@ -797,11 +797,11 @@ static char *md5hash(const char *instname, struct instance_data *idata)
#ifdef WITH_SELINUX
static int form_context(const struct polydir_s *polyptr,
- security_context_t *i_context, security_context_t *origcon,
+ char **i_context, char **origcon,
struct instance_data *idata)
{
int rc = PAM_SUCCESS;
- security_context_t scon = NULL;
+ char *scon = NULL;
security_class_t tclass;
/*
@@ -844,6 +844,12 @@ static int form_context(const struct polydir_s *polyptr,
if (polyptr->method == CONTEXT) {
tclass = string_to_security_class("dir");
+ if (tclass == 0) {
+ pam_syslog(idata->pamh, LOG_ERR,
+ "Error getting dir security class");
+ freecon(scon);
+ return PAM_SESSION_ERR;
+ }
if (security_compute_member(scon, *origcon, tclass,
i_context) < 0) {
@@ -910,7 +916,7 @@ static int form_context(const struct polydir_s *polyptr,
*/
#ifdef WITH_SELINUX
static int poly_name(const struct polydir_s *polyptr, char **i_name,
- security_context_t *i_context, security_context_t *origcon,
+ char **i_context, char **origcon,
struct instance_data *idata)
#else
static int poly_name(const struct polydir_s *polyptr, char **i_name,
@@ -921,7 +927,7 @@ static int poly_name(const struct polydir_s *polyptr, char **i_name,
char *hash = NULL;
enum polymethod pm;
#ifdef WITH_SELINUX
- security_context_t rawcon = NULL;
+ char *rawcon = NULL;
#endif
*i_name = NULL;
@@ -1318,7 +1324,8 @@ static int create_polydir(struct polydir_s *polyptr,
mode_t mode;
int rc;
#ifdef WITH_SELINUX
- security_context_t dircon, oldcon = NULL;
+ char *dircon_raw, *oldcon_raw = NULL;
+ struct selabel_handle *label_handle;
#endif
const char *dir = polyptr->dir;
uid_t uid;
@@ -1331,21 +1338,28 @@ static int create_polydir(struct polydir_s *polyptr,
#ifdef WITH_SELINUX
if (idata->flags & PAMNS_SELINUX_ENABLED) {
- getfscreatecon(&oldcon);
- rc = matchpathcon(dir, S_IFDIR, &dircon);
- if (rc) {
- pam_syslog(idata->pamh, LOG_NOTICE,
- "Unable to get default context for directory %s, check your policy: %m", dir);
- } else {
- if (idata->flags & PAMNS_DEBUG)
- pam_syslog(idata->pamh, LOG_DEBUG,
- "Polydir %s context: %s", dir, (char *)dircon);
- if (setfscreatecon(dircon) != 0)
+ getfscreatecon_raw(&oldcon_raw);
+
+ label_handle = selabel_open(SELABEL_CTX_FILE, NULL, 0);
+ if (!label_handle) {
+ pam_syslog(idata->pamh, LOG_NOTICE,
+ "Unable to initialize SELinux labeling handle: %m");
+ } else {
+ rc = selabel_lookup_raw(label_handle, &dircon_raw, dir, S_IFDIR);
+ if (rc) {
pam_syslog(idata->pamh, LOG_NOTICE,
- "Error setting context for directory %s: %m", dir);
- freecon(dircon);
- }
- matchpathcon_fini();
+ "Unable to get default context for directory %s, check your policy: %m", dir);
+ } else {
+ if (idata->flags & PAMNS_DEBUG)
+ pam_syslog(idata->pamh, LOG_DEBUG,
+ "Polydir %s context: %s", dir, dircon_raw);
+ if (setfscreatecon_raw(dircon_raw) != 0)
+ pam_syslog(idata->pamh, LOG_NOTICE,
+ "Error setting context for directory %s: %m", dir);
+ freecon(dircon_raw);
+ }
+ selabel_close(label_handle);
+ }
}
#endif
@@ -1358,10 +1372,10 @@ static int create_polydir(struct polydir_s *polyptr,
#ifdef WITH_SELINUX
if (idata->flags & PAMNS_SELINUX_ENABLED) {
- if (setfscreatecon(oldcon) != 0)
+ if (setfscreatecon_raw(oldcon_raw) != 0)
pam_syslog(idata->pamh, LOG_NOTICE,
"Error resetting fs create context: %m");
- freecon(oldcon);
+ freecon(oldcon_raw);
}
#endif
@@ -1413,7 +1427,7 @@ static int create_polydir(struct polydir_s *polyptr,
*/
#ifdef WITH_SELINUX
static int create_instance(struct polydir_s *polyptr, char *ipath, struct stat *statbuf,
- security_context_t icontext, security_context_t ocontext,
+ const char *icontext, const char *ocontext,
struct instance_data *idata)
#else
static int create_instance(struct polydir_s *polyptr, char *ipath, struct stat *statbuf,
@@ -1488,6 +1502,7 @@ static int create_instance(struct polydir_s *polyptr, char *ipath, struct stat *
if (fstat(fd, &newstatbuf) < 0) {
pam_syslog(idata->pamh, LOG_ERR, "Error stating %s, %m",
ipath);
+ close(fd);
rmdir(ipath);
return PAM_SESSION_ERR;
}
@@ -1530,7 +1545,7 @@ static int ns_setup(struct polydir_s *polyptr,
char *instname = NULL;
struct stat statbuf;
#ifdef WITH_SELINUX
- security_context_t instcontext = NULL, origcontext = NULL;
+ char *instcontext = NULL, *origcontext = NULL;
#endif
if (idata->flags & PAMNS_DEBUG)
@@ -1965,7 +1980,7 @@ static int orig_namespace(struct instance_data *idata)
*/
static int ctxt_based_inst_needed(void)
{
- security_context_t scon = NULL;
+ char *scon = NULL;
int rc = 0;
rc = getexeccon(&scon);
diff --git a/modules/pam_namespace/pam_namespace.h b/modules/pam_namespace/pam_namespace.h
index 3a1e4ba3..b51f2841 100644
--- a/modules/pam_namespace/pam_namespace.h
+++ b/modules/pam_namespace/pam_namespace.h
@@ -68,6 +68,7 @@
#include <selinux/selinux.h>
#include <selinux/get_context_list.h>
#include <selinux/context.h>
+#include <selinux/label.h>
#endif
#ifndef CLONE_NEWNS
diff --git a/modules/pam_namespace/pam_namespace_helper.8 b/modules/pam_namespace/pam_namespace_helper.8
index 88fbe71f..df93df2e 100644
--- a/modules/pam_namespace/pam_namespace_helper.8
+++ b/modules/pam_namespace/pam_namespace_helper.8
@@ -2,12 +2,12 @@
.\" Title: pam_namespace_helper
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_NAMESPACE_HELPER" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_NAMESPACE_HELPER" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_nologin/Makefile.in b/modules/pam_nologin/Makefile.in
index 7b8690ac..0e84bd69 100644
--- a/modules/pam_nologin/Makefile.in
+++ b/modules/pam_nologin/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_nologin-retval$(EXEEXT)
subdir = modules/pam_nologin
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -379,6 +382,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -423,6 +427,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -436,6 +443,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -455,7 +464,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -502,8 +510,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -514,6 +520,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -563,7 +570,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -571,9 +577,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -583,6 +586,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -933,7 +937,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_nologin/pam_nologin.8 b/modules/pam_nologin/pam_nologin.8
index 200f6a60..df0c255e 100644
--- a/modules/pam_nologin/pam_nologin.8
+++ b/modules/pam_nologin/pam_nologin.8
@@ -2,12 +2,12 @@
.\" Title: pam_nologin
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_NOLOGIN" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_NOLOGIN" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_permit/Makefile.in b/modules/pam_permit/Makefile.in
index 372ba94d..10941722 100644
--- a/modules/pam_permit/Makefile.in
+++ b/modules/pam_permit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_permit-retval$(EXEEXT)
subdir = modules/pam_permit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_permit/pam_permit.8 b/modules/pam_permit/pam_permit.8
index dc184eb0..88dff2bb 100644
--- a/modules/pam_permit/pam_permit.8
+++ b/modules/pam_permit/pam_permit.8
@@ -2,12 +2,12 @@
.\" Title: pam_permit
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_PERMIT" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_PERMIT" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_pwhistory/Makefile.am b/modules/pam_pwhistory/Makefile.am
index bd9f1ea9..8a4dbcb2 100644
--- a/modules/pam_pwhistory/Makefile.am
+++ b/modules/pam_pwhistory/Makefile.am
@@ -1,5 +1,6 @@
#
# Copyright (c) 2008, 2009 Thorsten Kukuk <kukuk@suse.de>
+# Copyright (c) 2013 Red Hat, Inc.
#
CLEANFILES = *~
@@ -8,9 +9,9 @@ MAINTAINERCLEANFILES = $(MANS) README
EXTRA_DIST = $(XMLS)
if HAVE_DOC
-dist_man_MANS = pam_pwhistory.8
+dist_man_MANS = pam_pwhistory.8 pwhistory_helper.8
endif
-XMLS = README.xml pam_pwhistory.8.xml
+XMLS = README.xml pam_pwhistory.8.xml pwhistory_helper.8.xml
dist_check_SCRIPTS = tst-pam_pwhistory
TESTS = $(dist_check_SCRIPTS)
@@ -18,18 +19,26 @@ securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-AM_LDFLAGS = -no-undefined -avoid-version -module
+ $(WARN_CFLAGS) -DPWHISTORY_HELPER=\"$(sbindir)/pwhistory_helper\"
+
+pam_pwhistory_la_LDFLAGS = -no-undefined -avoid-version -module
if HAVE_VERSIONING
- AM_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
+ pam_pwhistory_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
endif
noinst_HEADERS = opasswd.h
securelib_LTLIBRARIES = pam_pwhistory.la
-pam_pwhistory_la_LIBADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@
+pam_pwhistory_la_CFLAGS = $(AM_CFLAGS)
+pam_pwhistory_la_LIBADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@ @LIBSELINUX@
pam_pwhistory_la_SOURCES = pam_pwhistory.c opasswd.c
+sbin_PROGRAMS = pwhistory_helper
+pwhistory_helper_CFLAGS = $(AM_CFLAGS) -DHELPER_COMPILE=\"pwhistory_helper\" @EXE_CFLAGS@
+pwhistory_helper_SOURCES = pwhistory_helper.c opasswd.c
+pwhistory_helper_LDFLAGS = @EXE_LDFLAGS@
+pwhistory_helper_LDADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@
+
if ENABLE_REGENERATE_MAN
dist_noinst_DATA = README
-include $(top_srcdir)/Make.xml.rules
diff --git a/modules/pam_pwhistory/Makefile.in b/modules/pam_pwhistory/Makefile.in
index 42a6907d..cf1082b0 100644
--- a/modules/pam_pwhistory/Makefile.in
+++ b/modules/pam_pwhistory/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,10 +16,12 @@
#
# Copyright (c) 2008, 2009 Thorsten Kukuk <kukuk@suse.de>
+# Copyright (c) 2013 Red Hat, Inc.
#
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -95,20 +97,24 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
+sbin_PROGRAMS = pwhistory_helper$(EXEEXT)
subdir = modules/pam_pwhistory
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -118,6 +124,9 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" \
+ "$(DESTDIR)$(man8dir)"
+PROGRAMS = $(sbin_PROGRAMS)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -145,15 +154,28 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"
LTLIBRARIES = $(securelib_LTLIBRARIES)
pam_pwhistory_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
-am_pam_pwhistory_la_OBJECTS = pam_pwhistory.lo opasswd.lo
+am_pam_pwhistory_la_OBJECTS = pam_pwhistory_la-pam_pwhistory.lo \
+ pam_pwhistory_la-opasswd.lo
pam_pwhistory_la_OBJECTS = $(am_pam_pwhistory_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+pam_pwhistory_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(pam_pwhistory_la_CFLAGS) $(CFLAGS) \
+ $(pam_pwhistory_la_LDFLAGS) $(LDFLAGS) -o $@
+am_pwhistory_helper_OBJECTS = \
+ pwhistory_helper-pwhistory_helper.$(OBJEXT) \
+ pwhistory_helper-opasswd.$(OBJEXT)
+pwhistory_helper_OBJECTS = $(am_pwhistory_helper_OBJECTS)
+pwhistory_helper_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
+pwhistory_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(pwhistory_helper_CFLAGS) $(CFLAGS) \
+ $(pwhistory_helper_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -169,8 +191,10 @@ am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/opasswd.Plo \
- ./$(DEPDIR)/pam_pwhistory.Plo
+am__depfiles_remade = ./$(DEPDIR)/pam_pwhistory_la-opasswd.Plo \
+ ./$(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Plo \
+ ./$(DEPDIR)/pwhistory_helper-opasswd.Po \
+ ./$(DEPDIR)/pwhistory_helper-pwhistory_helper.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -190,8 +214,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(pam_pwhistory_la_SOURCES)
-DIST_SOURCES = $(pam_pwhistory_la_SOURCES)
+SOURCES = $(pam_pwhistory_la_SOURCES) $(pwhistory_helper_SOURCES)
+DIST_SOURCES = $(pam_pwhistory_la_SOURCES) $(pwhistory_helper_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -377,6 +401,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -421,6 +446,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -434,6 +462,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -453,7 +483,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -500,8 +529,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -512,6 +539,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -561,7 +589,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -569,9 +596,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -581,6 +605,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -588,20 +613,26 @@ top_srcdir = @top_srcdir@
CLEANFILES = *~
MAINTAINERCLEANFILES = $(MANS) README
EXTRA_DIST = $(XMLS)
-@HAVE_DOC_TRUE@dist_man_MANS = pam_pwhistory.8
-XMLS = README.xml pam_pwhistory.8.xml
+@HAVE_DOC_TRUE@dist_man_MANS = pam_pwhistory.8 pwhistory_helper.8
+XMLS = README.xml pam_pwhistory.8.xml pwhistory_helper.8.xml
dist_check_SCRIPTS = tst-pam_pwhistory
TESTS = $(dist_check_SCRIPTS)
securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
+ $(WARN_CFLAGS) -DPWHISTORY_HELPER=\"$(sbindir)/pwhistory_helper\"
-AM_LDFLAGS = -no-undefined -avoid-version -module $(am__append_1)
+pam_pwhistory_la_LDFLAGS = -no-undefined -avoid-version -module \
+ $(am__append_1)
noinst_HEADERS = opasswd.h
securelib_LTLIBRARIES = pam_pwhistory.la
-pam_pwhistory_la_LIBADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@
+pam_pwhistory_la_CFLAGS = $(AM_CFLAGS)
+pam_pwhistory_la_LIBADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@ @LIBSELINUX@
pam_pwhistory_la_SOURCES = pam_pwhistory.c opasswd.c
+pwhistory_helper_CFLAGS = $(AM_CFLAGS) -DHELPER_COMPILE=\"pwhistory_helper\" @EXE_CFLAGS@
+pwhistory_helper_SOURCES = pwhistory_helper.c opasswd.c
+pwhistory_helper_LDFLAGS = @EXE_LDFLAGS@
+pwhistory_helper_LDADD = $(top_builddir)/libpam/libpam.la @LIBCRYPT@
@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
all: all-am
@@ -636,6 +667,55 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ || test -f $$p1 \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-sbinPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(sbindir)" && rm -f $$files
+
+clean-sbinPROGRAMS:
+ @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
install-securelibLTLIBRARIES: $(securelib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@@ -673,7 +753,11 @@ clean-securelibLTLIBRARIES:
}
pam_pwhistory.la: $(pam_pwhistory_la_OBJECTS) $(pam_pwhistory_la_DEPENDENCIES) $(EXTRA_pam_pwhistory_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) -rpath $(securelibdir) $(pam_pwhistory_la_OBJECTS) $(pam_pwhistory_la_LIBADD) $(LIBS)
+ $(AM_V_CCLD)$(pam_pwhistory_la_LINK) -rpath $(securelibdir) $(pam_pwhistory_la_OBJECTS) $(pam_pwhistory_la_LIBADD) $(LIBS)
+
+pwhistory_helper$(EXEEXT): $(pwhistory_helper_OBJECTS) $(pwhistory_helper_DEPENDENCIES) $(EXTRA_pwhistory_helper_DEPENDENCIES)
+ @rm -f pwhistory_helper$(EXEEXT)
+ $(AM_V_CCLD)$(pwhistory_helper_LINK) $(pwhistory_helper_OBJECTS) $(pwhistory_helper_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -681,8 +765,10 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opasswd.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pwhistory.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pwhistory_la-opasswd.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwhistory_helper-opasswd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwhistory_helper-pwhistory_helper.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@@ -711,6 +797,48 @@ am--depfiles: $(am__depfiles_remade)
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+pam_pwhistory_la-pam_pwhistory.lo: pam_pwhistory.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_pwhistory_la_CFLAGS) $(CFLAGS) -MT pam_pwhistory_la-pam_pwhistory.lo -MD -MP -MF $(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Tpo -c -o pam_pwhistory_la-pam_pwhistory.lo `test -f 'pam_pwhistory.c' || echo '$(srcdir)/'`pam_pwhistory.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Tpo $(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pam_pwhistory.c' object='pam_pwhistory_la-pam_pwhistory.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_pwhistory_la_CFLAGS) $(CFLAGS) -c -o pam_pwhistory_la-pam_pwhistory.lo `test -f 'pam_pwhistory.c' || echo '$(srcdir)/'`pam_pwhistory.c
+
+pam_pwhistory_la-opasswd.lo: opasswd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_pwhistory_la_CFLAGS) $(CFLAGS) -MT pam_pwhistory_la-opasswd.lo -MD -MP -MF $(DEPDIR)/pam_pwhistory_la-opasswd.Tpo -c -o pam_pwhistory_la-opasswd.lo `test -f 'opasswd.c' || echo '$(srcdir)/'`opasswd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pam_pwhistory_la-opasswd.Tpo $(DEPDIR)/pam_pwhistory_la-opasswd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='opasswd.c' object='pam_pwhistory_la-opasswd.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_pwhistory_la_CFLAGS) $(CFLAGS) -c -o pam_pwhistory_la-opasswd.lo `test -f 'opasswd.c' || echo '$(srcdir)/'`opasswd.c
+
+pwhistory_helper-pwhistory_helper.o: pwhistory_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -MT pwhistory_helper-pwhistory_helper.o -MD -MP -MF $(DEPDIR)/pwhistory_helper-pwhistory_helper.Tpo -c -o pwhistory_helper-pwhistory_helper.o `test -f 'pwhistory_helper.c' || echo '$(srcdir)/'`pwhistory_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwhistory_helper-pwhistory_helper.Tpo $(DEPDIR)/pwhistory_helper-pwhistory_helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwhistory_helper.c' object='pwhistory_helper-pwhistory_helper.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -c -o pwhistory_helper-pwhistory_helper.o `test -f 'pwhistory_helper.c' || echo '$(srcdir)/'`pwhistory_helper.c
+
+pwhistory_helper-pwhistory_helper.obj: pwhistory_helper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -MT pwhistory_helper-pwhistory_helper.obj -MD -MP -MF $(DEPDIR)/pwhistory_helper-pwhistory_helper.Tpo -c -o pwhistory_helper-pwhistory_helper.obj `if test -f 'pwhistory_helper.c'; then $(CYGPATH_W) 'pwhistory_helper.c'; else $(CYGPATH_W) '$(srcdir)/pwhistory_helper.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwhistory_helper-pwhistory_helper.Tpo $(DEPDIR)/pwhistory_helper-pwhistory_helper.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwhistory_helper.c' object='pwhistory_helper-pwhistory_helper.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -c -o pwhistory_helper-pwhistory_helper.obj `if test -f 'pwhistory_helper.c'; then $(CYGPATH_W) 'pwhistory_helper.c'; else $(CYGPATH_W) '$(srcdir)/pwhistory_helper.c'; fi`
+
+pwhistory_helper-opasswd.o: opasswd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -MT pwhistory_helper-opasswd.o -MD -MP -MF $(DEPDIR)/pwhistory_helper-opasswd.Tpo -c -o pwhistory_helper-opasswd.o `test -f 'opasswd.c' || echo '$(srcdir)/'`opasswd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwhistory_helper-opasswd.Tpo $(DEPDIR)/pwhistory_helper-opasswd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='opasswd.c' object='pwhistory_helper-opasswd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -c -o pwhistory_helper-opasswd.o `test -f 'opasswd.c' || echo '$(srcdir)/'`opasswd.c
+
+pwhistory_helper-opasswd.obj: opasswd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -MT pwhistory_helper-opasswd.obj -MD -MP -MF $(DEPDIR)/pwhistory_helper-opasswd.Tpo -c -o pwhistory_helper-opasswd.obj `if test -f 'opasswd.c'; then $(CYGPATH_W) 'opasswd.c'; else $(CYGPATH_W) '$(srcdir)/opasswd.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pwhistory_helper-opasswd.Tpo $(DEPDIR)/pwhistory_helper-opasswd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='opasswd.c' object='pwhistory_helper-opasswd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pwhistory_helper_CFLAGS) $(CFLAGS) -c -o pwhistory_helper-opasswd.obj `if test -f 'opasswd.c'; then $(CYGPATH_W) 'opasswd.c'; else $(CYGPATH_W) '$(srcdir)/opasswd.c'; fi`
+
mostlyclean-libtool:
-rm -f *.lo
@@ -919,7 +1047,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@@ -1012,9 +1140,9 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(MANS) $(DATA) $(HEADERS)
+all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) $(DATA) $(HEADERS)
installdirs:
- for dir in "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
+ for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -1054,12 +1182,14 @@ maintainer-clean-generic:
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
-clean-am: clean-generic clean-libtool clean-securelibLTLIBRARIES \
- mostlyclean-am
+clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
+ clean-securelibLTLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -f ./$(DEPDIR)/opasswd.Plo
- -rm -f ./$(DEPDIR)/pam_pwhistory.Plo
+ -rm -f ./$(DEPDIR)/pam_pwhistory_la-opasswd.Plo
+ -rm -f ./$(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Plo
+ -rm -f ./$(DEPDIR)/pwhistory_helper-opasswd.Po
+ -rm -f ./$(DEPDIR)/pwhistory_helper-pwhistory_helper.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -1082,7 +1212,7 @@ install-dvi: install-dvi-am
install-dvi-am:
-install-exec-am:
+install-exec-am: install-sbinPROGRAMS
install-html: install-html-am
@@ -1105,8 +1235,10 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/opasswd.Plo
- -rm -f ./$(DEPDIR)/pam_pwhistory.Plo
+ -rm -f ./$(DEPDIR)/pam_pwhistory_la-opasswd.Plo
+ -rm -f ./$(DEPDIR)/pam_pwhistory_la-pam_pwhistory.Plo
+ -rm -f ./$(DEPDIR)/pwhistory_helper-opasswd.Po
+ -rm -f ./$(DEPDIR)/pwhistory_helper-pwhistory_helper.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -1123,14 +1255,15 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-man uninstall-securelibLTLIBRARIES
+uninstall-am: uninstall-man uninstall-sbinPROGRAMS \
+ uninstall-securelibLTLIBRARIES
uninstall-man: uninstall-man8
.MAKE: check-am install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
- check-am clean clean-generic clean-libtool \
+ check-am clean clean-generic clean-libtool clean-sbinPROGRAMS \
clean-securelibLTLIBRARIES cscopelist-am ctags ctags-am \
distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
@@ -1138,13 +1271,14 @@ uninstall-man: uninstall-man8
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am \
+ install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
install-securelibLTLIBRARIES install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
recheck tags tags-am uninstall uninstall-am uninstall-man \
- uninstall-man8 uninstall-securelibLTLIBRARIES
+ uninstall-man8 uninstall-sbinPROGRAMS \
+ uninstall-securelibLTLIBRARIES
.PRECIOUS: Makefile
diff --git a/modules/pam_pwhistory/README b/modules/pam_pwhistory/README
index 1634249b..161bebc7 100644
--- a/modules/pam_pwhistory/README
+++ b/modules/pam_pwhistory/README
@@ -23,7 +23,7 @@ use_authtok
When password changing enforce the module to use the new password provided
by a previously stacked password module (this is used in the example of the
- stacking of the pam_cracklib module documented below).
+ stacking of the pam_passwdqc module documented below).
enforce_for_root
@@ -52,10 +52,10 @@ password required pam_pwhistory.so
password required pam_unix.so use_authtok
-In combination with pam_cracklib:
+In combination with pam_passwdqc:
#%PAM-1.0
-password required pam_cracklib.so retry=3
+password required pam_passwdqc.so config=/etc/passwdqc.conf
password required pam_pwhistory.so use_authtok
password required pam_unix.so use_authtok
diff --git a/modules/pam_pwhistory/opasswd.c b/modules/pam_pwhistory/opasswd.c
index 77142f2c..a6cd3d2a 100644
--- a/modules/pam_pwhistory/opasswd.c
+++ b/modules/pam_pwhistory/opasswd.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2008 Thorsten Kukuk <kukuk@suse.de>
+ * Copyright (c) 2013 Red Hat, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -38,6 +39,7 @@
#endif
#include <pwd.h>
+#include <shadow.h>
#include <time.h>
#include <ctype.h>
#include <errno.h>
@@ -47,15 +49,23 @@
#include <string.h>
#include <stdlib.h>
#include <syslog.h>
+#ifdef HELPER_COMPILE
+#include <stdarg.h>
+#endif
#include <sys/stat.h>
-#if defined HAVE_LIBXCRYPT
-#include <xcrypt.h>
-#elif defined (HAVE_CRYPT_H)
+#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
+#ifdef HELPER_COMPILE
+#define pam_modutil_getpwnam(h,n) getpwnam(n)
+#define pam_modutil_getspnam(h,n) getspnam(n)
+#define pam_syslog(h,a,...) helper_log_err(a,__VA_ARGS__)
+#else
+#include <security/pam_modutil.h>
#include <security/pam_ext.h>
+#endif
#include <security/pam_modules.h>
#include "opasswd.h"
@@ -76,6 +86,20 @@ typedef struct {
char *old_passwords;
} opwd;
+#ifdef HELPER_COMPILE
+PAM_FORMAT((printf, 2, 3))
+void
+helper_log_err(int err, const char *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ openlog(HELPER_COMPILE, LOG_CONS | LOG_PID, LOG_AUTHPRIV);
+ vsyslog(err, format, args);
+ va_end(args);
+ closelog();
+}
+#endif
static int
parse_entry (char *line, opwd *data)
@@ -117,9 +141,8 @@ compare_password(const char *newpass, const char *oldpass)
}
/* Check, if the new password is already in the opasswd file. */
-int
-check_old_pass (pam_handle_t *pamh, const char *user,
- const char *newpass, int debug)
+PAMH_ARG_DECL(int
+check_old_pass, const char *user, const char *newpass, int debug)
{
int retval = PAM_SUCCESS;
FILE *oldpf;
@@ -128,6 +151,11 @@ check_old_pass (pam_handle_t *pamh, const char *user,
opwd entry;
int found = 0;
+#ifndef HELPER_COMPILE
+ if (SELINUX_ENABLED)
+ return PAM_PWHISTORY_RUN_HELPER;
+#endif
+
if ((oldpf = fopen (OLD_PASSWORDS_FILE, "r")) == NULL)
{
if (errno != ENOENT)
@@ -213,9 +241,8 @@ check_old_pass (pam_handle_t *pamh, const char *user,
return retval;
}
-int
-save_old_pass (pam_handle_t *pamh, const char *user, uid_t uid,
- const char *oldpass, int howmany, int debug UNUSED)
+PAMH_ARG_DECL(int
+save_old_pass, const char *user, int howmany, int debug UNUSED)
{
char opasswd_tmp[] = TMP_PASSWORDS_FILE;
struct stat opasswd_stat;
@@ -226,10 +253,35 @@ save_old_pass (pam_handle_t *pamh, const char *user, uid_t uid,
char *buf = NULL;
size_t buflen = 0;
int found = 0;
+ struct passwd *pwd;
+ const char *oldpass;
+
+ pwd = pam_modutil_getpwnam (pamh, user);
+ if (pwd == NULL)
+ return PAM_USER_UNKNOWN;
if (howmany <= 0)
return PAM_SUCCESS;
+#ifndef HELPER_COMPILE
+ if (SELINUX_ENABLED)
+ return PAM_PWHISTORY_RUN_HELPER;
+#endif
+
+ if ((strcmp(pwd->pw_passwd, "x") == 0) ||
+ ((pwd->pw_passwd[0] == '#') &&
+ (pwd->pw_passwd[1] == '#') &&
+ (strcmp(pwd->pw_name, pwd->pw_passwd + 2) == 0)))
+ {
+ struct spwd *spw = pam_modutil_getspnam (pamh, user);
+
+ if (spw == NULL)
+ return PAM_USER_UNKNOWN;
+ oldpass = spw->sp_pwdp;
+ }
+ else
+ oldpass = pwd->pw_passwd;
+
if (oldpass == NULL || *oldpass == '\0')
return PAM_SUCCESS;
@@ -452,7 +504,7 @@ save_old_pass (pam_handle_t *pamh, const char *user, uid_t uid,
{
char *out;
- if (asprintf (&out, "%s:%d:1:%s\n", user, uid, oldpass) < 0)
+ if (asprintf (&out, "%s:%d:1:%s\n", user, pwd->pw_uid, oldpass) < 0)
{
retval = PAM_AUTHTOK_ERR;
if (oldpf)
diff --git a/modules/pam_pwhistory/opasswd.h b/modules/pam_pwhistory/opasswd.h
index db3e6568..3f257288 100644
--- a/modules/pam_pwhistory/opasswd.h
+++ b/modules/pam_pwhistory/opasswd.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2008 Thorsten Kukuk <kukuk@suse.de>
+ * Copyright (c) 2013 Red Hat, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -36,10 +37,30 @@
#ifndef __OPASSWD_H__
#define __OPASSWD_H__
-extern int check_old_pass (pam_handle_t *pamh, const char *user,
- const char *newpass, int debug);
-extern int save_old_pass (pam_handle_t *pamh, const char *user,
- uid_t uid, const char *oldpass,
- int howmany, int debug);
+#define PAM_PWHISTORY_RUN_HELPER PAM_CRED_INSUFFICIENT
+
+#ifdef WITH_SELINUX
+#include <selinux/selinux.h>
+#define SELINUX_ENABLED (is_selinux_enabled()>0)
+#else
+#define SELINUX_ENABLED 0
+#endif
+
+#ifdef HELPER_COMPILE
+#define PAMH_ARG_DECL(fname, ...) fname(__VA_ARGS__)
+#else
+#define PAMH_ARG_DECL(fname, ...) fname(pam_handle_t *pamh, __VA_ARGS__)
+#endif
+
+#ifdef HELPER_COMPILE
+void
+helper_log_err(int err, const char *format, ...);
+#endif
+
+PAMH_ARG_DECL(int
+check_old_pass, const char *user, const char *newpass, int debug);
+
+PAMH_ARG_DECL(int
+save_old_pass, const char *user, int howmany, int debug);
#endif /* __OPASSWD_H__ */
diff --git a/modules/pam_pwhistory/pam_pwhistory.8 b/modules/pam_pwhistory/pam_pwhistory.8
index ba5c3235..bdbd6c8d 100644
--- a/modules/pam_pwhistory/pam_pwhistory.8
+++ b/modules/pam_pwhistory/pam_pwhistory.8
@@ -2,12 +2,12 @@
.\" Title: pam_pwhistory
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_PWHISTORY" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_PWHISTORY" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -50,7 +50,7 @@ Turns on debugging via
When password changing enforce the module to use the new password provided by a previously stacked
\fBpassword\fR
module (this is used in the example of the stacking of the
-\fBpam_cracklib\fR
+\fBpam_passwdqc\fR
module documented below)\&.
.RE
.PP
@@ -130,14 +130,14 @@ password required pam_unix\&.so use_authtok
.\}
.PP
In combination with
-\fBpam_cracklib\fR:
+\fBpam_passwdqc\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
#%PAM\-1\&.0
-password required pam_cracklib\&.so retry=3
+password required pam_passwdqc\&.so config=/etc/passwdqc\&.conf
password required pam_pwhistory\&.so use_authtok
password required pam_unix\&.so use_authtok
diff --git a/modules/pam_pwhistory/pam_pwhistory.8.xml b/modules/pam_pwhistory/pam_pwhistory.8.xml
index 9e1056b2..d88115c2 100644
--- a/modules/pam_pwhistory/pam_pwhistory.8.xml
+++ b/modules/pam_pwhistory/pam_pwhistory.8.xml
@@ -83,7 +83,7 @@
When password changing enforce the module to use the new password
provided by a previously stacked <option>password</option>
module (this is used in the example of the stacking of the
- <command>pam_cracklib</command> module documented below).
+ <command>pam_passwdqc</command> module documented below).
</para>
</listitem>
</varlistentry>
@@ -197,10 +197,10 @@ password required pam_unix.so use_authtok
</programlisting>
</para>
<para>
- In combination with <command>pam_cracklib</command>:
+ In combination with <command>pam_passwdqc</command>:
<programlisting>
#%PAM-1.0
-password required pam_cracklib.so retry=3
+password required pam_passwdqc.so config=/etc/passwdqc.conf
password required pam_pwhistory.so use_authtok
password required pam_unix.so use_authtok
</programlisting>
diff --git a/modules/pam_pwhistory/pam_pwhistory.c b/modules/pam_pwhistory/pam_pwhistory.c
index cf4fc078..ce2c21f5 100644
--- a/modules/pam_pwhistory/pam_pwhistory.c
+++ b/modules/pam_pwhistory/pam_pwhistory.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2008, 2012 Thorsten Kukuk
* Author: Thorsten Kukuk <kukuk@thkukuk.de>
+ * Copyright (c) 2013 Red Hat, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -46,10 +47,14 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <shadow.h>
#include <syslog.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include <fcntl.h>
#include <security/pam_modules.h>
#include <security/pam_modutil.h>
@@ -59,8 +64,6 @@
#include "opasswd.h"
#include "pam_inline.h"
-#define DEFAULT_BUFLEN 2048
-
struct options_t {
int debug;
int enforce_for_root;
@@ -105,14 +108,186 @@ parse_option (pam_handle_t *pamh, const char *argv, options_t *options)
pam_syslog (pamh, LOG_ERR, "pam_pwhistory: unknown option: %s", argv);
}
+static int
+run_save_helper(pam_handle_t *pamh, const char *user,
+ int howmany, int debug)
+{
+ int retval, child;
+ struct sigaction newsa, oldsa;
+
+ memset(&newsa, '\0', sizeof(newsa));
+ newsa.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
+ child = fork();
+ if (child == 0)
+ {
+ static char *envp[] = { NULL };
+ char *args[] = { NULL, NULL, NULL, NULL, NULL, NULL };
+
+ if (pam_modutil_sanitize_helper_fds(pamh, PAM_MODUTIL_PIPE_FD,
+ PAM_MODUTIL_PIPE_FD,
+ PAM_MODUTIL_PIPE_FD) < 0)
+ {
+ _exit(PAM_SYSTEM_ERR);
+ }
+
+ /* exec binary helper */
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+ args[0] = (char *)PWHISTORY_HELPER;
+ args[1] = (char *)"save";
+ args[2] = (char *)user;
+ DIAG_POP_IGNORE_CAST_QUAL;
+ if (asprintf(&args[3], "%d", howmany) < 0 ||
+ asprintf(&args[4], "%d", debug) < 0)
+ {
+ pam_syslog(pamh, LOG_ERR, "asprintf: %m");
+ _exit(PAM_SYSTEM_ERR);
+ }
+
+ execve(args[0], args, envp);
+
+ pam_syslog(pamh, LOG_ERR, "helper binary execve failed: %s: %m", args[0]);
+
+ _exit(PAM_SYSTEM_ERR);
+ }
+ else if (child > 0)
+ {
+ /* wait for child */
+ int rc = 0;
+ while ((rc = waitpid (child, &retval, 0)) == -1 &&
+ errno == EINTR);
+ if (rc < 0)
+ {
+ pam_syslog(pamh, LOG_ERR, "pwhistory_helper save: waitpid: %m");
+ retval = PAM_SYSTEM_ERR;
+ }
+ else if (!WIFEXITED(retval))
+ {
+ pam_syslog(pamh, LOG_ERR, "pwhistory_helper save abnormal exit: %d", retval);
+ retval = PAM_SYSTEM_ERR;
+ }
+ else
+ {
+ retval = WEXITSTATUS(retval);
+ }
+ }
+ else
+ {
+ pam_syslog(pamh, LOG_ERR, "fork failed: %m");
+ retval = PAM_SYSTEM_ERR;
+ }
+
+ sigaction(SIGCHLD, &oldsa, NULL); /* restore old signal handler */
+
+ return retval;
+}
+
+static int
+run_check_helper(pam_handle_t *pamh, const char *user,
+ const char *newpass, int debug)
+{
+ int retval, child, fds[2];
+ struct sigaction newsa, oldsa;
+
+ /* create a pipe for the password */
+ if (pipe(fds) != 0)
+ return PAM_SYSTEM_ERR;
+
+ memset(&newsa, '\0', sizeof(newsa));
+ newsa.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &newsa, &oldsa);
+
+ child = fork();
+ if (child == 0)
+ {
+ static char *envp[] = { NULL };
+ char *args[] = { NULL, NULL, NULL, NULL, NULL };
+
+ /* reopen stdin as pipe */
+ if (dup2(fds[0], STDIN_FILENO) != STDIN_FILENO)
+ {
+ pam_syslog(pamh, LOG_ERR, "dup2 of %s failed: %m", "stdin");
+ _exit(PAM_SYSTEM_ERR);
+ }
-/* This module saves the current crypted password in /etc/security/opasswd
+ if (pam_modutil_sanitize_helper_fds(pamh, PAM_MODUTIL_IGNORE_FD,
+ PAM_MODUTIL_PIPE_FD,
+ PAM_MODUTIL_PIPE_FD) < 0)
+ {
+ _exit(PAM_SYSTEM_ERR);
+ }
+
+ /* exec binary helper */
+ DIAG_PUSH_IGNORE_CAST_QUAL;
+ args[0] = (char *)PWHISTORY_HELPER;
+ args[1] = (char *)"check";
+ args[2] = (char *)user;
+ DIAG_POP_IGNORE_CAST_QUAL;
+ if (asprintf(&args[3], "%d", debug) < 0)
+ {
+ pam_syslog(pamh, LOG_ERR, "asprintf: %m");
+ _exit(PAM_SYSTEM_ERR);
+ }
+
+ execve(args[0], args, envp);
+
+ pam_syslog(pamh, LOG_ERR, "helper binary execve failed: %s: %m", args[0]);
+
+ _exit(PAM_SYSTEM_ERR);
+ }
+ else if (child > 0)
+ {
+ /* wait for child */
+ int rc = 0;
+ if (newpass == NULL)
+ newpass = "";
+
+ /* send the password to the child */
+ if (write(fds[1], newpass, strlen(newpass)+1) == -1)
+ {
+ pam_syslog(pamh, LOG_ERR, "Cannot send password to helper: %m");
+ retval = PAM_SYSTEM_ERR;
+ }
+ newpass = NULL;
+ close(fds[0]); /* close here to avoid possible SIGPIPE above */
+ close(fds[1]);
+ while ((rc = waitpid (child, &retval, 0)) == -1 &&
+ errno == EINTR);
+ if (rc < 0)
+ {
+ pam_syslog(pamh, LOG_ERR, "pwhistory_helper check: waitpid: %m");
+ retval = PAM_SYSTEM_ERR;
+ }
+ else if (!WIFEXITED(retval))
+ {
+ pam_syslog(pamh, LOG_ERR, "pwhistory_helper check abnormal exit: %d", retval);
+ retval = PAM_SYSTEM_ERR;
+ }
+ else
+ {
+ retval = WEXITSTATUS(retval);
+ }
+ }
+ else
+ {
+ pam_syslog(pamh, LOG_ERR, "fork failed: %m");
+ close(fds[0]);
+ close(fds[1]);
+ retval = PAM_SYSTEM_ERR;
+ }
+
+ sigaction(SIGCHLD, &oldsa, NULL); /* restore old signal handler */
+
+ return retval;
+}
+
+/* This module saves the current hashed password in /etc/security/opasswd
and then compares the new password with all entries in this file. */
int
pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv)
{
- struct passwd *pwd;
const char *newpass;
const char *user;
int retval, tries;
@@ -148,31 +323,13 @@ pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv)
return PAM_SUCCESS;
}
- pwd = pam_modutil_getpwnam (pamh, user);
- if (pwd == NULL)
- return PAM_USER_UNKNOWN;
+ retval = save_old_pass (pamh, user, options.remember, options.debug);
- if ((strcmp(pwd->pw_passwd, "x") == 0) ||
- ((pwd->pw_passwd[0] == '#') &&
- (pwd->pw_passwd[1] == '#') &&
- (strcmp(pwd->pw_name, pwd->pw_passwd + 2) == 0)))
- {
- struct spwd *spw = pam_modutil_getspnam (pamh, user);
- if (spw == NULL)
- return PAM_USER_UNKNOWN;
+ if (retval == PAM_PWHISTORY_RUN_HELPER)
+ retval = run_save_helper(pamh, user, options.remember, options.debug);
- retval = save_old_pass (pamh, user, pwd->pw_uid, spw->sp_pwdp,
- options.remember, options.debug);
- if (retval != PAM_SUCCESS)
- return retval;
- }
- else
- {
- retval = save_old_pass (pamh, user, pwd->pw_uid, pwd->pw_passwd,
- options.remember, options.debug);
- if (retval != PAM_SUCCESS)
- return retval;
- }
+ if (retval != PAM_SUCCESS)
+ return retval;
newpass = NULL;
tries = 0;
@@ -201,8 +358,11 @@ pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv)
if (options.debug)
pam_syslog (pamh, LOG_DEBUG, "check against old password file");
- if (check_old_pass (pamh, user, newpass,
- options.debug) != PAM_SUCCESS)
+ retval = check_old_pass (pamh, user, newpass, options.debug);
+ if (retval == PAM_PWHISTORY_RUN_HELPER)
+ retval = run_check_helper(pamh, user, newpass, options.debug);
+
+ if (retval != PAM_SUCCESS)
{
if (getuid() || options.enforce_for_root ||
(flags & PAM_CHANGE_EXPIRED_AUTHTOK))
diff --git a/modules/pam_pwhistory/pwhistory_helper.8 b/modules/pam_pwhistory/pwhistory_helper.8
new file mode 100644
index 00000000..684b5b02
--- /dev/null
+++ b/modules/pam_pwhistory/pwhistory_helper.8
@@ -0,0 +1,54 @@
+'\" t
+.\" Title: pwhistory_helper
+.\" Author: [see the "AUTHOR" section]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 09/03/2021
+.\" Manual: Linux-PAM Manual
+.\" Source: Linux-PAM Manual
+.\" Language: English
+.\"
+.TH "PWHISTORY_HELPER" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+pwhistory_helper \- Helper binary that transfers password hashes from passwd or shadow to opasswd
+.SH "SYNOPSIS"
+.HP \w'\fBpwhistory_helper\fR\ 'u
+\fBpwhistory_helper\fR [\&.\&.\&.]
+.SH "DESCRIPTION"
+.PP
+\fIpwhistory_helper\fR
+is a helper program for the
+\fIpam_pwhistory\fR
+module that transfers password hashes from passwd or shadow file to the opasswd file and checks a password supplied by user against the existing hashes in the opasswd file\&.
+.PP
+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\&.
+.PP
+The interface of the helper \- command line options, and input/output data format are internal to the
+\fIpam_pwhistory\fR
+module and it should not be called directly from applications\&.
+.SH "SEE ALSO"
+.PP
+\fBpam_pwhistory\fR(8)
+.SH "AUTHOR"
+.PP
+Written by Tomas Mraz based on the code originally in
+\fIpam_pwhistory and pam_unix\fR
+modules\&.
diff --git a/modules/pam_pwhistory/pwhistory_helper.8.xml b/modules/pam_pwhistory/pwhistory_helper.8.xml
new file mode 100644
index 00000000..a0301764
--- /dev/null
+++ b/modules/pam_pwhistory/pwhistory_helper.8.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<refentry id="pwhistory_helper">
+
+ <refmeta>
+ <refentrytitle>pwhistory_helper</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
+ </refmeta>
+
+ <refnamediv id="pwhistory_helper-name">
+ <refname>pwhistory_helper</refname>
+ <refpurpose>Helper binary that transfers password hashes from passwd or shadow to opasswd</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="pwhistory_helper-cmdsynopsis">
+ <command>pwhistory_helper</command>
+ <arg choice="opt">
+ ...
+ </arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="pwhistory_helper-description">
+
+ <title>DESCRIPTION</title>
+
+ <para>
+ <emphasis>pwhistory_helper</emphasis> is a helper program for the
+ <emphasis>pam_pwhistory</emphasis> module that transfers password hashes
+ from passwd or shadow file to the opasswd file and checks a password
+ supplied by user against the existing hashes in the opasswd file.
+ </para>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ The interface of the helper - command line options, and input/output
+ data format are internal to the <emphasis>pam_pwhistory</emphasis>
+ module and it should not be called directly from applications.
+ </para>
+ </refsect1>
+
+ <refsect1 id='pwhistory_helper-see_also'>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>pam_pwhistory</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>
+ </para>
+ </refsect1>
+
+ <refsect1 id='pwhistory_helper-author'>
+ <title>AUTHOR</title>
+ <para>
+ Written by Tomas Mraz based on the code originally in
+ <emphasis>pam_pwhistory and pam_unix</emphasis> modules.
+ </para>
+ </refsect1>
+
+</refentry>
diff --git a/modules/pam_pwhistory/pwhistory_helper.c b/modules/pam_pwhistory/pwhistory_helper.c
new file mode 100644
index 00000000..b08a14a7
--- /dev/null
+++ b/modules/pam_pwhistory/pwhistory_helper.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2013 Red Hat, Inc.
+ * Author: Tomas Mraz <tmraz@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <errno.h>
+#include <unistd.h>
+#include <signal.h>
+#include <security/_pam_types.h>
+#include <security/_pam_macros.h>
+#include <security/pam_modutil.h>
+#include "opasswd.h"
+#include "pam_inline.h"
+
+
+static int
+check_history(const char *user, const char *debug)
+{
+ char pass[PAM_MAX_RESP_SIZE + 1];
+ char *passwords[] = { pass };
+ int npass;
+ int dbg = atoi(debug); /* no need to be too fancy here */
+ int retval;
+
+ /* read the password from stdin (a pipe from the pam_pwhistory module) */
+ npass = pam_read_passwords(STDIN_FILENO, 1, passwords);
+
+ if (npass != 1)
+ { /* is it a valid password? */
+ helper_log_err(LOG_DEBUG, "no password supplied");
+ return PAM_AUTHTOK_ERR;
+ }
+
+ retval = check_old_pass(user, pass, dbg);
+
+ memset(pass, '\0', PAM_MAX_RESP_SIZE); /* clear memory of the password */
+
+ return retval;
+}
+
+static int
+save_history(const char *user, const char *howmany, const char *debug)
+{
+ int num = atoi(howmany);
+ int dbg = atoi(debug); /* no need to be too fancy here */
+ int retval;
+
+ retval = save_old_pass(user, num, dbg);
+
+ return retval;
+}
+
+int
+main(int argc, char *argv[])
+{
+ const char *option;
+ const char *user;
+
+ /*
+ * we establish that this program is running with non-tty stdin.
+ * this is to discourage casual use.
+ */
+
+ if (isatty(STDIN_FILENO) || argc < 4)
+ {
+ fprintf(stderr,
+ "This binary is not designed for running in this way.\n");
+ return PAM_SYSTEM_ERR;
+ }
+
+ option = argv[1];
+ user = argv[2];
+
+ if (strcmp(option, "check") == 0 && argc == 4)
+ return check_history(user, argv[3]);
+ else if (strcmp(option, "save") == 0 && argc == 5)
+ return save_history(user, argv[3], argv[4]);
+
+ fprintf(stderr, "This binary is not designed for running in this way.\n");
+
+ return PAM_SYSTEM_ERR;
+}
diff --git a/modules/pam_rhosts/Makefile.in b/modules/pam_rhosts/Makefile.in
index c1732dd5..6cfb1ff4 100644
--- a/modules/pam_rhosts/Makefile.in
+++ b/modules/pam_rhosts/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_rhosts
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_rhosts/pam_rhosts.8 b/modules/pam_rhosts/pam_rhosts.8
index 3a4e5d95..61e9a446 100644
--- a/modules/pam_rhosts/pam_rhosts.8
+++ b/modules/pam_rhosts/pam_rhosts.8
@@ -2,12 +2,12 @@
.\" Title: pam_rhosts
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_RHOSTS" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_RHOSTS" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_rootok/Makefile.in b/modules/pam_rootok/Makefile.in
index fc13baf8..d4422af6 100644
--- a/modules/pam_rootok/Makefile.in
+++ b/modules/pam_rootok/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_rootok-retval$(EXEEXT)
subdir = modules/pam_rootok
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_rootok/pam_rootok.8 b/modules/pam_rootok/pam_rootok.8
index a1f4cecf..861a6a6b 100644
--- a/modules/pam_rootok/pam_rootok.8
+++ b/modules/pam_rootok/pam_rootok.8
@@ -2,12 +2,12 @@
.\" Title: pam_rootok
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_ROOTOK" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_ROOTOK" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_rootok/pam_rootok.c b/modules/pam_rootok/pam_rootok.c
index 3a00d545..dd374c53 100644
--- a/modules/pam_rootok/pam_rootok.c
+++ b/modules/pam_rootok/pam_rootok.c
@@ -50,20 +50,23 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv)
#ifdef WITH_SELINUX
static int
+PAM_FORMAT((printf, 2, 3))
log_callback (int type UNUSED, const char *fmt, ...)
{
int audit_fd;
va_list ap;
- va_start(ap, fmt);
#ifdef HAVE_LIBAUDIT
audit_fd = audit_open();
if (audit_fd >= 0) {
char *buf;
+ int ret;
- if (vasprintf (&buf, fmt, ap) < 0) {
- va_end(ap);
+ va_start(ap, fmt);
+ ret = vasprintf (&buf, fmt, ap);
+ va_end(ap);
+ if (ret < 0) {
return 0;
}
audit_log_user_avc_message(audit_fd, AUDIT_USER_AVC, buf, NULL, NULL,
@@ -75,6 +78,7 @@ log_callback (int type UNUSED, const char *fmt, ...)
}
#endif
+ va_start(ap, fmt);
vsyslog (LOG_USER | LOG_INFO, fmt, ap);
va_end(ap);
return 0;
@@ -84,7 +88,7 @@ static int
selinux_check_root (void)
{
int status = -1;
- security_context_t user_context;
+ char *user_context_raw;
union selinux_callback old_callback;
if (is_selinux_enabled() < 1)
@@ -93,15 +97,15 @@ selinux_check_root (void)
old_callback = selinux_get_callback(SELINUX_CB_LOG);
/* setup callbacks */
selinux_set_callback(SELINUX_CB_LOG, (union selinux_callback) &log_callback);
- if ((status = getprevcon(&user_context)) < 0) {
+ if ((status = getprevcon_raw(&user_context_raw)) < 0) {
selinux_set_callback(SELINUX_CB_LOG, old_callback);
return status;
}
- status = selinux_check_access(user_context, user_context, "passwd", "rootok", NULL);
+ status = selinux_check_access(user_context_raw, user_context_raw, "passwd", "rootok", NULL);
selinux_set_callback(SELINUX_CB_LOG, old_callback);
- freecon(user_context);
+ freecon(user_context_raw);
return status;
}
#endif
diff --git a/modules/pam_securetty/Makefile.in b/modules/pam_securetty/Makefile.in
index 87245e61..0763989f 100644
--- a/modules/pam_securetty/Makefile.in
+++ b/modules/pam_securetty/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_securetty
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_securetty/pam_securetty.8 b/modules/pam_securetty/pam_securetty.8
index 011f9409..a808aea4 100644
--- a/modules/pam_securetty/pam_securetty.8
+++ b/modules/pam_securetty/pam_securetty.8
@@ -2,12 +2,12 @@
.\" Title: pam_securetty
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SECURETTY" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_SECURETTY" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_securetty/pam_securetty.c b/modules/pam_securetty/pam_securetty.c
index b4d71751..47a5cd9f 100644
--- a/modules/pam_securetty/pam_securetty.c
+++ b/modules/pam_securetty/pam_securetty.c
@@ -111,7 +111,8 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl,
#ifdef VENDORDIR
if (errno == ENOENT) {
if (stat(SECURETTY2_FILE, &ttyfileinfo)) {
- pam_syslog(pamh, LOG_NOTICE,
+ if (ctrl & PAM_DEBUG_ARG)
+ pam_syslog(pamh, LOG_DEBUG,
"Couldn't open %s: %m", SECURETTY2_FILE);
return PAM_SUCCESS; /* for compatibility with old securetty handling,
this needs to succeed. But we still log the
@@ -120,7 +121,8 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl,
securettyfile = SECURETTY2_FILE;
} else {
#endif
- pam_syslog(pamh, LOG_NOTICE, "Couldn't open %s: %m", SECURETTY_FILE);
+ if (ctrl & PAM_DEBUG_ARG)
+ pam_syslog(pamh, LOG_DEBUG, "Couldn't open %s: %m", SECURETTY_FILE);
return PAM_SUCCESS; /* for compatibility with old securetty handling,
this needs to succeed. But we still log the
error. */
diff --git a/modules/pam_selinux/Makefile.in b/modules/pam_selinux/Makefile.in
index 8d047146..c58ce8e5 100644
--- a/modules/pam_selinux/Makefile.in
+++ b/modules/pam_selinux/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -98,18 +98,21 @@ host_triplet = @host@
noinst_PROGRAMS = pam_selinux_check$(EXEEXT)
subdir = modules/pam_selinux
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -385,6 +388,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -429,6 +433,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -442,6 +449,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -461,7 +470,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -508,8 +516,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -520,6 +526,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -569,7 +576,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -577,9 +583,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -589,6 +592,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -942,7 +946,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_selinux/pam_selinux.8 b/modules/pam_selinux/pam_selinux.8
index 2745a478..22a3d0a2 100644
--- a/modules/pam_selinux/pam_selinux.8
+++ b/modules/pam_selinux/pam_selinux.8
@@ -2,12 +2,12 @@
.\" Title: pam_selinux
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SELINUX" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_SELINUX" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_selinux/pam_selinux.c b/modules/pam_selinux/pam_selinux.c
index 06c3ce65..d8e10d8e 100644
--- a/modules/pam_selinux/pam_selinux.c
+++ b/modules/pam_selinux/pam_selinux.c
@@ -519,6 +519,7 @@ static int
compute_tty_context(const pam_handle_t *pamh, module_data_t *data)
{
const char *tty = get_item(pamh, PAM_TTY);
+ security_class_t tclass;
if (!tty || !*tty || !strcmp(tty, "ssh")
|| pam_str_skip_prefix(tty, "NODEV") != NULL) {
@@ -555,8 +556,18 @@ compute_tty_context(const pam_handle_t *pamh, module_data_t *data)
return (security_getenforce() == 1) ? PAM_SESSION_ERR : PAM_SUCCESS;
}
+ tclass = string_to_security_class("chr_file");
+ if (tclass == 0) {
+ pam_syslog(pamh, LOG_ERR, "Failed to get chr_file security class");
+ freecon(data->prev_tty_context);
+ data->prev_tty_context = NULL;
+ free(data->tty_path);
+ data->tty_path = NULL;
+ return (security_getenforce() == 1) ? PAM_SESSION_ERR : PAM_SUCCESS;
+ }
+
if (security_compute_relabel(data->exec_context, data->prev_tty_context,
- string_to_security_class("chr_file"), &data->tty_context)) {
+ tclass, &data->tty_context)) {
data->tty_context = NULL;
pam_syslog(pamh, LOG_ERR, "Failed to compute new context for %s: %m",
data->tty_path);
diff --git a/modules/pam_sepermit/Makefile.in b/modules/pam_sepermit/Makefile.in
index 0de1354a..3d2ba129 100644
--- a/modules/pam_sepermit/Makefile.in
+++ b/modules/pam_sepermit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_sepermit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -381,6 +384,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -425,6 +429,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -438,6 +445,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -457,7 +466,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -504,8 +512,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -516,6 +522,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -565,7 +572,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -573,9 +579,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -585,6 +588,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -989,7 +993,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_sepermit/pam_sepermit.8 b/modules/pam_sepermit/pam_sepermit.8
index 37460ab6..fb82cb97 100644
--- a/modules/pam_sepermit/pam_sepermit.8
+++ b/modules/pam_sepermit/pam_sepermit.8
@@ -2,12 +2,12 @@
.\" Title: pam_sepermit
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SEPERMIT" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_SEPERMIT" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_sepermit/sepermit.conf b/modules/pam_sepermit/sepermit.conf
index 951f3dfe..0a12cd83 100644
--- a/modules/pam_sepermit/sepermit.conf
+++ b/modules/pam_sepermit/sepermit.conf
@@ -1,7 +1,7 @@
# /etc/security/sepermit.conf
#
# Each line contains either:
-# - an user name
+# - a user name
# - a group name, with @group syntax
# - a SELinux user name, with %seuser syntax
# Each line can contain optional arguments separated by :
diff --git a/modules/pam_sepermit/sepermit.conf.5 b/modules/pam_sepermit/sepermit.conf.5
index f2b5d092..b4b91c8d 100644
--- a/modules/pam_sepermit/sepermit.conf.5
+++ b/modules/pam_sepermit/sepermit.conf.5
@@ -2,12 +2,12 @@
.\" Title: sepermit.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "SEPERMIT\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "SEPERMIT\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_setquota/Makefile.in b/modules/pam_setquota/Makefile.in
index c7e66dad..f4f49f02 100644
--- a/modules/pam_setquota/Makefile.in
+++ b/modules/pam_setquota/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -92,18 +92,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_setquota
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -369,6 +372,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -413,6 +417,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -426,6 +433,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -445,7 +454,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -492,8 +500,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -504,6 +510,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -553,7 +560,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -561,9 +567,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -573,6 +576,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -908,7 +912,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_setquota/README b/modules/pam_setquota/README
index dbab1ccc..fd00da7d 100644
--- a/modules/pam_setquota/README
+++ b/modules/pam_setquota/README
@@ -31,7 +31,7 @@ startuid=1000
Describe the start of the UID range the policy is applied to. (Defaults to
UID_MIN from login.defs or the uidmin value defined at compile-time if
- UID_MIN is undefined)
+ UID_MIN is undefined.)
enduid=0
@@ -75,6 +75,6 @@ AUTHOR
pam_setquota was originally written by Ruslan Savchenko <savrus@mexmat.net>.
-Further modifications were made by Shane Tzen<shane@ict.usc.edu>, Sven Hartge
-<sven@svenharte.de> and Keller Fuchs <kellerfuchs@hashbang.sh>
+Further modifications were made by Shane Tzen <shane@ict.usc.edu>, Sven Hartge
+<sven@svenhartge.de> and Keller Fuchs <kellerfuchs@hashbang.sh>.
diff --git a/modules/pam_setquota/pam_setquota.8 b/modules/pam_setquota/pam_setquota.8
index a4222bf3..f09ba960 100644
--- a/modules/pam_setquota/pam_setquota.8
+++ b/modules/pam_setquota/pam_setquota.8
@@ -2,12 +2,12 @@
.\" Title: pam_setquota
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SETQUOTA" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_SETQUOTA" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -60,7 +60,7 @@ be unset\&. (Defaults to 0)
.PP
\fBstartuid=\fR\fB\fI1000\fR\fR
.RS 4
-Describe the start of the UID range the policy is applied to\&. (Defaults to UID_MIN from login\&.defs or the uidmin value defined at compile\-time if UID_MIN is undefined)
+Describe the start of the UID range the policy is applied to\&. (Defaults to UID_MIN from login\&.defs or the uidmin value defined at compile\-time if UID_MIN is undefined\&.)
.RE
.PP
\fBenduid=\fR\fB\fI0\fR\fR
@@ -130,7 +130,7 @@ The quota was set successfully\&.
.PP
PAM_IGNORE
.RS 4
-No action was taken because either the UID of the user was outside of the specifed range, a quota already existed and
+No action was taken because either the UID of the user was outside of the specified range, a quota already existed and
\fBoverwrite=1\fR
was not configured or no limits were configured at all\&.
.RE
@@ -183,4 +183,4 @@ A single invocation of `pam_setquota` applies a specific policy to a UID range\&
.PP
pam_setquota was originally written by Ruslan Savchenko <savrus@mexmat\&.net>\&.
.PP
-Further modifications were made by Shane Tzen<shane@ict\&.usc\&.edu>, Sven Hartge <sven@svenharte\&.de> and Keller Fuchs <kellerfuchs@hashbang\&.sh>
+Further modifications were made by Shane Tzen <shane@ict\&.usc\&.edu>, Sven Hartge <sven@svenhartge\&.de> and Keller Fuchs <kellerfuchs@hashbang\&.sh>\&.
diff --git a/modules/pam_setquota/pam_setquota.8.xml b/modules/pam_setquota/pam_setquota.8.xml
index bb878e8c..fe83c805 100644
--- a/modules/pam_setquota/pam_setquota.8.xml
+++ b/modules/pam_setquota/pam_setquota.8.xml
@@ -109,7 +109,7 @@
<para>
Describe the start of the UID range the policy is applied to.
(Defaults to UID_MIN from login.defs or the uidmin value defined
- at compile-time if UID_MIN is undefined)
+ at compile-time if UID_MIN is undefined.)
</para>
</listitem>
</varlistentry>
@@ -210,7 +210,7 @@
<listitem>
<para>
No action was taken because either the UID of the user was outside
- of the specifed range, a quota already existed and
+ of the specified range, a quota already existed and
<option>overwrite=1</option> was not configured or no limits were
configured at all.
</para>
@@ -292,9 +292,9 @@
Ruslan Savchenko &lt;savrus@mexmat.net&gt;.
</para>
<para>
- Further modifications were made by Shane Tzen&lt;shane@ict.usc.edu&gt;,
- Sven Hartge &lt;sven@svenharte.de&gt;
- and Keller Fuchs &lt;kellerfuchs@hashbang.sh&gt;
+ Further modifications were made by Shane Tzen &lt;shane@ict.usc.edu&gt;,
+ Sven Hartge &lt;sven@svenhartge.de&gt;
+ and Keller Fuchs &lt;kellerfuchs@hashbang.sh&gt;.
</para>
</refsect1>
diff --git a/modules/pam_setquota/pam_setquota.c b/modules/pam_setquota/pam_setquota.c
index 01b05e38..ec45baac 100644
--- a/modules/pam_setquota/pam_setquota.c
+++ b/modules/pam_setquota/pam_setquota.c
@@ -288,7 +288,7 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED,
"with suffix=\"%s\" on device=\"%s\"", pwd->pw_dir,
mnt->mnt_dir, s, mntdevice);
}
- /* param.fs has been specified, find exactly matching fileystem */
+ /* param.fs has been specified, find exactly matching filesystem */
} else if ((strncmp(param.fs, mnt->mnt_dir, param.fs_len) == 0
&& mnt->mnt_dir[param.fs_len] == '\0') ||
(strncmp(param.fs, mnt->mnt_fsname, param.fs_len) == 0
@@ -332,7 +332,7 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED,
/* Parse new limits
* Exit with an error should only the hard- or softlimit be
* configured but not both.
- * This avoids errors, inconsistencies and possible race conditons
+ * This avoids errors, inconsistencies and possible race conditions
* during setquota.
*/
ndqblk.dqb_valid = 0;
diff --git a/modules/pam_shells/Makefile.in b/modules/pam_shells/Makefile.in
index bc203c58..c92648bc 100644
--- a/modules/pam_shells/Makefile.in
+++ b/modules/pam_shells/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_shells
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_shells/pam_shells.8 b/modules/pam_shells/pam_shells.8
index ec9adf08..4e519d17 100644
--- a/modules/pam_shells/pam_shells.8
+++ b/modules/pam_shells/pam_shells.8
@@ -2,12 +2,12 @@
.\" Title: pam_shells
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_SHELLS" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_SHELLS" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_stress/Makefile.am b/modules/pam_stress/Makefile.am
index 10671ad4..e964fcc4 100644
--- a/modules/pam_stress/Makefile.am
+++ b/modules/pam_stress/Makefile.am
@@ -3,9 +3,14 @@
#
CLEANFILES = *~
+MAINTAINERCLEANFILES = $(MANS) README
-EXTRA_DIST =
+EXTRA_DIST = $(XMLS)
+if HAVE_DOC
+dist_man_MANS = pam_stress.8
+endif
+XMLS = README.xml pam_stress.8.xml
dist_check_SCRIPTS = tst-pam_stress
TESTS = $(dist_check_SCRIPTS)
@@ -20,3 +25,8 @@ if HAVE_VERSIONING
endif
securelib_LTLIBRARIES = pam_stress.la
pam_stress_la_LIBADD = $(top_builddir)/libpam/libpam.la
+
+if ENABLE_REGENERATE_MAN
+dist_noinst_DATA = README
+-include $(top_srcdir)/Make.xml.rules
+endif
diff --git a/modules/pam_stress/Makefile.in b/modules/pam_stress/Makefile.in
index 36c9b3c2..297f39d2 100644
--- a/modules/pam_stress/Makefile.in
+++ b/modules/pam_stress/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -18,6 +18,7 @@
# Copyright (c) 2005, 2006, 2009 Thorsten Kukuk <kukuk@suse.de>
#
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -95,22 +96,25 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_stress
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
- $(am__DIST_COMMON)
+ $(am__dist_noinst_DATA_DIST) $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -142,7 +146,7 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(securelibdir)"
+am__installdirs = "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"
LTLIBRARIES = $(securelib_LTLIBRARIES)
pam_stress_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
pam_stress_la_SOURCES = pam_stress.c
@@ -193,6 +197,11 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+man8dir = $(mandir)/man8
+NROFF = nroff
+MANS = $(dist_man_MANS)
+am__dist_noinst_DATA_DIST = README
+DATA = $(dist_noinst_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -367,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -389,9 +399,9 @@ TEST_LOGS = $(am__test_logs2:.test.log=.log)
TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
$(TEST_LOG_FLAGS)
-am__DIST_COMMON = $(srcdir)/Makefile.in \
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/depcomp \
- $(top_srcdir)/build-aux/test-driver README
+ $(top_srcdir)/build-aux/test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -411,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -424,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -443,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -490,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -502,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -551,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -559,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -571,12 +580,16 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
CLEANFILES = *~
-EXTRA_DIST =
+MAINTAINERCLEANFILES = $(MANS) README
+EXTRA_DIST = $(XMLS)
+@HAVE_DOC_TRUE@dist_man_MANS = pam_stress.8
+XMLS = README.xml pam_stress.8.xml
dist_check_SCRIPTS = tst-pam_stress
TESTS = $(dist_check_SCRIPTS)
securelibdir = $(SECUREDIR)
@@ -587,6 +600,7 @@ AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
AM_LDFLAGS = -no-undefined -avoid-version -module $(am__append_1)
securelib_LTLIBRARIES = pam_stress.la
pam_stress_la_LIBADD = $(top_builddir)/libpam/libpam.la
+@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
all: all-am
.SUFFIXES:
@@ -699,6 +713,49 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
+install-man8: $(dist_man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(dist_man_MANS)'; \
+ test -n "$(man8dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.8[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man8:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man8dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.8[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -859,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@@ -952,9 +1009,9 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
-all-am: Makefile $(LTLIBRARIES)
+all-am: Makefile $(LTLIBRARIES) $(MANS) $(DATA)
installdirs:
- for dir in "$(DESTDIR)$(securelibdir)"; do \
+ for dir in "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -991,6 +1048,7 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
clean-am: clean-generic clean-libtool clean-securelibLTLIBRARIES \
@@ -1014,7 +1072,7 @@ info: info-am
info-am:
-install-data-am: install-securelibLTLIBRARIES
+install-data-am: install-man install-securelibLTLIBRARIES
install-dvi: install-dvi-am
@@ -1030,7 +1088,7 @@ install-info: install-info-am
install-info-am:
-install-man:
+install-man: install-man8
install-pdf: install-pdf-am
@@ -1060,7 +1118,9 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-securelibLTLIBRARIES
+uninstall-am: uninstall-man uninstall-securelibLTLIBRARIES
+
+uninstall-man: uninstall-man8
.MAKE: check-am install-am install-strip
@@ -1072,16 +1132,18 @@ uninstall-am: uninstall-securelibLTLIBRARIES
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-securelibLTLIBRARIES \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am recheck tags tags-am uninstall \
- uninstall-am uninstall-securelibLTLIBRARIES
+ install-info-am install-man install-man8 install-pdf \
+ install-pdf-am install-ps install-ps-am \
+ install-securelibLTLIBRARIES install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am uninstall-man \
+ uninstall-man8 uninstall-securelibLTLIBRARIES
.PRECIOUS: Makefile
+@ENABLE_REGENERATE_MAN_TRUE@-include $(top_srcdir)/Make.xml.rules
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/modules/pam_stress/README b/modules/pam_stress/README
index ed56ae58..230e8621 100644
--- a/modules/pam_stress/README
+++ b/modules/pam_stress/README
@@ -1,64 +1,61 @@
-#
-# This describes the behavior of this module with respect to the
-# /etc/pam.conf file.
-#
-# written by Andrew Morgan <morgan@parc.power.net>
-#
+pam_stress — The stress-testing PAM module
-This module recognizes the following arguments.
+â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
-debug put lots of information in syslog.
- *NOTE* this option writes passwords to syslog, so
- don't use anything sensitive when testing.
+DESCRIPTION
-no_warn don't give warnings about things (otherwise warnings are issued
- via the conversation function)
+The pam_stress PAM module is mainly intended to give the impression of failing
+as a fully functioning module might.
-use_first_pass don't prompt for a password, for pam_sm_authentication
- function just use item PAM_AUTHTOK.
+OPTIONS
-try_first_pass don't prompt for a password unless there has been no
- previous authentication token (item PAM_AUTHTOK is NULL)
+debug
-rootok This is intended for the pam_sm_chauthtok function and
- it instructs this function to permit root to change
- the user's password without entering the old password.
+ Put lots of information in syslog. *NOTE* this option writes passwords to
+ syslog, so don't use anything sensitive when testing.
-The following arguments are acted on by the module. They are intended
-to make the module give the impression of failing as a fully
-functioning module might.
+no_warn
-expired an argument intended for the account and chauthtok module
- parts. It instructs the module to act as if the user's
- password has expired
+ Do not give warnings about things (otherwise warnings are issued via the
+ conversation function)
-fail_1 this instructs the module to make its first function fail.
+use_first_pass
-fail_2 this instructs the module to make its second function (if there
- is one) fail.
+ Do not prompt for a password, for pam_sm_authentication function just use
+ item PAM_AUTHTOK.
- The function break up is indicated in the Module
- Developers' Guide. Listed here it is:
+try_first_pass
- service function 1 function 2
- ------- ---------- ----------
- auth pam_sm_authenticate pam_sm_setcred
- password pam_sm_chauthtok
- session pam_sm_open_session pam_sm_close_session
- account pam_sm_acct_mgmt
+ Do not prompt for a password unless there has been no previous
+ authentication token (item PAM_AUTHTOK is NULL)
-prelim for pam_sm_chauthtok, means fail on PAM_PRELIM_CHECK.
+rootok
-required for pam_sm_chauthtok, means fail if the user hasn't already
- been authenticated by this module. (See stress_new_pwd data
- item below.)
+ This is intended for the pam_sm_chauthtok function and it instructs this
+ function to permit root to change the user's password without entering the
+ old password.
-#
-# data strings that this module uses are the following:
-#
+expired
+
+ An argument intended for the account and chauthtok module parts. It
+ instructs the module to act as if the user's password has expired
+
+fail_1
+
+ This instructs the module to make its first function fail.
+
+fail_2
+
+ This instructs the module to make its second function (if there is one)
+ fail.
+
+prelim
+
+ For pam_sm_chauthtok, means fail on PAM_PRELIM_CHECK.
+
+required
+
+ For pam_sm_chauthtok, means fail if the user hasn't already been
+ authenticated by this module. (See stress_new_pwd data string in the
+ NOTES.)
-data name value(s) Comments
---------- -------- --------
-stress_new_pwd yes tells pam_sm_chauthtok that
- pam_sm_acct_mgmt says we need a new
- password
diff --git a/modules/pam_stress/README.xml b/modules/pam_stress/README.xml
new file mode 100644
index 00000000..6f94685e
--- /dev/null
+++ b/modules/pam_stress/README.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+"http://www.docbook.org/xml/4.3/docbookx.dtd"
+[
+<!--
+<!ENTITY pamstress SYSTEM "pam_stress.8.xml">
+-->
+]>
+
+<article>
+
+ <articleinfo>
+
+ <title>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_stress.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_stress-name"]/*)'/>
+ </title>
+
+ </articleinfo>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_stress.8.xml" xpointer='xpointer(//refsect1[@id = "pam_stress-description"]/*)'/>
+ </section>
+
+ <section>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ href="pam_stress.8.xml" xpointer='xpointer(//refsect1[@id = "pam_stress-options"]/*)'/>
+ </section>
+
+</article>
diff --git a/modules/pam_stress/pam_stress.8 b/modules/pam_stress/pam_stress.8
new file mode 100644
index 00000000..2fdb9397
--- /dev/null
+++ b/modules/pam_stress/pam_stress.8
@@ -0,0 +1,190 @@
+'\" t
+.\" Title: pam_stress
+.\" Author: [see the "AUTHORS" section]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 09/03/2021
+.\" Manual: Linux-PAM Manual
+.\" Source: Linux-PAM Manual
+.\" Language: English
+.\"
+.TH "PAM_STRESS" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+pam_stress \- The stress\-testing PAM module
+.SH "SYNOPSIS"
+.HP \w'\fBpam_stress\&.so\fR\ 'u
+\fBpam_stress\&.so\fR [debug] [no_warn] [use_first_pass] [try_first_pass] [rootok] [expired] [fail_1] [fail_2] [prelim] [required]
+.SH "DESCRIPTION"
+.PP
+The pam_stress PAM module is mainly intended to give the impression of failing as a fully functioning module might\&.
+.SH "OPTIONS"
+.PP
+\fBdebug\fR
+.RS 4
+Put lots of information in syslog\&. *NOTE* this option writes passwords to syslog, so don\*(Aqt use anything sensitive when testing\&.
+.RE
+.PP
+\fBno_warn\fR
+.RS 4
+Do not give warnings about things (otherwise warnings are issued via the conversation function)
+.RE
+.PP
+\fBuse_first_pass\fR
+.RS 4
+Do not prompt for a password, for pam_sm_authentication function just use item PAM_AUTHTOK\&.
+.RE
+.PP
+\fBtry_first_pass\fR
+.RS 4
+Do not prompt for a password unless there has been no previous authentication token (item PAM_AUTHTOK is NULL)
+.RE
+.PP
+\fBrootok\fR
+.RS 4
+This is intended for the pam_sm_chauthtok function and it instructs this function to permit root to change the user\*(Aqs password without entering the old password\&.
+.RE
+.PP
+\fBexpired\fR
+.RS 4
+An argument intended for the account and chauthtok module parts\&. It instructs the module to act as if the user\*(Aqs password has expired
+.RE
+.PP
+\fBfail_1\fR
+.RS 4
+This instructs the module to make its first function fail\&.
+.RE
+.PP
+\fBfail_2\fR
+.RS 4
+This instructs the module to make its second function (if there is one) fail\&.
+.RE
+.PP
+\fBprelim\fR
+.RS 4
+For pam_sm_chauthtok, means fail on PAM_PRELIM_CHECK\&.
+.RE
+.PP
+\fBrequired\fR
+.RS 4
+For pam_sm_chauthtok, means fail if the user hasn\*(Aqt already been authenticated by this module\&. (See stress_new_pwd data string in the NOTES\&.)
+.RE
+.SH "MODULE TYPES PROVIDED"
+.PP
+All module types (\fBauth\fR,
+\fBaccount\fR,
+\fBpassword\fR
+and
+\fBsession\fR) are provided\&.
+.SH "RETURN VALUES"
+.PP
+PAM_BUF_ERR
+.RS 4
+Memory buffer error\&.
+.RE
+.PP
+PAM_PERM_DENIED
+.RS 4
+Permission denied\&.
+.RE
+.PP
+PAM_AUTH_ERR
+.RS 4
+Access to the system was denied\&.
+.RE
+.PP
+PAM_CONV_ERR
+.RS 4
+Conversation failure\&.
+.RE
+.PP
+PAM_SUCCESS
+.RS 4
+The function passes all checks\&.
+.RE
+.PP
+PAM_USER_UNKNOWN
+.RS 4
+The user is not known to the system\&.
+.RE
+.PP
+PAM_CRED_ERR
+.RS 4
+Failure involving user credentials\&.
+.RE
+.PP
+PAM_NEW_AUTHTOK_REQD
+.RS 4
+Authentication token is no longer valid; new one required\&.
+.RE
+.PP
+PAM_SESSION_ERR
+.RS 4
+Session failure\&.
+.RE
+.PP
+PAM_TRY_AGAIN
+.RS 4
+Failed preliminary check by service\&.
+.RE
+.PP
+PAM_AUTHTOK_LOCK_BUSY
+.RS 4
+Authentication token lock busy\&.
+.RE
+.PP
+PAM_AUTHTOK_ERR
+.RS 4
+Authentication token manipulation error\&.
+.RE
+.PP
+PAM_SYSTEM_ERR
+.RS 4
+System error\&.
+.RE
+.SH "NOTES"
+.PP
+This module uses the stress_new_pwd data string which tells pam_sm_chauthtok that pam_sm_acct_mgmt says we need a new password\&. The only possible value for this data string is \*(Aqyes\*(Aq\&.
+.SH "EXAMPLES"
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+#%PAM\-1\&.0
+#
+# Any of the following will suffice
+account required pam_stress\&.so
+auth required pam_stress\&.so
+password required pam_stress\&.so
+session required pam_stress\&.so
+
+.fi
+.if n \{\
+.RE
+.\}
+.SH "SEE ALSO"
+.PP
+\fBpam.conf\fR(5),
+\fBpam.d\fR(5),
+\fBpam\fR(8)\&.
+.SH "AUTHORS"
+.PP
+The pam_stress PAM module was developed by Andrew Morgan <morgan@linux\&.kernel\&.org>\&. The man page for pam_stress was written by Lucas Ramage <ramage\&.lucas@protonmail\&.com>\&.
diff --git a/modules/pam_stress/pam_stress.8.xml b/modules/pam_stress/pam_stress.8.xml
new file mode 100644
index 00000000..98888b1c
--- /dev/null
+++ b/modules/pam_stress/pam_stress.8.xml
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id='pam_stress'>
+
+ <refmeta>
+ <refentrytitle>pam_stress</refentrytitle>
+ <manvolnum>8</manvolnum>
+ <refmiscinfo class='setdesc'>Linux-PAM Manual</refmiscinfo>
+ </refmeta>
+
+ <refnamediv id='pam_stress-name'>
+ <refname>pam_stress</refname>
+ <refpurpose>The stress-testing PAM module</refpurpose>
+ </refnamediv>
+
+<!-- body begins here -->
+
+ <refsynopsisdiv>
+ <cmdsynopsis id="pam_stress-cmdsynopsis">
+ <command>pam_stress.so</command>
+ <arg choice="opt">
+ debug
+ </arg>
+ <arg choice="opt">
+ no_warn
+ </arg>
+ <arg choice="opt">
+ use_first_pass
+ </arg>
+ <arg choice="opt">
+ try_first_pass
+ </arg>
+ <arg choice="opt">
+ rootok
+ </arg>
+ <arg choice="opt">
+ expired
+ </arg>
+ <arg choice="opt">
+ fail_1
+ </arg>
+ <arg choice="opt">
+ fail_2
+ </arg>
+ <arg choice="opt">
+ prelim
+ </arg>
+ <arg choice="opt">
+ required
+ </arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1 id="pam_stress-description">
+ <title>DESCRIPTION</title>
+ <para>
+ The pam_stress PAM module is mainly intended to give the impression of failing as a fully
+functioning module might.
+ </para>
+ </refsect1>
+
+ <refsect1 id="pam_stress-options">
+ <title>OPTIONS</title>
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <option>debug</option>
+ </term>
+ <listitem>
+ <para>
+ Put lots of information in syslog.
+ *NOTE* this option writes passwords to syslog, so don't use anything sensitive when testing.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>no_warn</option>
+ </term>
+ <listitem>
+ <para>
+ Do not give warnings about things (otherwise warnings are issued
+ via the conversation function)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>use_first_pass</option>
+ </term>
+ <listitem>
+ <para>
+ Do not prompt for a password, for pam_sm_authentication
+ function just use item PAM_AUTHTOK.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>try_first_pass</option>
+ </term>
+ <listitem>
+ <para>
+ Do not prompt for a password unless there has been no
+ previous authentication token (item PAM_AUTHTOK is NULL)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>rootok</option>
+ </term>
+ <listitem>
+ <para>
+ This is intended for the pam_sm_chauthtok function and
+ it instructs this function to permit root to change
+ the user's password without entering the old password.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>expired</option>
+ </term>
+ <listitem>
+ <para>
+ An argument intended for the account and chauthtok module
+ parts. It instructs the module to act as if the user's
+ password has expired
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>fail_1</option>
+ </term>
+ <listitem>
+ <para>
+ This instructs the module to make its first function fail.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>fail_2</option>
+ </term>
+ <listitem>
+ <para>
+ This instructs the module to make its second function (if there
+ is one) fail.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>prelim</option>
+ </term>
+ <listitem>
+ <para>
+ For pam_sm_chauthtok, means fail on PAM_PRELIM_CHECK.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>required</option>
+ </term>
+ <listitem>
+ <para>
+ For pam_sm_chauthtok, means fail if the user hasn't already
+ been authenticated by this module. (See stress_new_pwd data
+ string in the NOTES.)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id="pam_stress-types">
+ <title>MODULE TYPES PROVIDED</title>
+ <para>
+ All module types (<option>auth</option>, <option>account</option>,
+ <option>password</option> and <option>session</option>) are provided.
+ </para>
+ </refsect1>
+
+ <refsect1 id="pam_stress-return_values">
+ <title>RETURN VALUES</title>
+ <variablelist>
+ <varlistentry>
+ <term>PAM_BUF_ERR</term>
+ <listitem>
+ <para>
+ Memory buffer error.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_PERM_DENIED</term>
+ <listitem>
+ <para>
+ Permission denied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_AUTH_ERR</term>
+ <listitem>
+ <para>
+ Access to the system was denied.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_CONV_ERR</term>
+ <listitem>
+ <para>
+ Conversation failure.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_SUCCESS</term>
+ <listitem>
+ <para>
+ The function passes all checks.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_USER_UNKNOWN</term>
+ <listitem>
+ <para>
+ The user is not known to the system.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_CRED_ERR</term>
+ <listitem>
+ <para>
+ Failure involving user credentials.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_NEW_AUTHTOK_REQD</term>
+ <listitem>
+ <para>
+ Authentication token is no longer valid; new one required.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_SESSION_ERR</term>
+ <listitem>
+ <para>
+ Session failure.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_TRY_AGAIN</term>
+ <listitem>
+ <para>
+ Failed preliminary check by service.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_AUTHTOK_LOCK_BUSY</term>
+ <listitem>
+ <para>
+ Authentication token lock busy.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_AUTHTOK_ERR</term>
+ <listitem>
+ <para>
+ Authentication token manipulation error.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PAM_SYSTEM_ERR</term>
+ <listitem>
+ <para>
+ System error.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1 id='pam_stress-notes'>
+ <title>NOTES</title>
+ <para>
+ This module uses the stress_new_pwd data string which tells
+ pam_sm_chauthtok that pam_sm_acct_mgmt says we need a new password.
+ The only possible value for this data string is 'yes'.
+ </para>
+ </refsect1>
+
+ <refsect1 id='pam_stress-examples'>
+ <title>EXAMPLES</title>
+ <programlisting>
+#%PAM-1.0
+#
+# Any of the following will suffice
+account required pam_stress.so
+auth required pam_stress.so
+password required pam_stress.so
+session required pam_stress.so
+ </programlisting>
+ </refsect1>
+
+ <refsect1 id="pam_stress-see_also">
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry>.
+ </para>
+ </refsect1>
+
+ <refsect1 id="pam_stress-authors">
+ <title>AUTHORS</title>
+ <para>
+ The pam_stress PAM module was developed by
+ Andrew Morgan &lt;morgan@linux.kernel.org&gt;.
+ The man page for pam_stress was written by
+ Lucas Ramage &lt;ramage.lucas@protonmail.com&gt;.
+ </para>
+ </refsect1>
+</refentry>
diff --git a/modules/pam_succeed_if/Makefile.in b/modules/pam_succeed_if/Makefile.in
index fa26cbea..995b6db5 100644
--- a/modules/pam_succeed_if/Makefile.in
+++ b/modules/pam_succeed_if/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_succeed_if
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_succeed_if/pam_succeed_if.8 b/modules/pam_succeed_if/pam_succeed_if.8
index aa8ecdbd..8b33c62a 100644
--- a/modules/pam_succeed_if/pam_succeed_if.8
+++ b/modules/pam_succeed_if/pam_succeed_if.8
@@ -2,12 +2,12 @@
.\" Title: pam_succeed_if
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM
.\" Source: Linux-PAM
.\" Language: English
.\"
-.TH "PAM_SUCCEED_IF" "8" "06/08/2020" "Linux-PAM" "Linux\-PAM"
+.TH "PAM_SUCCEED_IF" "8" "09/03/2021" "Linux-PAM" "Linux\-PAM"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_tally/Makefile.am b/modules/pam_tally/Makefile.am
deleted file mode 100644
index 3a973943..00000000
--- a/modules/pam_tally/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (c) 2005, 2006, 2007, 2009 Thorsten Kukuk <kukuk@thkukuk.de>
-#
-
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-
-EXTRA_DIST = $(XMLS)
-
-if HAVE_DOC
-dist_man_MANS = pam_tally.8
-endif
-XMLS = README.xml pam_tally.8.xml
-dist_check_SCRIPTS = tst-pam_tally
-TESTS = $(dist_check_SCRIPTS)
-
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-
-noinst_HEADERS = faillog.h
-
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-
-pam_tally_la_LDFLAGS = -no-undefined -avoid-version -module
-pam_tally_la_LIBADD = $(top_builddir)/libpam/libpam.la
-if HAVE_VERSIONING
- pam_tally_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
-endif
-
-securelib_LTLIBRARIES = pam_tally.la
-sbin_PROGRAMS = pam_tally
-
-pam_tally_SOURCES = pam_tally_app.c
-
-if ENABLE_REGENERATE_MAN
-dist_noinst_DATA = README
--include $(top_srcdir)/Make.xml.rules
-endif
diff --git a/modules/pam_tally/Makefile.in b/modules/pam_tally/Makefile.in
deleted file mode 100644
index 3d11dd95..00000000
--- a/modules/pam_tally/Makefile.in
+++ /dev/null
@@ -1,1221 +0,0 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#
-# Copyright (c) 2005, 2006, 2007, 2009 Thorsten Kukuk <kukuk@thkukuk.de>
-#
-
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
-sbin_PROGRAMS = pam_tally$(EXEEXT)
-subdir = modules/pam_tally
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
- $(top_srcdir)/m4/jh_path_xml_catalog.m4 \
- $(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
- $(am__dist_noinst_DATA_DIST) $(noinst_HEADERS) \
- $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" \
- "$(DESTDIR)$(man8dir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-LTLIBRARIES = $(securelib_LTLIBRARIES)
-pam_tally_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
-pam_tally_la_SOURCES = pam_tally.c
-pam_tally_la_OBJECTS = pam_tally.lo
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-pam_tally_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(pam_tally_la_LDFLAGS) $(LDFLAGS) -o $@
-am_pam_tally_OBJECTS = pam_tally_app.$(OBJEXT)
-pam_tally_OBJECTS = $(am_pam_tally_OBJECTS)
-pam_tally_LDADD = $(LDADD)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/pam_tally.Plo \
- ./$(DEPDIR)/pam_tally_app.Po
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = pam_tally.c $(pam_tally_SOURCES)
-DIST_SOURCES = pam_tally.c $(pam_tally_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(dist_man_MANS)
-am__dist_noinst_DATA_DIST = README
-DATA = $(dist_noinst_DATA)
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = { \
- $(am__tty_colors_dummy); \
- if test "X$(AM_COLOR_TESTS)" = Xno; then \
- am__color_tests=no; \
- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
- am__color_tests=yes; \
- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
- am__color_tests=yes; \
- fi; \
- if test $$am__color_tests = yes; then \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
- fi; \
-}
-am__recheck_rx = ^[ ]*:recheck:[ ]*
-am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
-am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
- recheck = 1; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- { \
- if ((getline line2 < ($$0 ".log")) < 0) \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
- { \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
- { \
- break; \
- } \
- }; \
- if (recheck) \
- print $$0; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
- print "fatal: making $@: " msg | "cat >&2"; \
- exit 1; \
-} \
-function rst_section(header) \
-{ \
- print header; \
- len = length(header); \
- for (i = 1; i <= len; i = i + 1) \
- printf "="; \
- printf "\n\n"; \
-} \
-{ \
- copy_in_global_log = 1; \
- global_test_result = "RUN"; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".trs"); \
- if (line ~ /$(am__global_test_result_rx)/) \
- { \
- sub("$(am__global_test_result_rx)", "", line); \
- sub("[ ]*$$", "", line); \
- global_test_result = line; \
- } \
- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
- copy_in_global_log = 0; \
- }; \
- if (copy_in_global_log) \
- { \
- rst_section(global_test_result ": " $$0); \
- while ((rc = (getline line < ($$0 ".log"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".log"); \
- print line; \
- }; \
- printf "\n"; \
- }; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test. Creates the
-# directory for the log if needed. Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-case "$@" in \
- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
- *) am__odir=.;; \
-esac; \
-test "x$$am__odir" = x"." || test -d "$$am__odir" \
- || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
- am__expect_failure=yes;; \
- *) \
- am__expect_failure=no;; \
-esac; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed). The result is saved in the shell variable
-# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
- $(TEST_LOG_FLAGS)
-am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
- $(top_srcdir)/build-aux/depcomp \
- $(top_srcdir)/build-aux/test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BROWSER = @BROWSER@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-ECONF_CFLAGS = @ECONF_CFLAGS@
-ECONF_LIBS = @ECONF_LIBS@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FO2PDF = @FO2PDF@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
-LIBCRYPT = @LIBCRYPT@
-LIBDB = @LIBDB@
-LIBDL = @LIBDL@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBPRELUDE_CFLAGS = @LIBPRELUDE_CFLAGS@
-LIBPRELUDE_CONFIG = @LIBPRELUDE_CONFIG@
-LIBPRELUDE_CONFIG_PREFIX = @LIBPRELUDE_CONFIG_PREFIX@
-LIBPRELUDE_LDFLAGS = @LIBPRELUDE_LDFLAGS@
-LIBPRELUDE_LIBS = @LIBPRELUDE_LIBS@
-LIBPRELUDE_PREFIX = @LIBPRELUDE_PREFIX@
-LIBPRELUDE_PTHREAD_CFLAGS = @LIBPRELUDE_PTHREAD_CFLAGS@
-LIBS = @LIBS@
-LIBSELINUX = @LIBSELINUX@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NIS_CFLAGS = @NIS_CFLAGS@
-NIS_LIBS = @NIS_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NSL_CFLAGS = @NSL_CFLAGS@
-NSL_LIBS = @NSL_LIBS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-SCONFIGDIR = @SCONFIGDIR@
-SECUREDIR = @SECUREDIR@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
-STRIP = @STRIP@
-TIRPC_CFLAGS = @TIRPC_CFLAGS@
-TIRPC_LIBS = @TIRPC_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMLCATALOG = @XMLCATALOG@
-XMLLINT = @XMLLINT@
-XML_CATALOG_FILE = @XML_CATALOG_FILE@
-XSLTPROC = @XSLTPROC@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
-pam_xauth_path = @pam_xauth_path@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-EXTRA_DIST = $(XMLS)
-@HAVE_DOC_TRUE@dist_man_MANS = pam_tally.8
-XMLS = README.xml pam_tally.8.xml
-dist_check_SCRIPTS = tst-pam_tally
-TESTS = $(dist_check_SCRIPTS)
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-noinst_HEADERS = faillog.h
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-
-pam_tally_la_LDFLAGS = -no-undefined -avoid-version -module \
- $(am__append_1)
-pam_tally_la_LIBADD = $(top_builddir)/libpam/libpam.la
-securelib_LTLIBRARIES = pam_tally.la
-pam_tally_SOURCES = pam_tally_app.c
-@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/pam_tally/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu modules/pam_tally/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- || test -f $$p1 \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-install-securelibLTLIBRARIES: $(securelib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(securelibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(securelibdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(securelibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(securelibdir)"; \
- }
-
-uninstall-securelibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(securelibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(securelibdir)/$$f"; \
- done
-
-clean-securelibLTLIBRARIES:
- -test -z "$(securelib_LTLIBRARIES)" || rm -f $(securelib_LTLIBRARIES)
- @list='$(securelib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-pam_tally.la: $(pam_tally_la_OBJECTS) $(pam_tally_la_DEPENDENCIES) $(EXTRA_pam_tally_la_DEPENDENCIES)
- $(AM_V_CCLD)$(pam_tally_la_LINK) -rpath $(securelibdir) $(pam_tally_la_OBJECTS) $(pam_tally_la_LIBADD) $(LIBS)
-
-pam_tally$(EXEEXT): $(pam_tally_OBJECTS) $(pam_tally_DEPENDENCIES) $(EXTRA_pam_tally_DEPENDENCIES)
- @rm -f pam_tally$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(pam_tally_OBJECTS) $(pam_tally_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_tally.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_tally_app.Po@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-man8: $(dist_man_MANS)
- @$(NORMAL_INSTALL)
- @list1=''; \
- list2='$(dist_man_MANS)'; \
- test -n "$(man8dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.8[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list=''; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.8[a-z]*$$/p'; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
- rm -f $< $@
- $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
- @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__set_TESTS_bases); \
- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
- redo_bases=`for i in $$bases; do \
- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
- done`; \
- if test -n "$$redo_bases"; then \
- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
- if $(am__make_dryrun); then :; else \
- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- fi; \
- fi; \
- if test -n "$$am__remaking_logs"; then \
- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
- "recursion detected" >&2; \
- elif test -n "$$redo_logs"; then \
- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
- fi; \
- if $(am__make_dryrun); then :; else \
- st=0; \
- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
- for i in $$redo_bases; do \
- test -f $$i.trs && test -r $$i.trs \
- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
- test -f $$i.log && test -r $$i.log \
- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
- done; \
- test $$st -eq 0 || exit 1; \
- fi
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for b in $$bases; do echo $$b; done \
- | $(am__create_global_log); \
- } >$(TEST_SUITE_LOG).tmp || exit 1; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS: $(dist_check_SCRIPTS)
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- exit $$?;
-recheck: all $(dist_check_SCRIPTS)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- bases=`for i in $$bases; do echo $$i; done \
- | $(am__list_recheck_tests)` || exit 1; \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- log_list=`echo $$log_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
- am__force_recheck=am--force-recheck \
- TEST_LOGS="$$log_list"; \
- exit $$?
-tst-pam_tally.log: tst-pam_tally
- @p='tst-pam_tally'; \
- b='tst-pam_tally'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@ @p='$<'; \
-@am__EXEEXT_TRUE@ $(am__set_b); \
-@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) $(DATA) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
- clean-securelibLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -f ./$(DEPDIR)/pam_tally.Plo
- -rm -f ./$(DEPDIR)/pam_tally_app.Po
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man install-securelibLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/pam_tally.Plo
- -rm -f ./$(DEPDIR)/pam_tally_app.Po
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man uninstall-sbinPROGRAMS \
- uninstall-securelibLTLIBRARIES
-
-uninstall-man: uninstall-man8
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
- check-am clean clean-generic clean-libtool clean-sbinPROGRAMS \
- clean-securelibLTLIBRARIES cscopelist-am ctags ctags-am \
- distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
- install-securelibLTLIBRARIES install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- recheck tags tags-am uninstall uninstall-am uninstall-man \
- uninstall-man8 uninstall-sbinPROGRAMS \
- uninstall-securelibLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-@ENABLE_REGENERATE_MAN_TRUE@-include $(top_srcdir)/Make.xml.rules
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/modules/pam_tally/README b/modules/pam_tally/README
deleted file mode 100644
index c88e2a24..00000000
--- a/modules/pam_tally/README
+++ /dev/null
@@ -1,145 +0,0 @@
-pam_tally — The login counter (tallying) module
-
-â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
-
-DESCRIPTION
-
-This module maintains a count of attempted accesses, can reset count on
-success, can deny access if too many attempts fail.
-
-pam_tally has several limitations, which are solved with pam_tally2. For this
-reason pam_tally is deprecated and will be removed in a future release.
-
-pam_tally comes in two parts: pam_tally.so and pam_tally. The former is the PAM
-module and the latter, a stand-alone program. pam_tally is an (optional)
-application which can be used to interrogate and manipulate the counter file.
-It can display user counts, set individual counts, or clear all counts. Setting
-artificially high counts may be useful for blocking users without changing
-their passwords. For example, one might find it useful to clear all counts
-every midnight from a cron job. The faillog(8) command can be used instead of
-pam_tally to to maintain the counter file.
-
-Normally, failed attempts to access root will not cause the root account to
-become blocked, to prevent denial-of-service: if your users aren't given shell
-accounts and root may only login via su or at the machine console (not telnet/
-rsh, etc), this is safe.
-
-OPTIONS
-
-GLOBAL OPTIONS
-
- This can be used for auth and account module types.
-
- onerr=[fail|succeed]
-
- If something weird happens (like unable to open the file), return with
- PAM_SUCCESS if onerr=succeed is given, else with the corresponding PAM
- error code.
-
- file=/path/to/counter
-
- File where to keep counts. Default is /var/log/faillog.
-
- audit
-
- Will log the user name into the system log if the user is not found.
-
- silent
-
- Don't print informative messages. The messages printed without the
- silent option leak presence of accounts on the system because they are
- not printed for non-existing accounts.
-
- no_log_info
-
- Don't log informative messages via syslog(3).
-
-AUTH OPTIONS
-
- Authentication phase first checks if user should be denied access and if
- not it increments attempted login counter. Then on call to pam_setcred(3)
- it resets the attempts counter.
-
- deny=n
-
- Deny access if tally for this user exceeds n.
-
- lock_time=n
-
- Always deny for n seconds after failed attempt.
-
- unlock_time=n
-
- Allow access after n seconds after failed attempt. If this option is
- used the user will be locked out for the specified amount of time after
- he exceeded his maximum allowed attempts. Otherwise the account is
- locked until the lock is removed by a manual intervention of the system
- administrator.
-
- magic_root
-
- If the module is invoked by a user with uid=0 the counter is not
- incremented. The sysadmin should use this for user launched services,
- like su, otherwise this argument should be omitted.
-
- no_lock_time
-
- Do not use the .fail_locktime field in /var/log/faillog for this user.
-
- no_reset
-
- Don't reset count on successful entry, only decrement.
-
- even_deny_root_account
-
- Root account can become unavailable.
-
- per_user
-
- If /var/log/faillog contains a non-zero .fail_max/.fail_locktime field
- for this user then use it instead of deny=n/ lock_time=n parameter.
-
- no_lock_time
-
- Don't use .fail_locktime filed in /var/log/faillog for this user.
-
-ACCOUNT OPTIONS
-
- Account phase resets attempts counter if the user is not magic root. This
- phase can be used optionally for services which don't call pam_setcred(3)
- correctly or if the reset should be done regardless of the failure of the
- account phase of other modules.
-
- magic_root
-
- If the module is invoked by a user with uid=0 the counter is not
- incremented. The sysadmin should use this for user launched services,
- like su, otherwise this argument should be omitted.
-
- no_reset
-
- Don't reset count on successful entry, only decrement.
-
-EXAMPLES
-
-Add the following line to /etc/pam.d/login to lock the account after too many
-failed logins. The number of allowed fails is specified by /var/log/faillog and
-needs to be set with pam_tally or faillog(8) before.
-
-auth required pam_securetty.so
-auth required pam_tally.so per_user
-auth required pam_env.so
-auth required pam_unix.so
-auth required pam_nologin.so
-account required pam_unix.so
-password required pam_unix.so
-session required pam_limits.so
-session required pam_unix.so
-session required pam_lastlog.so nowtmp
-session optional pam_mail.so standard
-
-
-AUTHOR
-
-pam_tally was written by Tim Baverstock and Tomas Mraz.
-
diff --git a/modules/pam_tally/README.xml b/modules/pam_tally/README.xml
deleted file mode 100644
index 3c6de50e..00000000
--- a/modules/pam_tally/README.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.docbook.org/xml/4.3/docbookx.dtd"
-[
-<!--
-<!ENTITY pamaccess SYSTEM "pam_tally.8.xml">
--->
-]>
-
-<article>
-
- <articleinfo>
-
- <title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_tally-name"]/*)'/>
- </title>
-
- </articleinfo>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-description"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-options"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-examples"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally-author"]/*)'/>
- </section>
-
-</article>
diff --git a/modules/pam_tally/faillog.h b/modules/pam_tally/faillog.h
deleted file mode 100644
index 90756394..00000000
--- a/modules/pam_tally/faillog.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 1989 - 1994, Julianne Frances Haugh
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Julianne F. Haugh nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * faillog.h - login failure logging file format
- *
- * $Id$
- *
- * The login failure file is maintained by login(1) and faillog(8)
- * Each record in the file represents a separate UID and the file
- * is indexed in that fashion.
- */
-
-#ifndef _FAILLOG_H
-#define _FAILLOG_H
-
-struct faillog {
- short fail_cnt; /* failures since last success */
- short fail_max; /* failures before turning account off */
- char fail_line[12]; /* last failure occurred here */
- time_t fail_time; /* last failure occurred then */
- /*
- * If nonzero, the account will be re-enabled if there are no
- * failures for fail_locktime seconds since last failure.
- */
- long fail_locktime;
-};
-
-#endif
diff --git a/modules/pam_tally/pam_tally.8 b/modules/pam_tally/pam_tally.8
deleted file mode 100644
index f4d33502..00000000
--- a/modules/pam_tally/pam_tally.8
+++ /dev/null
@@ -1,256 +0,0 @@
-'\" t
-.\" Title: pam_tally
-.\" Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
-.\" Manual: Linux-PAM Manual
-.\" Source: Linux-PAM Manual
-.\" Language: English
-.\"
-.TH "PAM_TALLY" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-pam_tally \- The login counter (tallying) module
-.SH "SYNOPSIS"
-.HP \w'\fBpam_tally\&.so\fR\ 'u
-\fBpam_tally\&.so\fR [file=\fI/path/to/counter\fR] [onerr=[\fIfail\fR|\fIsucceed\fR]] [magic_root] [even_deny_root_account] [deny=\fIn\fR] [lock_time=\fIn\fR] [unlock_time=\fIn\fR] [per_user] [no_lock_time] [no_reset] [audit] [silent] [no_log_info]
-.HP \w'\fBpam_tally\fR\ 'u
-\fBpam_tally\fR [\-\-file\ \fI/path/to/counter\fR] [\-\-user\ \fIusername\fR] [\-\-reset[=\fIn\fR]] [\-\-quiet]
-.SH "DESCRIPTION"
-.PP
-This module maintains a count of attempted accesses, can reset count on success, can deny access if too many attempts fail\&.
-.PP
-pam_tally has several limitations, which are solved with pam_tally2\&. For this reason pam_tally is deprecated and will be removed in a future release\&.
-.PP
-pam_tally comes in two parts:
-\fBpam_tally\&.so\fR
-and
-\fBpam_tally\fR\&. The former is the PAM module and the latter, a stand\-alone program\&.
-\fBpam_tally\fR
-is an (optional) application which can be used to interrogate and manipulate the counter file\&. It can display user counts, set individual counts, or clear all counts\&. Setting artificially high counts may be useful for blocking users without changing their passwords\&. For example, one might find it useful to clear all counts every midnight from a cron job\&. The
-\fBfaillog\fR(8)
-command can be used instead of pam_tally to to maintain the counter file\&.
-.PP
-Normally, failed attempts to access
-\fIroot\fR
-will
-\fBnot\fR
-cause the root account to become blocked, to prevent denial\-of\-service: if your users aren\*(Aqt given shell accounts and root may only login via
-\fBsu\fR
-or at the machine console (not telnet/rsh, etc), this is safe\&.
-.SH "OPTIONS"
-.PP
-GLOBAL OPTIONS
-.RS 4
-This can be used for
-\fIauth\fR
-and
-\fIaccount\fR
-module types\&.
-.PP
-\fBonerr=[\fR\fB\fIfail\fR\fR\fB|\fR\fB\fIsucceed\fR\fR\fB]\fR
-.RS 4
-If something weird happens (like unable to open the file), return with
-\fBPAM_SUCCESS\fR
-if
-\fBonerr=\fR\fB\fIsucceed\fR\fR
-is given, else with the corresponding PAM error code\&.
-.RE
-.PP
-\fBfile=\fR\fB\fI/path/to/counter\fR\fR
-.RS 4
-File where to keep counts\&. Default is
-/var/log/faillog\&.
-.RE
-.PP
-\fBaudit\fR
-.RS 4
-Will log the user name into the system log if the user is not found\&.
-.RE
-.PP
-\fBsilent\fR
-.RS 4
-Don\*(Aqt print informative messages\&. The messages printed without the
-\fIsilent\fR
-option leak presence of accounts on the system because they are not printed for non\-existing accounts\&.
-.RE
-.PP
-\fBno_log_info\fR
-.RS 4
-Don\*(Aqt log informative messages via
-\fBsyslog\fR(3)\&.
-.RE
-.RE
-.PP
-AUTH OPTIONS
-.RS 4
-Authentication phase first checks if user should be denied access and if not it increments attempted login counter\&. Then on call to
-\fBpam_setcred\fR(3)
-it resets the attempts counter\&.
-.PP
-\fBdeny=\fR\fB\fIn\fR\fR
-.RS 4
-Deny access if tally for this user exceeds
-\fIn\fR\&.
-.RE
-.PP
-\fBlock_time=\fR\fB\fIn\fR\fR
-.RS 4
-Always deny for
-\fIn\fR
-seconds after failed attempt\&.
-.RE
-.PP
-\fBunlock_time=\fR\fB\fIn\fR\fR
-.RS 4
-Allow access after
-\fIn\fR
-seconds after failed attempt\&. If this option is used the user will be locked out for the specified amount of time after he exceeded his maximum allowed attempts\&. Otherwise the account is locked until the lock is removed by a manual intervention of the system administrator\&.
-.RE
-.PP
-\fBmagic_root\fR
-.RS 4
-If the module is invoked by a user with uid=0 the counter is not incremented\&. The sysadmin should use this for user launched services, like
-\fBsu\fR, otherwise this argument should be omitted\&.
-.RE
-.PP
-\fBno_lock_time\fR
-.RS 4
-Do not use the \&.fail_locktime field in
-/var/log/faillog
-for this user\&.
-.RE
-.PP
-\fBno_reset\fR
-.RS 4
-Don\*(Aqt reset count on successful entry, only decrement\&.
-.RE
-.PP
-\fBeven_deny_root_account\fR
-.RS 4
-Root account can become unavailable\&.
-.RE
-.PP
-\fBper_user\fR
-.RS 4
-If
-/var/log/faillog
-contains a non\-zero \&.fail_max/\&.fail_locktime field for this user then use it instead of
-\fBdeny=\fR\fB\fIn\fR\fR/
-\fBlock_time=\fR\fB\fIn\fR\fR
-parameter\&.
-.RE
-.PP
-\fBno_lock_time\fR
-.RS 4
-Don\*(Aqt use \&.fail_locktime filed in
-/var/log/faillog
-for this user\&.
-.RE
-.RE
-.PP
-ACCOUNT OPTIONS
-.RS 4
-Account phase resets attempts counter if the user is
-\fBnot\fR
-magic root\&. This phase can be used optionally for services which don\*(Aqt call
-\fBpam_setcred\fR(3)
-correctly or if the reset should be done regardless of the failure of the account phase of other modules\&.
-.PP
-\fBmagic_root\fR
-.RS 4
-If the module is invoked by a user with uid=0 the counter is not incremented\&. The sysadmin should use this for user launched services, like
-\fBsu\fR, otherwise this argument should be omitted\&.
-.RE
-.PP
-\fBno_reset\fR
-.RS 4
-Don\*(Aqt reset count on successful entry, only decrement\&.
-.RE
-.RE
-.SH "MODULE TYPES PROVIDED"
-.PP
-The
-\fBauth\fR
-and
-\fBaccount\fR
-module types are provided\&.
-.SH "RETURN VALUES"
-.PP
-PAM_AUTH_ERR
-.RS 4
-A invalid option was given, the module was not able to retrieve the user name, no valid counter file was found, or too many failed logins\&.
-.RE
-.PP
-PAM_SUCCESS
-.RS 4
-Everything was successful\&.
-.RE
-.PP
-PAM_USER_UNKNOWN
-.RS 4
-User not known\&.
-.RE
-.SH "EXAMPLES"
-.PP
-Add the following line to
-/etc/pam\&.d/login
-to lock the account after too many failed logins\&. The number of allowed fails is specified by
-/var/log/faillog
-and needs to be set with pam_tally or
-\fBfaillog\fR(8)
-before\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-auth required pam_securetty\&.so
-auth required pam_tally\&.so per_user
-auth required pam_env\&.so
-auth required pam_unix\&.so
-auth required pam_nologin\&.so
-account required pam_unix\&.so
-password required pam_unix\&.so
-session required pam_limits\&.so
-session required pam_unix\&.so
-session required pam_lastlog\&.so nowtmp
-session optional pam_mail\&.so standard
-
-.fi
-.if n \{\
-.RE
-.\}
-.SH "FILES"
-.PP
-/var/log/faillog
-.RS 4
-failure logging file
-.RE
-.SH "SEE ALSO"
-.PP
-\fBfaillog\fR(8),
-\fBpam.conf\fR(5),
-\fBpam.d\fR(5),
-\fBpam\fR(8)
-.SH "AUTHOR"
-.PP
-pam_tally was written by Tim Baverstock and Tomas Mraz\&.
diff --git a/modules/pam_tally/pam_tally.8.xml b/modules/pam_tally/pam_tally.8.xml
deleted file mode 100644
index 80ad060d..00000000
--- a/modules/pam_tally/pam_tally.8.xml
+++ /dev/null
@@ -1,459 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="pam_tally">
-
- <refmeta>
- <refentrytitle>pam_tally</refentrytitle>
- <manvolnum>8</manvolnum>
- <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
- </refmeta>
-
- <refnamediv id="pam_tally-name">
- <refname>pam_tally</refname>
- <refpurpose>The login counter (tallying) module</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <cmdsynopsis id="pam_tally-cmdsynopsis1">
- <command>pam_tally.so</command>
- <arg choice="opt">
- file=<replaceable>/path/to/counter</replaceable>
- </arg>
- <arg choice="opt">
- onerr=[<replaceable>fail</replaceable>|<replaceable>succeed</replaceable>]
- </arg>
- <arg choice="opt">
- magic_root
- </arg>
- <arg choice="opt">
- even_deny_root_account
- </arg>
- <arg choice="opt">
- deny=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- lock_time=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- unlock_time=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- per_user
- </arg>
- <arg choice="opt">
- no_lock_time
- </arg>
- <arg choice="opt">
- no_reset
- </arg>
- <arg choice="opt">
- audit
- </arg>
- <arg choice="opt">
- silent
- </arg>
- <arg choice="opt">
- no_log_info
- </arg>
- </cmdsynopsis>
- <cmdsynopsis id="pam_tally-cmdsynopsis2">
- <command>pam_tally</command>
- <arg choice="opt">
- --file <replaceable>/path/to/counter</replaceable>
- </arg>
- <arg choice="opt">
- --user <replaceable>username</replaceable>
- </arg>
- <arg choice="opt">
- --reset[=<replaceable>n</replaceable>]
- </arg>
- <arg choice="opt">
- --quiet
- </arg>
- </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1 id="pam_tally-description">
-
- <title>DESCRIPTION</title>
-
- <para>
- This module maintains a count of attempted accesses, can
- reset count on success, can deny access if too many attempts
- fail.
- </para>
- <para>
- pam_tally has several limitations, which are solved with
- pam_tally2. For this reason pam_tally is deprecated and
- will be removed in a future release.
- </para>
- <para>
- pam_tally comes in two parts:
- <emphasis remap='B'>pam_tally.so</emphasis> and
- <command>pam_tally</command>. The former is the PAM module and
- the latter, a stand-alone program. <command>pam_tally</command>
- is an (optional) application which can be used to interrogate and
- manipulate the counter file. It can display user counts, set
- individual counts, or clear all counts. Setting artificially high
- counts may be useful for blocking users without changing their
- passwords. For example, one might find it useful to clear all counts
- every midnight from a cron job. The
- <citerefentry>
- <refentrytitle>faillog</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> command can be used instead of pam_tally to to
- maintain the counter file.
- </para>
- <para>
- Normally, failed attempts to access <emphasis>root</emphasis> will
- <emphasis remap='B'>not</emphasis> cause the root account to become
- blocked, to prevent denial-of-service: if your users aren't given
- shell accounts and root may only login via <command>su</command> or
- at the machine console (not telnet/rsh, etc), this is safe.
- </para>
- </refsect1>
-
- <refsect1 id="pam_tally-options">
-
- <title>OPTIONS</title>
- <variablelist>
- <varlistentry>
- <term>
- GLOBAL OPTIONS
- </term>
- <listitem>
- <para>
- This can be used for <emphasis>auth</emphasis> and
- <emphasis>account</emphasis> module types.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>onerr=[<replaceable>fail</replaceable>|<replaceable>succeed</replaceable>]</option>
- </term>
- <listitem>
- <para>
- If something weird happens (like unable to open the file),
- return with <errorcode>PAM_SUCCESS</errorcode> if
- <option>onerr=<replaceable>succeed</replaceable></option>
- is given, else with the corresponding PAM error code.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>file=<replaceable>/path/to/counter</replaceable></option>
- </term>
- <listitem>
- <para>
- File where to keep counts. Default is
- <filename>/var/log/faillog</filename>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>audit</option>
- </term>
- <listitem>
- <para>
- Will log the user name into the system log if the user is not found.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>silent</option>
- </term>
- <listitem>
- <para>
- Don't print informative messages. The messages printed without the <emphasis>silent</emphasis> option leak presence of accounts on the system because they are not printed for non-existing accounts.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_log_info</option>
- </term>
- <listitem>
- <para>
- Don't log informative messages via <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- AUTH OPTIONS
- </term>
- <listitem>
- <para>
- Authentication phase first checks if user should be denied
- access and if not it increments attempted login counter. Then
- on call to <citerefentry>
- <refentrytitle>pam_setcred</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry> it resets the attempts counter.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>deny=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Deny access if tally for this user exceeds
- <replaceable>n</replaceable>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>lock_time=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Always deny for <replaceable>n</replaceable> seconds
- after failed attempt.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>unlock_time=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Allow access after <replaceable>n</replaceable> seconds
- after failed attempt. If this option is used the user will
- be locked out for the specified amount of time after he
- exceeded his maximum allowed attempts. Otherwise the
- account is locked until the lock is removed by a manual
- intervention of the system administrator.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>magic_root</option>
- </term>
- <listitem>
- <para>
- If the module is invoked by a user with uid=0 the
- counter is not incremented. The sysadmin should use this
- for user launched services, like <command>su</command>,
- otherwise this argument should be omitted.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_lock_time</option>
- </term>
- <listitem>
- <para>
- Do not use the .fail_locktime field in
- <filename>/var/log/faillog</filename> for this user.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_reset</option>
- </term>
- <listitem>
- <para>
- Don't reset count on successful entry, only decrement.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>even_deny_root_account</option>
- </term>
- <listitem>
- <para>
- Root account can become unavailable.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>per_user</option>
- </term>
- <listitem>
- <para>
- If <filename>/var/log/faillog</filename> contains a non-zero
- .fail_max/.fail_locktime field for this user then use it
- instead of <option>deny=<replaceable>n</replaceable></option>/
- <option>lock_time=<replaceable>n</replaceable></option> parameter.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_lock_time</option>
- </term>
- <listitem>
- <para>
- Don't use .fail_locktime filed in
- <filename>/var/log/faillog</filename> for this user.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
- <term>
- ACCOUNT OPTIONS
- </term>
- <listitem>
- <para>
- Account phase resets attempts counter if the user is
- <emphasis remap='B'>not</emphasis> magic root.
- This phase can be used optionally for services which don't call
- <citerefentry>
- <refentrytitle>pam_setcred</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry> correctly or if the reset should be done regardless
- of the failure of the account phase of other modules.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>magic_root</option>
- </term>
- <listitem>
- <para>
- If the module is invoked by a user with uid=0 the
- counter is not incremented. The sysadmin should use this
- for user launched services, like <command>su</command>,
- otherwise this argument should be omitted.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_reset</option>
- </term>
- <listitem>
- <para>
- Don't reset count on successful entry, only decrement.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id="pam_tally-types">
- <title>MODULE TYPES PROVIDED</title>
- <para>
- The <option>auth</option> and <option>account</option>
- module types are provided.
- </para>
- </refsect1>
-
- <refsect1 id='pam_tally-return_values'>
- <title>RETURN VALUES</title>
- <variablelist>
- <varlistentry>
- <term>PAM_AUTH_ERR</term>
- <listitem>
- <para>
- A invalid option was given, the module was not able
- to retrieve the user name, no valid counter file
- was found, or too many failed logins.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>PAM_SUCCESS</term>
- <listitem>
- <para>
- Everything was successful.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>PAM_USER_UNKNOWN</term>
- <listitem>
- <para>
- User not known.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id='pam_tally-examples'>
- <title>EXAMPLES</title>
- <para>
- Add the following line to <filename>/etc/pam.d/login</filename> to
- lock the account after too many failed logins. The number of
- allowed fails is specified by <filename>/var/log/faillog</filename>
- and needs to be set with pam_tally or <citerefentry>
- <refentrytitle>faillog</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry> before.
- </para>
- <programlisting>
-auth required pam_securetty.so
-auth required pam_tally.so per_user
-auth required pam_env.so
-auth required pam_unix.so
-auth required pam_nologin.so
-account required pam_unix.so
-password required pam_unix.so
-session required pam_limits.so
-session required pam_unix.so
-session required pam_lastlog.so nowtmp
-session optional pam_mail.so standard
- </programlisting>
- </refsect1>
-
- <refsect1 id="pam_tally-files">
- <title>FILES</title>
- <variablelist>
- <varlistentry>
- <term><filename>/var/log/faillog</filename></term>
- <listitem>
- <para>failure logging file</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id='pam_tally-see_also'>
- <title>SEE ALSO</title>
- <para>
- <citerefentry>
- <refentrytitle>faillog</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-
- <refsect1 id='pam_tally-author'>
- <title>AUTHOR</title>
- <para>
- pam_tally was written by Tim Baverstock and Tomas Mraz.
- </para>
- </refsect1>
-
-</refentry>
diff --git a/modules/pam_tally/pam_tally.c b/modules/pam_tally/pam_tally.c
deleted file mode 100644
index 34ae6241..00000000
--- a/modules/pam_tally/pam_tally.c
+++ /dev/null
@@ -1,853 +0,0 @@
-/*
- * pam_tally module
- *
- * By Tim Baverstock <warwick@mmm.co.uk>, Multi Media Machine Ltd.
- * 5 March 1997
- *
- * Stuff stolen from pam_rootok and pam_listfile
- *
- * Changes by Tomas Mraz <tmraz@redhat.com> 5 January 2005
- * Audit option added for Tomas patch by
- * Sebastien Tricaud <toady@gscore.org> 13 January 2005
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <pwd.h>
-#include <time.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include "faillog.h"
-
-#ifndef MAIN
-#include <security/pam_modutil.h>
-#include <security/pam_ext.h>
-#endif
-#include <security/pam_modules.h>
-#include "pam_inline.h"
-
-#ifndef TRUE
-#define TRUE 1L
-#define FALSE 0L
-#endif
-
-#ifndef HAVE_FSEEKO
-#define fseeko fseek
-#endif
-
-/*---------------------------------------------------------------------*/
-
-#define DEFAULT_LOGFILE "/var/log/faillog"
-#define MODULE_NAME "pam_tally"
-
-#define tally_t unsigned short int
-#define TALLY_FMT "%hu"
-#define TALLY_HI ((tally_t)~0L)
-
-#ifndef FILENAME_MAX
-# define FILENAME_MAX MAXPATHLEN
-#endif
-
-struct fail_s {
- struct faillog fs_faillog;
-#ifndef MAIN
- time_t fs_fail_time;
-#endif /* ndef MAIN */
-};
-
-struct tally_options {
- const char *filename;
- tally_t deny;
- long lock_time;
- long unlock_time;
- unsigned int ctrl;
-};
-
-#define PHASE_UNKNOWN 0
-#define PHASE_AUTH 1
-#define PHASE_ACCOUNT 2
-#define PHASE_SESSION 3
-
-#define OPT_MAGIC_ROOT 01
-#define OPT_FAIL_ON_ERROR 02
-#define OPT_DENY_ROOT 04
-#define OPT_PER_USER 010
-#define OPT_NO_LOCK_TIME 020
-#define OPT_NO_RESET 040
-#define OPT_AUDIT 0100
-#define OPT_SILENT 0200
-#define OPT_NOLOGNOTICE 0400
-
-
-/*---------------------------------------------------------------------*/
-
-/* some syslogging */
-
-#ifdef MAIN
-#define pam_syslog tally_log
-static void
-tally_log (const pam_handle_t *pamh UNUSED, int priority UNUSED,
- const char *fmt, ...)
-{
- va_list args;
-
- va_start(args, fmt);
- fprintf(stderr, "%s: ", MODULE_NAME);
- vfprintf(stderr, fmt, args);
- fprintf(stderr,"\n");
- va_end(args);
-}
-
-#define pam_modutil_getpwnam(pamh,user) getpwnam(user)
-
-#endif
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: parse arguments --- */
-
-#ifndef MAIN
-
-static void
-log_phase_no_auth(pam_handle_t *pamh, int phase, const char *argv)
-{
- if ( phase != PHASE_AUTH ) {
- pam_syslog(pamh, LOG_ERR,
- "option %s allowed in auth phase only", argv);
- }
-}
-
-static int
-tally_parse_args(pam_handle_t *pamh, struct tally_options *opts,
- int phase, int argc, const char **argv)
-{
- memset(opts, 0, sizeof(*opts));
- opts->filename = DEFAULT_LOGFILE;
-
- for ( ; argc-- > 0; ++argv ) {
- const char *str;
-
- if ((str = pam_str_skip_prefix(*argv, "file=")) != NULL) {
- const char *from = str;
- if ( *from!='/' || strlen(from)>FILENAME_MAX-1 ) {
- pam_syslog(pamh, LOG_ERR,
- "filename not /rooted or too long; %s", *argv);
- return PAM_AUTH_ERR;
- }
- opts->filename = from;
- }
- else if ( ! strcmp( *argv, "onerr=fail" ) ) {
- opts->ctrl |= OPT_FAIL_ON_ERROR;
- }
- else if ( ! strcmp( *argv, "onerr=succeed" ) ) {
- opts->ctrl &= ~OPT_FAIL_ON_ERROR;
- }
- else if ( ! strcmp( *argv, "magic_root" ) ) {
- opts->ctrl |= OPT_MAGIC_ROOT;
- }
- else if ( ! strcmp( *argv, "even_deny_root_account" ) ) {
- log_phase_no_auth(pamh, phase, *argv);
- opts->ctrl |= OPT_DENY_ROOT;
- }
- else if ((str = pam_str_skip_prefix(*argv, "deny=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, TALLY_FMT, &opts->deny) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ((str = pam_str_skip_prefix(*argv, "lock_time=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%ld", &opts->lock_time) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ((str = pam_str_skip_prefix(*argv, "unlock_time=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%ld", &opts->unlock_time) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ( ! strcmp( *argv, "per_user" ) )
- {
- log_phase_no_auth(pamh, phase, *argv);
- opts->ctrl |= OPT_PER_USER;
- }
- else if ( ! strcmp( *argv, "no_lock_time") )
- {
- log_phase_no_auth(pamh, phase, *argv);
- opts->ctrl |= OPT_NO_LOCK_TIME;
- }
- else if ( ! strcmp( *argv, "no_reset" ) ) {
- opts->ctrl |= OPT_NO_RESET;
- }
- else if ( ! strcmp ( *argv, "audit") ) {
- opts->ctrl |= OPT_AUDIT;
- }
- else if ( ! strcmp ( *argv, "silent") ) {
- opts->ctrl |= OPT_SILENT;
- }
- else if ( ! strcmp ( *argv, "no_log_info") ) {
- opts->ctrl |= OPT_NOLOGNOTICE;
- }
- else {
- pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
- }
- }
-
- return PAM_SUCCESS;
-}
-
-#endif /* #ifndef MAIN */
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: get uid (and optionally username) from PAM or
- cline_user --- */
-
-#ifdef MAIN
-static const char *cline_user=0; /* cline_user is used in the administration prog */
-#endif
-
-static int
-pam_get_uid(pam_handle_t *pamh, uid_t *uid, const char **userp, struct tally_options *opts)
-{
- const char *user = NULL;
- struct passwd *pw;
-
-#ifdef MAIN
- user = cline_user;
-
- if ( !user ) {
- pam_syslog(pamh, LOG_ERR, "pam_get_uid; user?");
- return PAM_AUTH_ERR;
- }
-#else
- if ((pam_get_user( pamh, &user, NULL )) != PAM_SUCCESS) {
- pam_syslog(pamh, LOG_NOTICE, "cannot determine user name");
- return PAM_AUTH_ERR;
- }
-#endif
-
- if ( ! ( pw = pam_modutil_getpwnam( pamh, user ) ) ) {
- opts->ctrl & OPT_AUDIT ?
- pam_syslog(pamh, LOG_NOTICE, "pam_get_uid; no such user %s", user) :
- pam_syslog(pamh, LOG_NOTICE, "pam_get_uid; no such user");
- return PAM_USER_UNKNOWN;
- }
-
- if ( uid ) *uid = pw->pw_uid;
- if ( userp ) *userp = user;
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support functions: set/get tally data --- */
-
-#ifndef MAIN
-
-static void
-_cleanup(pam_handle_t *pamh UNUSED, void *data, int error_status UNUSED)
-{
- free(data);
-}
-
-
-static void
-tally_set_data( pam_handle_t *pamh, time_t oldtime )
-{
- time_t *data;
-
- if ( (data=malloc(sizeof(time_t))) != NULL ) {
- *data = oldtime;
- pam_set_data(pamh, MODULE_NAME, (void *)data, _cleanup);
- }
-}
-
-static int
-tally_get_data( pam_handle_t *pamh, time_t *oldtime )
-{
- int rv;
- const void *data;
-
- rv = pam_get_data(pamh, MODULE_NAME, &data);
- if ( rv == PAM_SUCCESS && data != NULL && oldtime != NULL ) {
- *oldtime = *(const time_t *)data;
- pam_set_data(pamh, MODULE_NAME, NULL, NULL);
- }
- else {
- rv = -1;
- if (oldtime)
- *oldtime = 0;
- }
- return rv;
-}
-#endif /* #ifndef MAIN */
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: open/create tallyfile and return tally for uid --- */
-
-/* If on entry *tally==TALLY_HI, tallyfile is opened READONLY */
-/* Otherwise, if on entry tallyfile doesn't exist, creation is attempted. */
-
-static int
-get_tally(pam_handle_t *pamh, tally_t *tally, uid_t uid,
- const char *filename, FILE **TALLY, struct fail_s *fsp)
-{
- struct stat fileinfo;
- int lstat_ret = lstat(filename,&fileinfo);
-
- if ( lstat_ret && *tally!=TALLY_HI ) {
- int oldmask = umask(077);
- *TALLY=fopen(filename, "a");
- /* Create file, or append-open in pathological case. */
- umask(oldmask);
- if ( !*TALLY ) {
- pam_syslog(pamh, LOG_ALERT, "Couldn't create %s", filename);
- return PAM_AUTH_ERR;
- }
- lstat_ret = fstat(fileno(*TALLY),&fileinfo);
- fclose(*TALLY);
- }
-
- if ( lstat_ret ) {
- pam_syslog(pamh, LOG_ALERT, "Couldn't stat %s", filename);
- return PAM_AUTH_ERR;
- }
-
- if((fileinfo.st_mode & S_IWOTH) || !S_ISREG(fileinfo.st_mode)) {
- /* If the file is world writable or is not a
- normal file, return error */
- pam_syslog(pamh, LOG_ALERT,
- "%s is either world writable or not a normal file",
- filename);
- return PAM_AUTH_ERR;
- }
-
- if ( ! ( *TALLY = fopen(filename,(*tally!=TALLY_HI)?"r+":"r") ) ) {
- pam_syslog(pamh, LOG_ALERT, "Error opening %s for %s", filename, *tally!=TALLY_HI?"update":"read");
-
-/* Discovering why account service fails: e/uid are target user.
- *
- * perror(MODULE_NAME);
- * fprintf(stderr,"uid %d euid %d\n",getuid(), geteuid());
- */
- return PAM_AUTH_ERR;
- }
-
- if ( fseeko( *TALLY, (off_t) uid * sizeof(struct faillog), SEEK_SET ) ) {
- pam_syslog(pamh, LOG_ALERT, "fseek failed for %s", filename);
- fclose(*TALLY);
- return PAM_AUTH_ERR;
- }
-
- if ( (size_t)fileinfo.st_size <= uid * sizeof(struct faillog) ) {
-
- memset(fsp, 0, sizeof(struct faillog));
- *tally=0;
- fsp->fs_faillog.fail_time = time(NULL);
-
- } else if (( fread((char *) &fsp->fs_faillog,
- sizeof(struct faillog), 1, *TALLY) )==0 ) {
-
- *tally=0; /* Assuming a gappy filesystem */
-
- } else {
-
- *tally = fsp->fs_faillog.fail_cnt;
-
- }
-
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: update and close tallyfile with tally!=TALLY_HI --- */
-
-static int
-set_tally(pam_handle_t *pamh, tally_t tally, uid_t uid,
- const char *filename, FILE **TALLY, struct fail_s *fsp)
-{
- int retval = PAM_SUCCESS;
-
- if ( tally!=TALLY_HI ) {
- if ( fseeko( *TALLY, (off_t) uid * sizeof(struct faillog), SEEK_SET ) ) {
- pam_syslog(pamh, LOG_ALERT, "fseek failed for %s", filename);
- retval = PAM_AUTH_ERR;
- } else {
- fsp->fs_faillog.fail_cnt = tally;
- if (fwrite((char *) &fsp->fs_faillog,
- sizeof(struct faillog), 1, *TALLY)==0 ) {
- pam_syslog(pamh, LOG_ALERT, "update (fwrite) failed for %s", filename);
- retval = PAM_AUTH_ERR;
- }
- }
- }
-
- if ( fclose(*TALLY) ) {
- pam_syslog(pamh, LOG_ALERT, "update (fclose) failed for %s", filename);
- return PAM_AUTH_ERR;
- }
- *TALLY=NULL;
- return retval;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- PAM bits --- */
-
-#ifndef MAIN
-
-#define RETURN_ERROR(i) return ((opts->ctrl & OPT_FAIL_ON_ERROR)?(i):(PAM_SUCCESS))
-
-/*---------------------------------------------------------------------*/
-
-/* --- tally bump function: bump tally for uid by (signed) inc --- */
-
-static int
-tally_bump (int inc, time_t *oldtime, pam_handle_t *pamh,
- uid_t uid, const char *user, struct tally_options *opts)
-{
- tally_t
- tally = 0; /* !TALLY_HI --> Log opened for update */
-
- FILE
- *TALLY = NULL;
- const void
- *remote_host = NULL,
- *cur_tty = NULL;
- struct fail_s fs, *fsp = &fs;
- int i;
-
- i=get_tally(pamh, &tally, uid, opts->filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
-
- /* to remember old fail time (for locktime) */
- fsp->fs_fail_time = fsp->fs_faillog.fail_time;
- if ( inc > 0 ) {
- if ( oldtime ) {
- *oldtime = fsp->fs_faillog.fail_time;
- }
- fsp->fs_faillog.fail_time = time(NULL);
- } else {
- if ( oldtime ) {
- fsp->fs_faillog.fail_time = *oldtime;
- }
- }
- (void) pam_get_item(pamh, PAM_RHOST, &remote_host);
- if (!remote_host) {
-
- (void) pam_get_item(pamh, PAM_TTY, &cur_tty);
- if (!cur_tty) {
- strncpy(fsp->fs_faillog.fail_line, "unknown",
- sizeof(fsp->fs_faillog.fail_line) - 1);
- fsp->fs_faillog.fail_line[sizeof(fsp->fs_faillog.fail_line)-1] = 0;
- } else {
- strncpy(fsp->fs_faillog.fail_line, cur_tty,
- sizeof(fsp->fs_faillog.fail_line)-1);
- fsp->fs_faillog.fail_line[sizeof(fsp->fs_faillog.fail_line)-1] = 0;
- }
-
- } else {
- strncpy(fsp->fs_faillog.fail_line, remote_host,
- (size_t)sizeof(fsp->fs_faillog.fail_line));
- fsp->fs_faillog.fail_line[sizeof(fsp->fs_faillog.fail_line)-1] = 0;
- }
-
- if ( !(opts->ctrl & OPT_MAGIC_ROOT) || getuid() ) { /* magic_root doesn't change tally */
-
- tally+=inc;
-
- if ( tally==TALLY_HI ) { /* Overflow *and* underflow. :) */
- tally-=inc;
- pam_syslog(pamh, LOG_ALERT, "Tally %sflowed for user %s",
- (inc<0)?"under":"over",user);
- }
- }
-
- i=set_tally(pamh, tally, uid, opts->filename, &TALLY, fsp );
- if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
-
- return PAM_SUCCESS;
-}
-
-static int
-tally_check (time_t oldtime, pam_handle_t *pamh, uid_t uid,
- const char *user, struct tally_options *opts)
-{
- tally_t
- deny = opts->deny;
- tally_t
- tally = TALLY_HI;
- long
- lock_time = opts->lock_time;
-
- struct fail_s fs, *fsp = &fs;
- FILE *TALLY=0;
- int i;
-
- i=get_tally(pamh, &tally, uid, opts->filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
-
- if ( TALLY != NULL ) {
- fclose(TALLY);
- }
-
- if ( !(opts->ctrl & OPT_MAGIC_ROOT) || getuid() ) { /* magic_root skips tally check */
-
- /* To deny or not to deny; that is the question */
-
- /* if there's .fail_max entry and per_user=TRUE then deny=.fail_max */
-
- if ( (fsp->fs_faillog.fail_max) && (opts->ctrl & OPT_PER_USER) ) {
- deny = fsp->fs_faillog.fail_max;
- }
- if ( (fsp->fs_faillog.fail_locktime) && (opts->ctrl & OPT_PER_USER) ) {
- lock_time = fsp->fs_faillog.fail_locktime;
- }
- if (lock_time && oldtime
- && !(opts->ctrl & OPT_NO_LOCK_TIME) )
- {
- if ( lock_time + oldtime > time(NULL) )
- {
- if (!(opts->ctrl & OPT_SILENT))
- pam_info (pamh,
- _("The account is temporarily locked (%ld seconds left)."),
- (long int) (oldtime+lock_time-time(NULL)));
-
- if (!(opts->ctrl & OPT_NOLOGNOTICE))
- pam_syslog (pamh, LOG_NOTICE,
- "user %s (%lu) has time limit [%lds left]"
- " since last failure.",
- user, (unsigned long int) uid,
- (long int) (oldtime+lock_time-time(NULL)));
- return PAM_AUTH_ERR;
- }
- }
- if (opts->unlock_time && oldtime)
- {
- if ( opts->unlock_time + oldtime <= time(NULL) )
- { /* ignore deny check after unlock_time elapsed */
- return PAM_SUCCESS;
- }
- }
- if (
- ( deny != 0 ) && /* deny==0 means no deny */
- ( tally > deny ) && /* tally>deny means exceeded */
- ( ((opts->ctrl & OPT_DENY_ROOT) || uid) ) /* even_deny stops uid check */
- ) {
- if (!(opts->ctrl & OPT_SILENT))
- pam_info (pamh, _("The account is locked due to %u failed logins."),
- (unsigned int)tally);
-
- if (!(opts->ctrl & OPT_NOLOGNOTICE))
- pam_syslog(pamh, LOG_NOTICE,
- "user %s (%lu) tally "TALLY_FMT", deny "TALLY_FMT,
- user, (unsigned long int) uid, tally, deny);
- return PAM_AUTH_ERR; /* Only unconditional failure */
- }
- }
-
- return PAM_SUCCESS;
-}
-
-static int
-tally_reset (pam_handle_t *pamh, uid_t uid, struct tally_options *opts)
-{
- tally_t
- tally = 0; /* !TALLY_HI --> Log opened for update */
-
- struct fail_s fs, *fsp = &fs;
- FILE *TALLY=0;
- int i;
-
- i=get_tally(pamh, &tally, uid, opts->filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
-
- /* resets if not magic root
- */
-
- if ( (!(opts->ctrl & OPT_MAGIC_ROOT) || getuid())
- && !(opts->ctrl & OPT_NO_RESET) )
- { tally=0; }
-
- if (tally == 0)
- {
- fsp->fs_faillog.fail_time = (time_t) 0;
- strcpy(fsp->fs_faillog.fail_line, "");
- }
-
- i=set_tally(pamh, tally, uid, opts->filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) { RETURN_ERROR( i ); }
-
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- authentication management functions (only) --- */
-
-int
-pam_sm_authenticate(pam_handle_t *pamh, int flags,
- int argc, const char **argv)
-{
- int
- rvcheck, rvbump;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rvcheck = tally_parse_args(pamh, opts, PHASE_AUTH, argc, argv);
- if ( rvcheck != PAM_SUCCESS )
- RETURN_ERROR( rvcheck );
-
- if (flags & PAM_SILENT)
- opts->ctrl |= OPT_SILENT;
-
- rvcheck = pam_get_uid(pamh, &uid, &user, opts);
- if ( rvcheck != PAM_SUCCESS )
- RETURN_ERROR( rvcheck );
-
- rvbump = tally_bump(1, &oldtime, pamh, uid, user, opts);
- rvcheck = tally_check(oldtime, pamh, uid, user, opts);
-
- tally_set_data(pamh, oldtime);
-
- return rvcheck != PAM_SUCCESS ? rvcheck : rvbump;
-}
-
-int
-pam_sm_setcred(pam_handle_t *pamh, int flags,
- int argc, const char **argv)
-{
- int
- rv;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rv = tally_parse_args(pamh, opts, PHASE_AUTH, argc, argv);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if (flags & PAM_SILENT)
- opts->ctrl |= OPT_SILENT;
-
- rv = pam_get_uid(pamh, &uid, &user, opts);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if ( tally_get_data(pamh, &oldtime) != 0 )
- /* no data found */
- return PAM_SUCCESS;
-
- if ( (rv=tally_bump(-1, &oldtime, pamh, uid, user, opts)) != PAM_SUCCESS )
- return rv;
- return tally_reset(pamh, uid, opts);
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- authentication management functions (only) --- */
-
-/* To reset failcount of user on successful login */
-
-int
-pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
- int argc, const char **argv)
-{
- int
- rv;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rv = tally_parse_args(pamh, opts, PHASE_ACCOUNT, argc, argv);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if (flags & PAM_SILENT)
- opts->ctrl |= OPT_SILENT;
-
- rv = pam_get_uid(pamh, &uid, &user, opts);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if ( tally_get_data(pamh, &oldtime) != 0 )
- /* no data found */
- return PAM_SUCCESS;
-
- if ( (rv=tally_bump(-1, &oldtime, pamh, uid, user, opts)) != PAM_SUCCESS )
- return rv;
- return tally_reset(pamh, uid, opts);
-}
-
-/*-----------------------------------------------------------------------*/
-
-#else /* #ifndef MAIN */
-
-static const char *cline_filename = DEFAULT_LOGFILE;
-static tally_t cline_reset = TALLY_HI; /* Default is `interrogate only' */
-static int cline_quiet = 0;
-
-/*
- * Not going to link with pamlib just for these.. :)
- */
-
-static const char *
-pam_errors( int i )
-{
- switch (i) {
- case PAM_AUTH_ERR: return _("Authentication error");
- case PAM_SERVICE_ERR: return _("Service error");
- case PAM_USER_UNKNOWN: return _("Unknown user");
- default: return _("Unknown error");
- }
-}
-
-static int
-getopts( char **argv )
-{
- const char *pname = *argv;
- for ( ; *argv ; (void)(*argv && ++argv) ) {
- const char *str;
- if ( !strcmp (*argv,"--file") ) cline_filename=*++argv;
- else if ((str = pam_str_skip_prefix(*argv, "--file=")) != NULL)
- cline_filename = str;
- else if ( !strcmp (*argv,"--user") ) cline_user=*++argv;
- else if ((str = pam_str_skip_prefix(*argv, "--user=")) != NULL)
- cline_user = str;
- else if ( !strcmp (*argv,"--reset") ) cline_reset=0;
- else if ((str = pam_str_skip_prefix(*argv, "--reset=")) != NULL) {
- if (sscanf(str, TALLY_FMT, &cline_reset) != 1 )
- fprintf(stderr,_("%s: Bad number given to --reset=\n"),pname), exit(0);
- }
- else if ( !strcmp (*argv,"--quiet") ) cline_quiet=1;
- else {
- fprintf(stderr,_("%s: Unrecognised option %s\n"),pname,*argv);
- return FALSE;
- }
- }
- return TRUE;
-}
-
-int main ( int argc UNUSED, char **argv )
-{
- struct fail_s fs, *fsp = &fs;
-
- if ( ! getopts( argv+1 ) ) {
- printf(_("%s: [--file rooted-filename] [--user username] "
- "[--reset[=n]] [--quiet]\n"),
- *argv);
- exit(0);
- }
-
- umask(077);
-
- /*
- * Major difference between individual user and all users:
- * --user just handles one user, just like PAM.
- * --user=* handles all users, sniffing cline_filename for nonzeros
- */
-
- if ( cline_user ) {
- uid_t uid;
- tally_t tally=cline_reset;
- FILE *TALLY=0;
- struct tally_options opts;
- int i;
-
- memset(&opts, 0, sizeof(opts));
- opts.ctrl = OPT_AUDIT;
- i=pam_get_uid(NULL, &uid, NULL, &opts);
- if ( i != PAM_SUCCESS ) {
- fprintf(stderr,"%s: %s\n",*argv,pam_errors(i));
- exit(0);
- }
-
- i=get_tally(NULL, &tally, uid, cline_filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) {
- fprintf(stderr,"%s: %s\n",*argv,pam_errors(i));
- exit(0);
- }
-
- if ( !cline_quiet )
- printf("User %s\t(%lu)\t%s "TALLY_FMT"\n",cline_user,
- (unsigned long int) uid,
- (cline_reset!=TALLY_HI)?"had":"has",tally);
-
- i=set_tally(NULL, cline_reset, uid, cline_filename, &TALLY, fsp);
- if ( i != PAM_SUCCESS ) {
- fprintf(stderr,"%s: %s\n",*argv,pam_errors(i));
- exit(0);
- }
- }
- else /* !cline_user (ie, operate on all users) */ {
- FILE *TALLY=fopen(cline_filename, "r");
- uid_t uid=0;
- if ( !TALLY ) perror(*argv), exit(0);
-
- for ( ; !feof(TALLY); uid++ ) {
- tally_t tally;
- struct passwd *pw;
- if ( ! fread((char *) &fsp->fs_faillog,
- sizeof (struct faillog), 1, TALLY)
- || ! fsp->fs_faillog.fail_cnt ) {
- continue;
- }
- tally = fsp->fs_faillog.fail_cnt;
-
- if ( ( pw=getpwuid(uid) ) ) {
- printf("User %s\t(%lu)\t%s "TALLY_FMT"\n",pw->pw_name,
- (unsigned long int) uid,
- (cline_reset!=TALLY_HI)?"had":"has",tally);
- }
- else {
- printf("User [NONAME]\t(%lu)\t%s "TALLY_FMT"\n",
- (unsigned long int) uid,
- (cline_reset!=TALLY_HI)?"had":"has",tally);
- }
- }
- fclose(TALLY);
- if ( cline_reset!=0 && cline_reset!=TALLY_HI ) {
- fprintf(stderr,_("%s: Can't reset all users to non-zero\n"),*argv);
- }
- else if ( !cline_reset ) {
- TALLY=fopen(cline_filename, "w");
- if ( !TALLY ) perror(*argv), exit(0);
- fclose(TALLY);
- }
- }
- return 0;
-}
-
-
-#endif /* #ifndef MAIN */
diff --git a/modules/pam_tally/pam_tally_app.c b/modules/pam_tally/pam_tally_app.c
deleted file mode 100644
index ad288549..00000000
--- a/modules/pam_tally/pam_tally_app.c
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- # This seemed like such a good idea at the time. :)
- */
-
-#define MAIN
-#include "pam_tally.c"
diff --git a/modules/pam_tally/tst-pam_tally b/modules/pam_tally/tst-pam_tally
deleted file mode 100755
index 15291af6..00000000
--- a/modules/pam_tally/tst-pam_tally
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-../../tests/tst-dlopen .libs/pam_tally.so
diff --git a/modules/pam_tally2/Makefile.am b/modules/pam_tally2/Makefile.am
deleted file mode 100644
index 5c887ad7..00000000
--- a/modules/pam_tally2/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (c) 2005, 2006, 2007, 2009 Thorsten Kukuk <kukuk@thkukuk.de>
-# Copyright (c) 2008 Red Hat, Inc.
-#
-
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-
-EXTRA_DIST = $(XMLS)
-
-if HAVE_DOC
-dist_man_MANS = pam_tally2.8
-endif
-XMLS = README.xml pam_tally2.8.xml
-dist_check_SCRIPTS = tst-pam_tally2
-TESTS = $(dist_check_SCRIPTS)
-
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-
-noinst_HEADERS = tallylog.h
-
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-
-pam_tally2_la_LDFLAGS = -no-undefined -avoid-version -module
-pam_tally2_la_LIBADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
-if HAVE_VERSIONING
- pam_tally2_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
-endif
-
-pam_tally2_LDADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
-
-securelib_LTLIBRARIES = pam_tally2.la
-sbin_PROGRAMS = pam_tally2
-
-pam_tally2_la_SOURCES = pam_tally2.c
-pam_tally2_SOURCES = pam_tally2_app.c
-
-if ENABLE_REGENERATE_MAN
-dist_noinst_DATA = README
--include $(top_srcdir)/Make.xml.rules
-endif
diff --git a/modules/pam_tally2/Makefile.in b/modules/pam_tally2/Makefile.in
deleted file mode 100644
index 4484af86..00000000
--- a/modules/pam_tally2/Makefile.in
+++ /dev/null
@@ -1,1227 +0,0 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#
-# Copyright (c) 2005, 2006, 2007, 2009 Thorsten Kukuk <kukuk@thkukuk.de>
-# Copyright (c) 2008 Red Hat, Inc.
-#
-
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
-sbin_PROGRAMS = pam_tally2$(EXEEXT)
-subdir = modules/pam_tally2
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
- $(top_srcdir)/m4/jh_path_xml_catalog.m4 \
- $(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
- $(am__dist_noinst_DATA_DIST) $(noinst_HEADERS) \
- $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" \
- "$(DESTDIR)$(man8dir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-LTLIBRARIES = $(securelib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-pam_tally2_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la \
- $(am__DEPENDENCIES_1)
-am_pam_tally2_la_OBJECTS = pam_tally2.lo
-pam_tally2_la_OBJECTS = $(am_pam_tally2_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-pam_tally2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(pam_tally2_la_LDFLAGS) $(LDFLAGS) -o $@
-am_pam_tally2_OBJECTS = pam_tally2_app.$(OBJEXT)
-pam_tally2_OBJECTS = $(am_pam_tally2_OBJECTS)
-pam_tally2_DEPENDENCIES = $(top_builddir)/libpam/libpam.la \
- $(am__DEPENDENCIES_1)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/pam_tally2.Plo \
- ./$(DEPDIR)/pam_tally2_app.Po
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(pam_tally2_la_SOURCES) $(pam_tally2_SOURCES)
-DIST_SOURCES = $(pam_tally2_la_SOURCES) $(pam_tally2_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(dist_man_MANS)
-am__dist_noinst_DATA_DIST = README
-DATA = $(dist_noinst_DATA)
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = { \
- $(am__tty_colors_dummy); \
- if test "X$(AM_COLOR_TESTS)" = Xno; then \
- am__color_tests=no; \
- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
- am__color_tests=yes; \
- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
- am__color_tests=yes; \
- fi; \
- if test $$am__color_tests = yes; then \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
- fi; \
-}
-am__recheck_rx = ^[ ]*:recheck:[ ]*
-am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
-am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
- recheck = 1; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- { \
- if ((getline line2 < ($$0 ".log")) < 0) \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
- { \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
- { \
- break; \
- } \
- }; \
- if (recheck) \
- print $$0; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
- print "fatal: making $@: " msg | "cat >&2"; \
- exit 1; \
-} \
-function rst_section(header) \
-{ \
- print header; \
- len = length(header); \
- for (i = 1; i <= len; i = i + 1) \
- printf "="; \
- printf "\n\n"; \
-} \
-{ \
- copy_in_global_log = 1; \
- global_test_result = "RUN"; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".trs"); \
- if (line ~ /$(am__global_test_result_rx)/) \
- { \
- sub("$(am__global_test_result_rx)", "", line); \
- sub("[ ]*$$", "", line); \
- global_test_result = line; \
- } \
- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
- copy_in_global_log = 0; \
- }; \
- if (copy_in_global_log) \
- { \
- rst_section(global_test_result ": " $$0); \
- while ((rc = (getline line < ($$0 ".log"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".log"); \
- print line; \
- }; \
- printf "\n"; \
- }; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test. Creates the
-# directory for the log if needed. Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-case "$@" in \
- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
- *) am__odir=.;; \
-esac; \
-test "x$$am__odir" = x"." || test -d "$$am__odir" \
- || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
- am__expect_failure=yes;; \
- *) \
- am__expect_failure=no;; \
-esac; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed). The result is saved in the shell variable
-# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
- $(TEST_LOG_FLAGS)
-am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
- $(top_srcdir)/build-aux/depcomp \
- $(top_srcdir)/build-aux/test-driver
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BROWSER = @BROWSER@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_CPPFLAGS = @BUILD_CPPFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-ECONF_CFLAGS = @ECONF_CFLAGS@
-ECONF_LIBS = @ECONF_LIBS@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FO2PDF = @FO2PDF@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LEX = @LEX@
-LEXLIB = @LEXLIB@
-LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
-LIBCRYPT = @LIBCRYPT@
-LIBDB = @LIBDB@
-LIBDL = @LIBDL@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBPRELUDE_CFLAGS = @LIBPRELUDE_CFLAGS@
-LIBPRELUDE_CONFIG = @LIBPRELUDE_CONFIG@
-LIBPRELUDE_CONFIG_PREFIX = @LIBPRELUDE_CONFIG_PREFIX@
-LIBPRELUDE_LDFLAGS = @LIBPRELUDE_LDFLAGS@
-LIBPRELUDE_LIBS = @LIBPRELUDE_LIBS@
-LIBPRELUDE_PREFIX = @LIBPRELUDE_PREFIX@
-LIBPRELUDE_PTHREAD_CFLAGS = @LIBPRELUDE_PTHREAD_CFLAGS@
-LIBS = @LIBS@
-LIBSELINUX = @LIBSELINUX@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NIS_CFLAGS = @NIS_CFLAGS@
-NIS_LIBS = @NIS_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NSL_CFLAGS = @NSL_CFLAGS@
-NSL_LIBS = @NSL_LIBS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-SCONFIGDIR = @SCONFIGDIR@
-SECUREDIR = @SECUREDIR@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
-STRIP = @STRIP@
-TIRPC_CFLAGS = @TIRPC_CFLAGS@
-TIRPC_LIBS = @TIRPC_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMLCATALOG = @XMLCATALOG@
-XMLLINT = @XMLLINT@
-XML_CATALOG_FILE = @XML_CATALOG_FILE@
-XSLTPROC = @XSLTPROC@
-YACC = @YACC@
-YFLAGS = @YFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
-pam_xauth_path = @pam_xauth_path@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-CLEANFILES = *~
-MAINTAINERCLEANFILES = $(MANS) README
-EXTRA_DIST = $(XMLS)
-@HAVE_DOC_TRUE@dist_man_MANS = pam_tally2.8
-XMLS = README.xml pam_tally2.8.xml
-dist_check_SCRIPTS = tst-pam_tally2
-TESTS = $(dist_check_SCRIPTS)
-securelibdir = $(SECUREDIR)
-secureconfdir = $(SCONFIGDIR)
-noinst_HEADERS = tallylog.h
-AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
- $(WARN_CFLAGS)
-
-pam_tally2_la_LDFLAGS = -no-undefined -avoid-version -module \
- $(am__append_1)
-pam_tally2_la_LIBADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
-pam_tally2_LDADD = $(top_builddir)/libpam/libpam.la $(LIBAUDIT)
-securelib_LTLIBRARIES = pam_tally2.la
-pam_tally2_la_SOURCES = pam_tally2.c
-pam_tally2_SOURCES = pam_tally2_app.c
-@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu modules/pam_tally2/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu modules/pam_tally2/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- || test -f $$p1 \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-install-securelibLTLIBRARIES: $(securelib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(securelibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(securelibdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(securelibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(securelibdir)"; \
- }
-
-uninstall-securelibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(securelib_LTLIBRARIES)'; test -n "$(securelibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(securelibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(securelibdir)/$$f"; \
- done
-
-clean-securelibLTLIBRARIES:
- -test -z "$(securelib_LTLIBRARIES)" || rm -f $(securelib_LTLIBRARIES)
- @list='$(securelib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-pam_tally2.la: $(pam_tally2_la_OBJECTS) $(pam_tally2_la_DEPENDENCIES) $(EXTRA_pam_tally2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(pam_tally2_la_LINK) -rpath $(securelibdir) $(pam_tally2_la_OBJECTS) $(pam_tally2_la_LIBADD) $(LIBS)
-
-pam_tally2$(EXEEXT): $(pam_tally2_OBJECTS) $(pam_tally2_DEPENDENCIES) $(EXTRA_pam_tally2_DEPENDENCIES)
- @rm -f pam_tally2$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(pam_tally2_OBJECTS) $(pam_tally2_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_tally2.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_tally2_app.Po@am__quote@ # am--include-marker
-
-$(am__depfiles_remade):
- @$(MKDIR_P) $(@D)
- @echo '# dummy' >$@-t && $(am__mv) $@-t $@
-
-am--depfiles: $(am__depfiles_remade)
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-man8: $(dist_man_MANS)
- @$(NORMAL_INSTALL)
- @list1=''; \
- list2='$(dist_man_MANS)'; \
- test -n "$(man8dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.8[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list=''; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
- sed -n '/\.8[a-z]*$$/p'; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
- rm -f $< $@
- $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
- @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__set_TESTS_bases); \
- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
- redo_bases=`for i in $$bases; do \
- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
- done`; \
- if test -n "$$redo_bases"; then \
- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
- if $(am__make_dryrun); then :; else \
- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- fi; \
- fi; \
- if test -n "$$am__remaking_logs"; then \
- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
- "recursion detected" >&2; \
- elif test -n "$$redo_logs"; then \
- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
- fi; \
- if $(am__make_dryrun); then :; else \
- st=0; \
- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
- for i in $$redo_bases; do \
- test -f $$i.trs && test -r $$i.trs \
- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
- test -f $$i.log && test -r $$i.log \
- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
- done; \
- test $$st -eq 0 || exit 1; \
- fi
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for b in $$bases; do echo $$b; done \
- | $(am__create_global_log); \
- } >$(TEST_SUITE_LOG).tmp || exit 1; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS: $(dist_check_SCRIPTS)
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- exit $$?;
-recheck: all $(dist_check_SCRIPTS)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- bases=`for i in $$bases; do echo $$i; done \
- | $(am__list_recheck_tests)` || exit 1; \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- log_list=`echo $$log_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
- am__force_recheck=am--force-recheck \
- TEST_LOGS="$$log_list"; \
- exit $$?
-tst-pam_tally2.log: tst-pam_tally2
- @p='tst-pam_tally2'; \
- b='tst-pam_tally2'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@ @p='$<'; \
-@am__EXEEXT_TRUE@ $(am__set_b); \
-@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) distdir-am
-
-distdir-am: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS)
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(MANS) $(DATA) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(securelibdir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \
- clean-securelibLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -f ./$(DEPDIR)/pam_tally2.Plo
- -rm -f ./$(DEPDIR)/pam_tally2_app.Po
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man install-securelibLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/pam_tally2.Plo
- -rm -f ./$(DEPDIR)/pam_tally2_app.Po
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-man uninstall-sbinPROGRAMS \
- uninstall-securelibLTLIBRARIES
-
-uninstall-man: uninstall-man8
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
- check-am clean clean-generic clean-libtool clean-sbinPROGRAMS \
- clean-securelibLTLIBRARIES cscopelist-am ctags ctags-am \
- distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-man8 install-pdf \
- install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
- install-securelibLTLIBRARIES install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- recheck tags tags-am uninstall uninstall-am uninstall-man \
- uninstall-man8 uninstall-sbinPROGRAMS \
- uninstall-securelibLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-@ENABLE_REGENERATE_MAN_TRUE@-include $(top_srcdir)/Make.xml.rules
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/modules/pam_tally2/README b/modules/pam_tally2/README
deleted file mode 100644
index a3fd30e7..00000000
--- a/modules/pam_tally2/README
+++ /dev/null
@@ -1,156 +0,0 @@
-pam_tally2 — The login counter (tallying) module
-
-â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
-
-DESCRIPTION
-
-This module maintains a count of attempted accesses, can reset count on
-success, can deny access if too many attempts fail.
-
-pam_tally2 comes in two parts: pam_tally2.so and pam_tally2. The former is the
-PAM module and the latter, a stand-alone program. pam_tally2 is an (optional)
-application which can be used to interrogate and manipulate the counter file.
-It can display user counts, set individual counts, or clear all counts. Setting
-artificially high counts may be useful for blocking users without changing
-their passwords. For example, one might find it useful to clear all counts
-every midnight from a cron job.
-
-Normally, failed attempts to access root will not cause the root account to
-become blocked, to prevent denial-of-service: if your users aren't given shell
-accounts and root may only login via su or at the machine console (not telnet/
-rsh, etc), this is safe.
-
-OPTIONS
-
-GLOBAL OPTIONS
-
- This can be used for auth and account module types.
-
- onerr=[fail|succeed]
-
- If something weird happens (like unable to open the file), return with
- PAM_SUCCESS if onerr=succeed is given, else with the corresponding PAM
- error code.
-
- file=/path/to/counter
-
- File where to keep counts. Default is /var/log/tallylog.
-
- audit
-
- Will log the user name into the system log if the user is not found.
-
- silent
-
- Don't print informative messages. The messages printed without the
- silent option leak presence of accounts on the system because they are
- not printed for non-existing accounts.
-
- no_log_info
-
- Don't log informative messages via syslog(3).
-
- debug
-
- Always log tally count when it is incremented as a debug level message
- to the system log.
-
-AUTH OPTIONS
-
- Authentication phase first increments attempted login counter and checks if
- user should be denied access. If the user is authenticated and the login
- process continues on call to pam_setcred(3) it resets the attempts counter.
-
- deny=n
-
- Deny access if tally for this user exceeds n.
-
- lock_time=n
-
- Always deny for n seconds after failed attempt.
-
- unlock_time=n
-
- Allow access after n seconds after failed attempt. If this option is
- used the user will be locked out for the specified amount of time after
- he exceeded his maximum allowed attempts. Otherwise the account is
- locked until the lock is removed by a manual intervention of the system
- administrator.
-
- magic_root
-
- If the module is invoked by a user with uid=0 the counter is not
- incremented. The sysadmin should use this for user launched services,
- like su, otherwise this argument should be omitted.
-
- even_deny_root
-
- Root account can become unavailable.
-
- root_unlock_time=n
-
- This option implies even_deny_root option. Allow access after n seconds
- to root account after failed attempt. If this option is used the root
- user will be locked out for the specified amount of time after he
- exceeded his maximum allowed attempts.
-
- serialize
-
- Serialize access to the tally file using locks. This option might be
- used only for non-multithreaded services because it depends on the
- fcntl locking of the tally file. Also it is a good idea to use this
- option only in such configurations where the time between auth phase
- and account or setcred phase is not dependent on the authenticating
- client. Otherwise the authenticating client will be able to prevent
- simultaneous authentications by the same user by simply artificially
- prolonging the time the file record lock is held.
-
-ACCOUNT OPTIONS
-
- Account phase resets attempts counter if the user is not magic root. This
- phase can be used optionally for services which don't call pam_setcred(3)
- correctly or if the reset should be done regardless of the failure of the
- account phase of other modules.
-
- magic_root
-
- If the module is invoked by a user with uid=0 the counter is not
- changed. The sysadmin should use this for user launched services, like
- su, otherwise this argument should be omitted.
-
-NOTES
-
-pam_tally2 is not compatible with the old pam_tally faillog file format. This
-is caused by requirement of compatibility of the tallylog file format between
-32bit and 64bit architectures on multiarch systems.
-
-There is no setuid wrapper for access to the data file such as when the
-pam_tally2.so module is called from xscreensaver. As this would make it
-impossible to share PAM configuration with such services the following
-workaround is used: If the data file cannot be opened because of insufficient
-permissions (EACCES) the module returns PAM_IGNORE.
-
-EXAMPLES
-
-Add the following line to /etc/pam.d/login to lock the account after 4 failed
-logins. Root account will be locked as well. The accounts will be automatically
-unlocked after 20 minutes. The module does not have to be called in the account
-phase because the login calls pam_setcred(3) correctly.
-
-auth required pam_securetty.so
-auth required pam_tally2.so deny=4 even_deny_root unlock_time=1200
-auth required pam_env.so
-auth required pam_unix.so
-auth required pam_nologin.so
-account required pam_unix.so
-password required pam_unix.so
-session required pam_limits.so
-session required pam_unix.so
-session required pam_lastlog.so nowtmp
-session optional pam_mail.so standard
-
-
-AUTHOR
-
-pam_tally2 was written by Tim Baverstock and Tomas Mraz.
-
diff --git a/modules/pam_tally2/README.xml b/modules/pam_tally2/README.xml
deleted file mode 100644
index aa470570..00000000
--- a/modules/pam_tally2/README.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
-"http://www.docbook.org/xml/4.3/docbookx.dtd"
-[
-<!--
-<!ENTITY pamaccess SYSTEM "pam_tally2.8.xml">
--->
-]>
-
-<article>
-
- <articleinfo>
-
- <title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_tally2-name"]/*)'/>
- </title>
-
- </articleinfo>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-description"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-options"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-notes"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-examples"]/*)'/>
- </section>
-
- <section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="pam_tally2.8.xml" xpointer='xpointer(//refsect1[@id = "pam_tally2-author"]/*)'/>
- </section>
-
-</article>
diff --git a/modules/pam_tally2/pam_tally2.8 b/modules/pam_tally2/pam_tally2.8
deleted file mode 100644
index 2673682e..00000000
--- a/modules/pam_tally2/pam_tally2.8
+++ /dev/null
@@ -1,244 +0,0 @@
-'\" t
-.\" Title: pam_tally2
-.\" Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
-.\" Manual: Linux-PAM Manual
-.\" Source: Linux-PAM Manual
-.\" Language: English
-.\"
-.TH "PAM_TALLY2" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
-.\" -----------------------------------------------------------------
-.\" * Define some portability stuff
-.\" -----------------------------------------------------------------
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.\" http://bugs.debian.org/507673
-.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
-.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.ie \n(.g .ds Aq \(aq
-.el .ds Aq '
-.\" -----------------------------------------------------------------
-.\" * set default formatting
-.\" -----------------------------------------------------------------
-.\" disable hyphenation
-.nh
-.\" disable justification (adjust text to left margin only)
-.ad l
-.\" -----------------------------------------------------------------
-.\" * MAIN CONTENT STARTS HERE *
-.\" -----------------------------------------------------------------
-.SH "NAME"
-pam_tally2 \- The login counter (tallying) module
-.SH "SYNOPSIS"
-.HP \w'\fBpam_tally2\&.so\fR\ 'u
-\fBpam_tally2\&.so\fR [file=\fI/path/to/counter\fR] [onerr=[\fIfail\fR|\fIsucceed\fR]] [magic_root] [even_deny_root] [deny=\fIn\fR] [lock_time=\fIn\fR] [unlock_time=\fIn\fR] [root_unlock_time=\fIn\fR] [serialize] [audit] [silent] [no_log_info] [debug]
-.HP \w'\fBpam_tally2\fR\ 'u
-\fBpam_tally2\fR [\-\-file\ \fI/path/to/counter\fR] [\-\-user\ \fIusername\fR] [\-\-reset[=\fIn\fR]] [\-\-quiet]
-.SH "DESCRIPTION"
-.PP
-This module maintains a count of attempted accesses, can reset count on success, can deny access if too many attempts fail\&.
-.PP
-pam_tally2 comes in two parts:
-\fBpam_tally2\&.so\fR
-and
-\fBpam_tally2\fR\&. The former is the PAM module and the latter, a stand\-alone program\&.
-\fBpam_tally2\fR
-is an (optional) application which can be used to interrogate and manipulate the counter file\&. It can display user counts, set individual counts, or clear all counts\&. Setting artificially high counts may be useful for blocking users without changing their passwords\&. For example, one might find it useful to clear all counts every midnight from a cron job\&.
-.PP
-Normally, failed attempts to access
-\fIroot\fR
-will
-\fBnot\fR
-cause the root account to become blocked, to prevent denial\-of\-service: if your users aren\*(Aqt given shell accounts and root may only login via
-\fBsu\fR
-or at the machine console (not telnet/rsh, etc), this is safe\&.
-.SH "OPTIONS"
-.PP
-GLOBAL OPTIONS
-.RS 4
-This can be used for
-\fIauth\fR
-and
-\fIaccount\fR
-module types\&.
-.PP
-\fBonerr=[\fR\fB\fIfail\fR\fR\fB|\fR\fB\fIsucceed\fR\fR\fB]\fR
-.RS 4
-If something weird happens (like unable to open the file), return with
-\fBPAM_SUCCESS\fR
-if
-\fBonerr=\fR\fB\fIsucceed\fR\fR
-is given, else with the corresponding PAM error code\&.
-.RE
-.PP
-\fBfile=\fR\fB\fI/path/to/counter\fR\fR
-.RS 4
-File where to keep counts\&. Default is
-/var/log/tallylog\&.
-.RE
-.PP
-\fBaudit\fR
-.RS 4
-Will log the user name into the system log if the user is not found\&.
-.RE
-.PP
-\fBsilent\fR
-.RS 4
-Don\*(Aqt print informative messages\&. The messages printed without the
-\fIsilent\fR
-option leak presence of accounts on the system because they are not printed for non\-existing accounts\&.
-.RE
-.PP
-\fBno_log_info\fR
-.RS 4
-Don\*(Aqt log informative messages via
-\fBsyslog\fR(3)\&.
-.RE
-.PP
-\fBdebug\fR
-.RS 4
-Always log tally count when it is incremented as a debug level message to the system log\&.
-.RE
-.RE
-.PP
-AUTH OPTIONS
-.RS 4
-Authentication phase first increments attempted login counter and checks if user should be denied access\&. If the user is authenticated and the login process continues on call to
-\fBpam_setcred\fR(3)
-it resets the attempts counter\&.
-.PP
-\fBdeny=\fR\fB\fIn\fR\fR
-.RS 4
-Deny access if tally for this user exceeds
-\fIn\fR\&.
-.RE
-.PP
-\fBlock_time=\fR\fB\fIn\fR\fR
-.RS 4
-Always deny for
-\fIn\fR
-seconds after failed attempt\&.
-.RE
-.PP
-\fBunlock_time=\fR\fB\fIn\fR\fR
-.RS 4
-Allow access after
-\fIn\fR
-seconds after failed attempt\&. If this option is used the user will be locked out for the specified amount of time after he exceeded his maximum allowed attempts\&. Otherwise the account is locked until the lock is removed by a manual intervention of the system administrator\&.
-.RE
-.PP
-\fBmagic_root\fR
-.RS 4
-If the module is invoked by a user with uid=0 the counter is not incremented\&. The sysadmin should use this for user launched services, like
-\fBsu\fR, otherwise this argument should be omitted\&.
-.RE
-.PP
-\fBeven_deny_root\fR
-.RS 4
-Root account can become unavailable\&.
-.RE
-.PP
-\fBroot_unlock_time=\fR\fB\fIn\fR\fR
-.RS 4
-This option implies
-\fBeven_deny_root\fR
-option\&. Allow access after
-\fIn\fR
-seconds to root account after failed attempt\&. If this option is used the root user will be locked out for the specified amount of time after he exceeded his maximum allowed attempts\&.
-.RE
-.PP
-\fBserialize\fR
-.RS 4
-Serialize access to the tally file using locks\&. This option might be used only for non\-multithreaded services because it depends on the fcntl locking of the tally file\&. Also it is a good idea to use this option only in such configurations where the time between auth phase and account or setcred phase is not dependent on the authenticating client\&. Otherwise the authenticating client will be able to prevent simultaneous authentications by the same user by simply artificially prolonging the time the file record lock is held\&.
-.RE
-.RE
-.PP
-ACCOUNT OPTIONS
-.RS 4
-Account phase resets attempts counter if the user is
-\fBnot\fR
-magic root\&. This phase can be used optionally for services which don\*(Aqt call
-\fBpam_setcred\fR(3)
-correctly or if the reset should be done regardless of the failure of the account phase of other modules\&.
-.PP
-\fBmagic_root\fR
-.RS 4
-If the module is invoked by a user with uid=0 the counter is not changed\&. The sysadmin should use this for user launched services, like
-\fBsu\fR, otherwise this argument should be omitted\&.
-.RE
-.RE
-.SH "MODULE TYPES PROVIDED"
-.PP
-The
-\fBauth\fR
-and
-\fBaccount\fR
-module types are provided\&.
-.SH "RETURN VALUES"
-.PP
-PAM_AUTH_ERR
-.RS 4
-A invalid option was given, the module was not able to retrieve the user name, no valid counter file was found, or too many failed logins\&.
-.RE
-.PP
-PAM_SUCCESS
-.RS 4
-Everything was successful\&.
-.RE
-.PP
-PAM_USER_UNKNOWN
-.RS 4
-User not known\&.
-.RE
-.SH "NOTES"
-.PP
-pam_tally2 is not compatible with the old pam_tally faillog file format\&. This is caused by requirement of compatibility of the tallylog file format between 32bit and 64bit architectures on multiarch systems\&.
-.PP
-There is no setuid wrapper for access to the data file such as when the
-\fBpam_tally2\&.so\fR
-module is called from xscreensaver\&. As this would make it impossible to share PAM configuration with such services the following workaround is used: If the data file cannot be opened because of insufficient permissions (\fBEACCES\fR) the module returns
-\fBPAM_IGNORE\fR\&.
-.SH "EXAMPLES"
-.PP
-Add the following line to
-/etc/pam\&.d/login
-to lock the account after 4 failed logins\&. Root account will be locked as well\&. The accounts will be automatically unlocked after 20 minutes\&. The module does not have to be called in the account phase because the
-\fBlogin\fR
-calls
-\fBpam_setcred\fR(3)
-correctly\&.
-.sp
-.if n \{\
-.RS 4
-.\}
-.nf
-auth required pam_securetty\&.so
-auth required pam_tally2\&.so deny=4 even_deny_root unlock_time=1200
-auth required pam_env\&.so
-auth required pam_unix\&.so
-auth required pam_nologin\&.so
-account required pam_unix\&.so
-password required pam_unix\&.so
-session required pam_limits\&.so
-session required pam_unix\&.so
-session required pam_lastlog\&.so nowtmp
-session optional pam_mail\&.so standard
-
-.fi
-.if n \{\
-.RE
-.\}
-.SH "FILES"
-.PP
-/var/log/tallylog
-.RS 4
-failure count logging file
-.RE
-.SH "SEE ALSO"
-.PP
-\fBpam.conf\fR(5),
-\fBpam.d\fR(5),
-\fBpam\fR(8)
-.SH "AUTHOR"
-.PP
-pam_tally2 was written by Tim Baverstock and Tomas Mraz\&.
diff --git a/modules/pam_tally2/pam_tally2.8.xml b/modules/pam_tally2/pam_tally2.8.xml
deleted file mode 100644
index d058cf91..00000000
--- a/modules/pam_tally2/pam_tally2.8.xml
+++ /dev/null
@@ -1,450 +0,0 @@
-<?xml version="1.0" encoding='UTF-8'?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-<refentry id="pam_tally2">
-
- <refmeta>
- <refentrytitle>pam_tally2</refentrytitle>
- <manvolnum>8</manvolnum>
- <refmiscinfo class="sectdesc">Linux-PAM Manual</refmiscinfo>
- </refmeta>
-
- <refnamediv id="pam_tally2-name">
- <refname>pam_tally2</refname>
- <refpurpose>The login counter (tallying) module</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <cmdsynopsis id="pam_tally2-cmdsynopsis1">
- <command>pam_tally2.so</command>
- <arg choice="opt">
- file=<replaceable>/path/to/counter</replaceable>
- </arg>
- <arg choice="opt">
- onerr=[<replaceable>fail</replaceable>|<replaceable>succeed</replaceable>]
- </arg>
- <arg choice="opt">
- magic_root
- </arg>
- <arg choice="opt">
- even_deny_root
- </arg>
- <arg choice="opt">
- deny=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- lock_time=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- unlock_time=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- root_unlock_time=<replaceable>n</replaceable>
- </arg>
- <arg choice="opt">
- serialize
- </arg>
- <arg choice="opt">
- audit
- </arg>
- <arg choice="opt">
- silent
- </arg>
- <arg choice="opt">
- no_log_info
- </arg>
- <arg choice="opt">
- debug
- </arg>
- </cmdsynopsis>
- <cmdsynopsis id="pam_tally2-cmdsynopsis2">
- <command>pam_tally2</command>
- <arg choice="opt">
- --file <replaceable>/path/to/counter</replaceable>
- </arg>
- <arg choice="opt">
- --user <replaceable>username</replaceable>
- </arg>
- <arg choice="opt">
- --reset[=<replaceable>n</replaceable>]
- </arg>
- <arg choice="opt">
- --quiet
- </arg>
- </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1 id="pam_tally2-description">
-
- <title>DESCRIPTION</title>
-
- <para>
- This module maintains a count of attempted accesses, can
- reset count on success, can deny access if too many attempts fail.
- </para>
- <para>
- pam_tally2 comes in two parts:
- <emphasis remap='B'>pam_tally2.so</emphasis> and
- <command>pam_tally2</command>. The former is the PAM module and
- the latter, a stand-alone program. <command>pam_tally2</command>
- is an (optional) application which can be used to interrogate and
- manipulate the counter file. It can display user counts, set
- individual counts, or clear all counts. Setting artificially high
- counts may be useful for blocking users without changing their
- passwords. For example, one might find it useful to clear all counts
- every midnight from a cron job.
- </para>
- <para>
- Normally, failed attempts to access <emphasis>root</emphasis> will
- <emphasis remap='B'>not</emphasis> cause the root account to become
- blocked, to prevent denial-of-service: if your users aren't given
- shell accounts and root may only login via <command>su</command> or
- at the machine console (not telnet/rsh, etc), this is safe.
- </para>
- </refsect1>
-
- <refsect1 id="pam_tally2-options">
-
- <title>OPTIONS</title>
- <variablelist>
- <varlistentry>
- <term>
- GLOBAL OPTIONS
- </term>
- <listitem>
- <para>
- This can be used for <emphasis>auth</emphasis> and
- <emphasis>account</emphasis> module types.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>onerr=[<replaceable>fail</replaceable>|<replaceable>succeed</replaceable>]</option>
- </term>
- <listitem>
- <para>
- If something weird happens (like unable to open the file),
- return with <errorcode>PAM_SUCCESS</errorcode> if
- <option>onerr=<replaceable>succeed</replaceable></option>
- is given, else with the corresponding PAM error code.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>file=<replaceable>/path/to/counter</replaceable></option>
- </term>
- <listitem>
- <para>
- File where to keep counts. Default is
- <filename>/var/log/tallylog</filename>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>audit</option>
- </term>
- <listitem>
- <para>
- Will log the user name into the system log if the user is not found.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>silent</option>
- </term>
- <listitem>
- <para>
- Don't print informative messages. The messages printed without the <emphasis>silent</emphasis> option leak presence of accounts on the system because they are not printed for non-existing accounts.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>no_log_info</option>
- </term>
- <listitem>
- <para>
- Don't log informative messages via <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>debug</option>
- </term>
- <listitem>
- <para>
- Always log tally count when it is incremented as a debug level message to the system log.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- AUTH OPTIONS
- </term>
- <listitem>
- <para>
- Authentication phase first increments attempted login counter and
- checks if user should be denied access. If the user is authenticated
- and the login process continues on call to <citerefentry>
- <refentrytitle>pam_setcred</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry> it resets the attempts counter.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>deny=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Deny access if tally for this user exceeds
- <replaceable>n</replaceable>.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>lock_time=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Always deny for <replaceable>n</replaceable> seconds
- after failed attempt.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>unlock_time=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- Allow access after <replaceable>n</replaceable> seconds
- after failed attempt. If this option is used the user will
- be locked out for the specified amount of time after he
- exceeded his maximum allowed attempts. Otherwise the
- account is locked until the lock is removed by a manual
- intervention of the system administrator.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>magic_root</option>
- </term>
- <listitem>
- <para>
- If the module is invoked by a user with uid=0 the
- counter is not incremented. The sysadmin should use this
- for user launched services, like <command>su</command>,
- otherwise this argument should be omitted.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>even_deny_root</option>
- </term>
- <listitem>
- <para>
- Root account can become unavailable.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>root_unlock_time=<replaceable>n</replaceable></option>
- </term>
- <listitem>
- <para>
- This option implies <option>even_deny_root</option> option.
- Allow access after <replaceable>n</replaceable> seconds
- to root account after failed attempt. If this option is used
- the root user will be locked out for the specified amount of
- time after he exceeded his maximum allowed attempts.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <option>serialize</option>
- </term>
- <listitem>
- <para>
- Serialize access to the tally file using locks. This option might
- be used only for non-multithreaded services because it depends on
- the fcntl locking of the tally file. Also it is a good idea to use
- this option only in such configurations where the time between auth
- phase and account or setcred phase is not dependent on the
- authenticating client. Otherwise the authenticating client will be
- able to prevent simultaneous authentications by the same user by
- simply artificially prolonging the time the file record lock is held.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
-
-
- <varlistentry>
- <term>
- ACCOUNT OPTIONS
- </term>
- <listitem>
- <para>
- Account phase resets attempts counter if the user is
- <emphasis remap='B'>not</emphasis> magic root.
- This phase can be used optionally for services which don't call
- <citerefentry>
- <refentrytitle>pam_setcred</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry> correctly or if the reset should be done regardless
- of the failure of the account phase of other modules.
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>magic_root</option>
- </term>
- <listitem>
- <para>
- If the module is invoked by a user with uid=0 the
- counter is not changed. The sysadmin should use this
- for user launched services, like <command>su</command>,
- otherwise this argument should be omitted.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id="pam_tally2-types">
- <title>MODULE TYPES PROVIDED</title>
- <para>
- The <option>auth</option> and <option>account</option>
- module types are provided.
- </para>
- </refsect1>
-
- <refsect1 id='pam_tally2-return_values'>
- <title>RETURN VALUES</title>
- <variablelist>
- <varlistentry>
- <term>PAM_AUTH_ERR</term>
- <listitem>
- <para>
- A invalid option was given, the module was not able
- to retrieve the user name, no valid counter file
- was found, or too many failed logins.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>PAM_SUCCESS</term>
- <listitem>
- <para>
- Everything was successful.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>PAM_USER_UNKNOWN</term>
- <listitem>
- <para>
- User not known.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id='pam_tally2-notes'>
- <title>NOTES</title>
- <para>
- pam_tally2 is not compatible with the old pam_tally faillog file format.
- This is caused by requirement of compatibility of the tallylog file
- format between 32bit and 64bit architectures on multiarch systems.
- </para>
- <para>
- There is no setuid wrapper for access to the data file such as when the
- <emphasis remap='B'>pam_tally2.so</emphasis> module is called from
- xscreensaver. As this would make it impossible to share PAM configuration
- with such services the following workaround is used: If the data file
- cannot be opened because of insufficient permissions
- (<errorcode>EACCES</errorcode>) the module returns
- <errorcode>PAM_IGNORE</errorcode>.
- </para>
- </refsect1>
-
- <refsect1 id='pam_tally2-examples'>
- <title>EXAMPLES</title>
- <para>
- Add the following line to <filename>/etc/pam.d/login</filename> to
- lock the account after 4 failed logins. Root account will be locked
- as well. The accounts will be automatically unlocked after 20 minutes.
- The module does not have to be called in the account phase because the
- <command>login</command> calls <citerefentry>
- <refentrytitle>pam_setcred</refentrytitle><manvolnum>3</manvolnum>
- </citerefentry> correctly.
- </para>
- <programlisting>
-auth required pam_securetty.so
-auth required pam_tally2.so deny=4 even_deny_root unlock_time=1200
-auth required pam_env.so
-auth required pam_unix.so
-auth required pam_nologin.so
-account required pam_unix.so
-password required pam_unix.so
-session required pam_limits.so
-session required pam_unix.so
-session required pam_lastlog.so nowtmp
-session optional pam_mail.so standard
- </programlisting>
- </refsect1>
-
- <refsect1 id="pam_tally2-files">
- <title>FILES</title>
- <variablelist>
- <varlistentry>
- <term><filename>/var/log/tallylog</filename></term>
- <listitem>
- <para>failure count logging file</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
-
- <refsect1 id='pam_tally2-see_also'>
- <title>SEE ALSO</title>
- <para>
- <citerefentry>
- <refentrytitle>pam.conf</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam.d</refentrytitle><manvolnum>5</manvolnum>
- </citerefentry>,
- <citerefentry>
- <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum>
- </citerefentry>
- </para>
- </refsect1>
-
- <refsect1 id='pam_tally2-author'>
- <title>AUTHOR</title>
- <para>
- pam_tally2 was written by Tim Baverstock and Tomas Mraz.
- </para>
- </refsect1>
-
-</refentry>
diff --git a/modules/pam_tally2/pam_tally2.c b/modules/pam_tally2/pam_tally2.c
deleted file mode 100644
index 117df699..00000000
--- a/modules/pam_tally2/pam_tally2.c
+++ /dev/null
@@ -1,1035 +0,0 @@
-/*
- * pam_tally2 module
- *
- * By Tim Baverstock <warwick@mmm.co.uk>, Multi Media Machine Ltd.
- * 5 March 1997
- *
- * Stuff stolen from pam_rootok and pam_listfile
- *
- * Changes by Tomas Mraz <tmraz@redhat.com> 5 January 2005, 26 January 2006
- * Audit option added for Tomas patch by Sebastien Tricaud <toady@gscore.org> 13 January 2005
- * Portions Copyright 2006, Red Hat, Inc.
- * Portions Copyright 1989 - 1993, Julianne Frances Haugh
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Julianne F. Haugh nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#if defined(MAIN) && defined(MEMORY_DEBUG)
-# undef exit
-#endif /* defined(MAIN) && defined(MEMORY_DEBUG) */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <pwd.h>
-#include <time.h>
-#include <stdint.h>
-#include <errno.h>
-#ifdef HAVE_LIBAUDIT
-#include <libaudit.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <fcntl.h>
-#include <signal.h>
-#include "tallylog.h"
-
-#ifndef TRUE
-#define TRUE 1L
-#define FALSE 0L
-#endif
-
-#ifndef HAVE_FSEEKO
-#define fseeko fseek
-#endif
-
-#ifndef MAIN
-#include <security/pam_ext.h>
-#endif
-#include <security/pam_modutil.h>
-#include <security/pam_modules.h>
-#include "pam_inline.h"
-
-/*---------------------------------------------------------------------*/
-
-#define DEFAULT_LOGFILE "/var/log/tallylog"
-#define MODULE_NAME "pam_tally2"
-
-#define tally_t uint16_t
-#define TALLY_HI ((tally_t)~0L)
-
-struct tally_options {
- const char *filename;
- tally_t deny;
- long lock_time;
- long unlock_time;
- long root_unlock_time;
- unsigned int ctrl;
-};
-
-#define PHASE_UNKNOWN 0
-#define PHASE_AUTH 1
-#define PHASE_ACCOUNT 2
-#define PHASE_SESSION 3
-
-#define OPT_MAGIC_ROOT 01
-#define OPT_FAIL_ON_ERROR 02
-#define OPT_DENY_ROOT 04
-#define OPT_QUIET 040
-#define OPT_AUDIT 0100
-#define OPT_NOLOGNOTICE 0400
-#define OPT_SERIALIZE 01000
-#define OPT_DEBUG 02000
-
-#define MAX_LOCK_WAITING_TIME 10
-
-/*---------------------------------------------------------------------*/
-
-/* some syslogging */
-
-#ifdef MAIN
-#define pam_syslog tally_log
-static void
-tally_log (const pam_handle_t *pamh UNUSED, int priority UNUSED,
- const char *fmt, ...)
-{
- va_list args;
-
- va_start(args, fmt);
- fprintf(stderr, "%s: ", MODULE_NAME);
- vfprintf(stderr, fmt, args);
- fprintf(stderr,"\n");
- va_end(args);
-}
-
-#define pam_modutil_getpwnam(pamh, user) getpwnam(user)
-#endif
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: parse arguments --- */
-
-#ifndef MAIN
-
-static void
-log_phase_no_auth(pam_handle_t *pamh, int phase, const char *argv)
-{
- if ( phase != PHASE_AUTH ) {
- pam_syslog(pamh, LOG_ERR,
- "option %s allowed in auth phase only", argv);
- }
-}
-
-static int
-tally_parse_args(pam_handle_t *pamh, struct tally_options *opts,
- int phase, int argc, const char **argv)
-{
- memset(opts, 0, sizeof(*opts));
- opts->filename = DEFAULT_LOGFILE;
- opts->ctrl = OPT_FAIL_ON_ERROR;
- opts->root_unlock_time = -1;
-
- for ( ; argc-- > 0; ++argv ) {
- const char *str;
-
- if ((str = pam_str_skip_prefix(*argv, "file=")) != NULL) {
- const char *from = str;
- if ( *from!='/' ) {
- pam_syslog(pamh, LOG_ERR,
- "filename not /rooted; %s", *argv);
- return PAM_AUTH_ERR;
- }
- opts->filename = from;
- }
- else if ( ! strcmp( *argv, "onerr=fail" ) ) {
- opts->ctrl |= OPT_FAIL_ON_ERROR;
- }
- else if ( ! strcmp( *argv, "onerr=succeed" ) ) {
- opts->ctrl &= ~OPT_FAIL_ON_ERROR;
- }
- else if ( ! strcmp( *argv, "magic_root" ) ) {
- opts->ctrl |= OPT_MAGIC_ROOT;
- }
- else if ( ! strcmp( *argv, "serialize" ) ) {
- opts->ctrl |= OPT_SERIALIZE;
- }
- else if ( ! strcmp( *argv, "debug" ) ) {
- opts->ctrl |= OPT_DEBUG;
- }
- else if ( ! strcmp( *argv, "even_deny_root_account" ) ||
- ! strcmp( *argv, "even_deny_root" ) ) {
- log_phase_no_auth(pamh, phase, *argv);
- opts->ctrl |= OPT_DENY_ROOT;
- }
- else if ((str = pam_str_skip_prefix(*argv, "deny=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%hu", &opts->deny) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ((str = pam_str_skip_prefix(*argv, "lock_time=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%ld", &opts->lock_time) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ((str = pam_str_skip_prefix(*argv, "unlock_time=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%ld", &opts->unlock_time) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- }
- else if ((str = pam_str_skip_prefix(*argv, "root_unlock_time=")) != NULL) {
- log_phase_no_auth(pamh, phase, *argv);
- if (sscanf(str, "%ld", &opts->root_unlock_time) != 1) {
- pam_syslog(pamh, LOG_ERR, "bad number supplied: %s", *argv);
- return PAM_AUTH_ERR;
- }
- opts->ctrl |= OPT_DENY_ROOT; /* even_deny_root implied */
- }
- else if ( ! strcmp( *argv, "quiet" ) ||
- ! strcmp ( *argv, "silent")) {
- opts->ctrl |= OPT_QUIET;
- }
- else if ( ! strcmp ( *argv, "no_log_info") ) {
- opts->ctrl |= OPT_NOLOGNOTICE;
- }
- else if ( ! strcmp ( *argv, "audit") ) {
- opts->ctrl |= OPT_AUDIT;
- }
- else {
- pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
- }
- }
-
- if (opts->root_unlock_time == -1)
- opts->root_unlock_time = opts->unlock_time;
-
- return PAM_SUCCESS;
-}
-
-#endif /* #ifndef MAIN */
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: get uid (and optionally username) from PAM or
- cline_user --- */
-
-#ifdef MAIN
-static const char *cline_user=0; /* cline_user is used in the administration prog */
-#endif
-
-static int
-pam_get_uid(pam_handle_t *pamh, uid_t *uid, const char **userp, struct tally_options *opts)
-{
- const char *user = NULL;
- struct passwd *pw;
-
-#ifdef MAIN
- user = cline_user;
-
- if ( !user ) {
- pam_syslog(pamh, LOG_NOTICE, "cannot determine user name");
- return PAM_AUTH_ERR;
- }
-#else
- if ((pam_get_user( pamh, &user, NULL )) != PAM_SUCCESS) {
- user = NULL;
- }
-#endif
-
- if ( ! ( pw = pam_modutil_getpwnam( pamh, user ) ) ) {
- opts->ctrl & OPT_AUDIT ?
- pam_syslog(pamh, LOG_NOTICE, "pam_get_uid; no such user %s", user) :
- pam_syslog(pamh, LOG_NOTICE, "pam_get_uid; no such user");
- return PAM_USER_UNKNOWN;
- }
-
- if ( uid ) *uid = pw->pw_uid;
- if ( userp ) *userp = user;
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support functions: set/get tally data --- */
-
-#ifndef MAIN
-
-struct tally_data {
- time_t time;
- int tfile;
-};
-
-static void
-_cleanup(pam_handle_t *pamh UNUSED, void *void_data, int error_status UNUSED)
-{
- struct tally_data *data = void_data;
- if (data->tfile != -1)
- close(data->tfile);
- free(data);
-}
-
-static void
-tally_set_data( pam_handle_t *pamh, time_t oldtime, int tfile )
-{
- struct tally_data *data;
-
- if ( (data=malloc(sizeof(*data))) != NULL ) {
- data->time = oldtime;
- data->tfile = tfile;
- pam_set_data(pamh, MODULE_NAME, (void *)data, _cleanup);
- }
-}
-
-static int
-tally_get_data( pam_handle_t *pamh, time_t *oldtime, int *tfile )
-{
- int rv;
- const void *void_data;
- const struct tally_data *data;
-
- rv = pam_get_data(pamh, MODULE_NAME, &void_data);
- if ( rv == PAM_SUCCESS && void_data != NULL && oldtime != NULL ) {
- data = void_data;
- *oldtime = data->time;
- *tfile = data->tfile;
- }
- else {
- rv = -1;
- *oldtime = 0;
- }
- return rv;
-}
-#endif /* #ifndef MAIN */
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: open/create tallyfile and return tally for uid --- */
-
-/* If on entry tallyfile doesn't exist, creation is attempted. */
-
-static void
-alarm_handler(int sig UNUSED)
-{ /* we just need to ignore it */
-}
-
-static int
-get_tally(pam_handle_t *pamh, uid_t uid, const char *filename,
- int *tfile, struct tallylog *tally, unsigned int ctrl)
-{
- struct stat fileinfo;
- int lstat_ret;
- void *void_tally = tally;
- int preopened = 0;
-
- if (*tfile != -1) {
- preopened = 1;
- goto skip_open;
- }
-
- lstat_ret = lstat(filename, &fileinfo);
- if (lstat_ret) {
- *tfile=open(filename, O_APPEND|O_CREAT, S_IRUSR|S_IWUSR);
- /* Create file, or append-open in pathological case. */
- if (*tfile == -1) {
-#ifndef MAIN
- if (errno == EACCES) {
- return PAM_IGNORE; /* called with insufficient access rights */
- }
-#endif
- pam_syslog(pamh, LOG_ALERT, "Couldn't create %s: %m", filename);
- return PAM_AUTH_ERR;
- }
- lstat_ret = fstat(*tfile, &fileinfo);
- close(*tfile);
- }
-
- *tfile = -1;
-
- if ( lstat_ret ) {
- pam_syslog(pamh, LOG_ALERT, "Couldn't stat %s", filename);
- return PAM_AUTH_ERR;
- }
-
- if ((fileinfo.st_mode & S_IWOTH) || !S_ISREG(fileinfo.st_mode)) {
- /* If the file is world writable or is not a
- normal file, return error */
- pam_syslog(pamh, LOG_ALERT,
- "%s is either world writable or not a normal file",
- filename);
- return PAM_AUTH_ERR;
- }
-
- if ((*tfile = open(filename, O_RDWR)) == -1) {
-#ifndef MAIN
- if (errno == EACCES) /* called with insufficient access rights */
- return PAM_IGNORE;
-#endif
- pam_syslog(pamh, LOG_ALERT, "Error opening %s for update: %m", filename);
-
- return PAM_AUTH_ERR;
- }
-
-skip_open:
- if (lseek(*tfile, (off_t)uid*(off_t)sizeof(*tally), SEEK_SET) == (off_t)-1) {
- pam_syslog(pamh, LOG_ALERT, "lseek failed for %s: %m", filename);
- if (!preopened) {
- close(*tfile);
- *tfile = -1;
- }
- return PAM_AUTH_ERR;
- }
-
- if (!preopened && (ctrl & OPT_SERIALIZE)) {
- /* this code is not thread safe as it uses fcntl locks and alarm()
- so never use serialize with multithreaded services */
- struct sigaction newsa, oldsa;
- unsigned int oldalarm;
- int rv;
-
- memset(&newsa, '\0', sizeof(newsa));
- newsa.sa_handler = alarm_handler;
- sigaction(SIGALRM, &newsa, &oldsa);
- oldalarm = alarm(MAX_LOCK_WAITING_TIME);
-
- rv = lockf(*tfile, F_LOCK, sizeof(*tally));
- /* lock failure is not fatal, we attempt to read the tally anyway */
-
- /* reinstate the eventual old alarm handler */
- if (rv == -1 && errno == EINTR) {
- if (oldalarm > MAX_LOCK_WAITING_TIME) {
- oldalarm -= MAX_LOCK_WAITING_TIME;
- } else if (oldalarm > 0) {
- oldalarm = 1;
- }
- }
- sigaction(SIGALRM, &oldsa, NULL);
- alarm(oldalarm);
- }
-
- if (pam_modutil_read(*tfile, void_tally, sizeof(*tally)) != sizeof(*tally)) {
- memset(tally, 0, sizeof(*tally));
- }
-
- tally->fail_line[sizeof(tally->fail_line)-1] = '\0';
-
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- Support function: update tallyfile with tally!=TALLY_HI --- */
-
-static int
-set_tally(pam_handle_t *pamh, uid_t uid,
- const char *filename, int *tfile, struct tallylog *tally)
-{
- void *void_tally = tally;
- if (tally->fail_cnt != TALLY_HI) {
- if (lseek(*tfile, (off_t)uid * sizeof(*tally), SEEK_SET) == (off_t)-1) {
- pam_syslog(pamh, LOG_ALERT, "lseek failed for %s: %m", filename);
- return PAM_AUTH_ERR;
- }
- if (pam_modutil_write(*tfile, void_tally, sizeof(*tally)) != sizeof(*tally)) {
- pam_syslog(pamh, LOG_ALERT, "update (write) failed for %s: %m", filename);
- return PAM_AUTH_ERR;
- }
- }
-
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- PAM bits --- */
-
-#ifndef MAIN
-
-#define RETURN_ERROR(i) return ((opts->ctrl & OPT_FAIL_ON_ERROR)?(i):(PAM_SUCCESS))
-
-/*---------------------------------------------------------------------*/
-
-static int
-tally_check (tally_t oldcnt, time_t oldtime, pam_handle_t *pamh, uid_t uid,
- const char *user, struct tally_options *opts,
- struct tallylog *tally)
-{
- int rv = PAM_SUCCESS;
- int loglevel = LOG_DEBUG;
-#ifdef HAVE_LIBAUDIT
- char buf[64];
- int audit_fd = -1;
- const void *rhost = NULL, *tty = NULL;
-#endif
-
- if ((opts->ctrl & OPT_MAGIC_ROOT) && getuid() == 0) {
- return PAM_SUCCESS;
- }
- /* magic_root skips tally check */
-#ifdef HAVE_LIBAUDIT
- audit_fd = audit_open();
- /* If there is an error & audit support is in the kernel report error */
- if ((audit_fd < 0) && !(errno == EINVAL || errno == EPROTONOSUPPORT ||
- errno == EAFNOSUPPORT))
- return PAM_SYSTEM_ERR;
- (void)pam_get_item(pamh, PAM_TTY, &tty);
- (void)pam_get_item(pamh, PAM_RHOST, &rhost);
-#endif
- if (opts->deny != 0 && /* deny==0 means no deny */
- tally->fail_cnt > opts->deny && /* tally>deny means exceeded */
- ((opts->ctrl & OPT_DENY_ROOT) || uid)) { /* even_deny stops uid check */
-#ifdef HAVE_LIBAUDIT
- if (tally->fail_cnt == opts->deny+1) {
- /* First say that max number was hit. */
- snprintf(buf, sizeof(buf), "pam_tally2 uid=%u ", uid);
- audit_log_user_message(audit_fd, AUDIT_ANOM_LOGIN_FAILURES, buf,
- rhost, NULL, tty, 1);
- }
-#endif
- if (uid) {
- /* Unlock time check */
- if (opts->unlock_time && oldtime) {
- if (opts->unlock_time + oldtime <= time(NULL)) {
- /* ignore deny check after unlock_time elapsed */
-#ifdef HAVE_LIBAUDIT
- snprintf(buf, sizeof(buf), "pam_tally2 uid=%u ", uid);
- audit_log_user_message(audit_fd, AUDIT_RESP_ACCT_UNLOCK_TIMED, buf,
- rhost, NULL, tty, 1);
-#endif
- rv = PAM_SUCCESS;
- goto cleanup;
- }
- }
- } else {
- /* Root unlock time check */
- if (opts->root_unlock_time && oldtime) {
- if (opts->root_unlock_time + oldtime <= time(NULL)) {
- /* ignore deny check after unlock_time elapsed */
-#ifdef HAVE_LIBAUDIT
- snprintf(buf, sizeof(buf), "pam_tally2 uid=%u ", uid);
- audit_log_user_message(audit_fd, AUDIT_RESP_ACCT_UNLOCK_TIMED, buf,
- rhost, NULL, tty, 1);
-#endif
- rv = PAM_SUCCESS;
- goto cleanup;
- }
- }
- }
-
-#ifdef HAVE_LIBAUDIT
- if (tally->fail_cnt == opts->deny+1) {
- /* First say that max number was hit. */
- audit_log_user_message(audit_fd, AUDIT_RESP_ACCT_LOCK, buf,
- rhost, NULL, tty, 1);
- }
-#endif
-
- if (!(opts->ctrl & OPT_QUIET)) {
- pam_info(pamh, _("The account is locked due to %u failed logins."),
- (unsigned int)tally->fail_cnt);
- }
- loglevel = LOG_NOTICE;
- rv = PAM_AUTH_ERR; /* Only unconditional failure */
- goto cleanup;
- }
-
- /* Lock time check */
- if (opts->lock_time && oldtime) {
- if (opts->lock_time + oldtime > time(NULL)) {
- /* don't increase fail_cnt or update fail_time when
- lock_time applies */
- tally->fail_cnt = oldcnt;
- tally->fail_time = oldtime;
-
- if (!(opts->ctrl & OPT_QUIET)) {
- pam_info(pamh,
- _("The account is temporarily locked (%ld seconds left)."),
- (long int) (oldtime+opts->lock_time-time(NULL)));
- }
- if (!(opts->ctrl & OPT_NOLOGNOTICE)) {
- pam_syslog(pamh, LOG_NOTICE,
- "user %s (%lu) has time limit [%lds left]"
- " since last failure.",
- user, (unsigned long)uid,
- (long int) (oldtime+opts->lock_time-time(NULL)));
- }
- rv = PAM_AUTH_ERR;
- goto cleanup;
- }
- }
-
-cleanup:
- if (!(opts->ctrl & OPT_NOLOGNOTICE) && (loglevel != LOG_DEBUG || opts->ctrl & OPT_DEBUG)) {
- pam_syslog(pamh, loglevel,
- "user %s (%lu) tally %hu, deny %hu",
- user, (unsigned long)uid, tally->fail_cnt, opts->deny);
- }
-#ifdef HAVE_LIBAUDIT
- if (audit_fd != -1) {
- close(audit_fd);
- }
-#endif
- return rv;
-}
-
-/* --- tally bump function: bump tally for uid by (signed) inc --- */
-
-static int
-tally_bump (int inc, time_t *oldtime, pam_handle_t *pamh,
- uid_t uid, const char *user, struct tally_options *opts, int *tfile)
-{
- struct tallylog tally;
- tally_t oldcnt;
- const void *remote_host = NULL;
- int i, rv;
-
- tally.fail_cnt = 0; /* !TALLY_HI --> Log opened for update */
-
- i = get_tally(pamh, uid, opts->filename, tfile, &tally, opts->ctrl);
- if (i != PAM_SUCCESS) {
- if (*tfile != -1) {
- close(*tfile);
- *tfile = -1;
- }
- RETURN_ERROR(i);
- }
-
- /* to remember old fail time (for locktime) */
- if (oldtime) {
- *oldtime = (time_t)tally.fail_time;
- }
-
- tally.fail_time = time(NULL);
-
- (void) pam_get_item(pamh, PAM_RHOST, &remote_host);
- if (!remote_host) {
- (void) pam_get_item(pamh, PAM_TTY, &remote_host);
- if (!remote_host) {
- remote_host = "unknown";
- }
- }
-
- strncpy(tally.fail_line, remote_host,
- sizeof(tally.fail_line)-1);
- tally.fail_line[sizeof(tally.fail_line)-1] = 0;
-
- oldcnt = tally.fail_cnt;
-
- if (!(opts->ctrl & OPT_MAGIC_ROOT) || getuid()) {
- /* magic_root doesn't change tally */
- tally.fail_cnt += inc;
-
- if (tally.fail_cnt == TALLY_HI) { /* Overflow *and* underflow. :) */
- tally.fail_cnt -= inc;
- pam_syslog(pamh, LOG_ALERT, "Tally %sflowed for user %s",
- (inc<0)?"under":"over",user);
- }
- }
-
- rv = tally_check(oldcnt, *oldtime, pamh, uid, user, opts, &tally);
-
- i = set_tally(pamh, uid, opts->filename, tfile, &tally);
- if (i != PAM_SUCCESS) {
- if (*tfile != -1) {
- close(*tfile);
- *tfile = -1;
- }
- if (rv == PAM_SUCCESS)
- RETURN_ERROR( i );
- /* fallthrough */
- } else if (!(opts->ctrl & OPT_SERIALIZE)) {
- close(*tfile);
- *tfile = -1;
- }
-
- return rv;
-}
-
-static int
-tally_reset (pam_handle_t *pamh, uid_t uid, struct tally_options *opts, int old_tfile)
-{
- struct tallylog tally;
- int tfile = old_tfile;
- int i;
-
- /* resets only if not magic root */
-
- if ((opts->ctrl & OPT_MAGIC_ROOT) && getuid() == 0) {
- return PAM_SUCCESS;
- }
-
- tally.fail_cnt = 0; /* !TALLY_HI --> Log opened for update */
-
- i=get_tally(pamh, uid, opts->filename, &tfile, &tally, opts->ctrl);
- if (i != PAM_SUCCESS) {
- if (tfile != old_tfile) /* the descriptor is not owned by pam data */
- close(tfile);
- RETURN_ERROR(i);
- }
-
- memset(&tally, 0, sizeof(tally));
-
- i=set_tally(pamh, uid, opts->filename, &tfile, &tally);
- if (i != PAM_SUCCESS) {
- if (tfile != old_tfile) /* the descriptor is not owned by pam data */
- close(tfile);
- RETURN_ERROR(i);
- }
-
- if (tfile != old_tfile)
- close(tfile);
-
- return PAM_SUCCESS;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- authentication management functions (only) --- */
-
-int
-pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
-{
- int
- rv, tfile = -1;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rv = tally_parse_args(pamh, opts, PHASE_AUTH, argc, argv);
- if (rv != PAM_SUCCESS)
- RETURN_ERROR(rv);
-
- if (flags & PAM_SILENT)
- opts->ctrl |= OPT_QUIET;
-
- rv = pam_get_uid(pamh, &uid, &user, opts);
- if (rv != PAM_SUCCESS)
- RETURN_ERROR(rv);
-
- rv = tally_bump(1, &oldtime, pamh, uid, user, opts, &tfile);
-
- tally_set_data(pamh, oldtime, tfile);
-
- return rv;
-}
-
-int
-pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
-{
- int
- rv, tfile = -1;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rv = tally_parse_args(pamh, opts, PHASE_AUTH, argc, argv);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- rv = pam_get_uid(pamh, &uid, &user, opts);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if ( tally_get_data(pamh, &oldtime, &tfile) != 0 )
- /* no data found */
- return PAM_SUCCESS;
-
- rv = tally_reset(pamh, uid, opts, tfile);
-
- pam_set_data(pamh, MODULE_NAME, NULL, NULL);
-
- return rv;
-}
-
-/*---------------------------------------------------------------------*/
-
-/* --- authentication management functions (only) --- */
-
-/* To reset failcount of user on successful login */
-
-int
-pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
-{
- int
- rv, tfile = -1;
- time_t
- oldtime = 0;
- struct tally_options
- options, *opts = &options;
- uid_t
- uid;
- const char
- *user;
-
- rv = tally_parse_args(pamh, opts, PHASE_ACCOUNT, argc, argv);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- rv = pam_get_uid(pamh, &uid, &user, opts);
- if ( rv != PAM_SUCCESS )
- RETURN_ERROR( rv );
-
- if ( tally_get_data(pamh, &oldtime, &tfile) != 0 )
- /* no data found */
- return PAM_SUCCESS;
-
- rv = tally_reset(pamh, uid, opts, tfile);
-
- pam_set_data(pamh, MODULE_NAME, NULL, NULL);
-
- return rv;
-}
-
-/*-----------------------------------------------------------------------*/
-
-#else /* #ifndef MAIN */
-
-static const char *cline_filename = DEFAULT_LOGFILE;
-static tally_t cline_reset = TALLY_HI; /* Default is `interrogate only' */
-static int cline_quiet = 0;
-
-/*
- * Not going to link with pamlib just for these.. :)
- */
-
-static const char *
-pam_errors( int i )
-{
- switch (i) {
- case PAM_AUTH_ERR: return _("Authentication error");
- case PAM_SERVICE_ERR: return _("Service error");
- case PAM_USER_UNKNOWN: return _("Unknown user");
- default: return _("Unknown error");
- }
-}
-
-static int
-getopts( char **argv )
-{
- const char *pname = *argv;
- for ( ; *argv ; (void)(*argv && ++argv) ) {
- const char *str;
- if ( !strcmp (*argv,"--file") ) cline_filename=*++argv;
- else if ( !strcmp(*argv,"-f") ) cline_filename=*++argv;
- else if ((str = pam_str_skip_prefix(*argv, "--file=")) != NULL)
- cline_filename = str;
- else if ( !strcmp (*argv,"--user") ) cline_user=*++argv;
- else if ( !strcmp (*argv,"-u") ) cline_user=*++argv;
- else if ((str = pam_str_skip_prefix(*argv, "--user=")) != NULL)
- cline_user = str;
- else if ( !strcmp (*argv,"--reset") ) cline_reset=0;
- else if ( !strcmp (*argv,"-r") ) cline_reset=0;
- else if ((str = pam_str_skip_prefix(*argv, "--reset=")) != NULL) {
- if (sscanf(str, "%hu", &cline_reset) != 1)
- fprintf(stderr,_("%s: Bad number given to --reset=\n"),pname), exit(0);
- }
- else if ( !strcmp (*argv,"--quiet") ) cline_quiet=1;
- else {
- fprintf(stderr,_("%s: Unrecognised option %s\n"),pname,*argv);
- return FALSE;
- }
- }
- return TRUE;
-}
-
-static void
-print_one(const struct tallylog *tally, uid_t uid)
-{
- static int once;
- const char *cp = "[UNKNOWN]";
- time_t fail_time;
- struct tm *tm;
- struct passwd *pwent;
- const char *username = "[NONAME]";
- char ptime[80];
-
- pwent = getpwuid(uid);
- fail_time = tally->fail_time;
- if ((tm = localtime(&fail_time)) != NULL) {
- strftime (ptime, sizeof (ptime), "%D %H:%M:%S", tm);
- cp = ptime;
- }
- if (pwent) {
- username = pwent->pw_name;
- }
- if (!once) {
- printf (_("Login Failures Latest failure From\n"));
- once++;
- }
- printf ("%-15.15s %5hu ", username, tally->fail_cnt);
- if (tally->fail_time) {
- printf ("%-17.17s %s", cp, tally->fail_line);
- }
- putchar ('\n');
-}
-
-int
-main( int argc UNUSED, char **argv )
-{
- struct tallylog tally;
-
- if ( ! getopts( argv+1 ) ) {
- printf(_("%s: [-f rooted-filename] [--file rooted-filename]\n"
- " [-u username] [--user username]\n"
- " [-r] [--reset[=n]] [--quiet]\n"),
- *argv);
- exit(2);
- }
-
- umask(077);
-
- /*
- * Major difference between individual user and all users:
- * --user just handles one user, just like PAM.
- * without --user it handles all users, sniffing cline_filename for nonzeros
- */
-
- if ( cline_user ) {
- uid_t uid;
- int tfile = -1;
- struct tally_options opts;
- int i;
-
- memset(&opts, 0, sizeof(opts));
- opts.ctrl = OPT_AUDIT;
- i=pam_get_uid(NULL, &uid, NULL, &opts);
- if ( i != PAM_SUCCESS ) {
- fprintf(stderr,"%s: %s\n",*argv,pam_errors(i));
- exit(1);
- }
-
- if (cline_reset == 0) {
- struct stat st;
-
- if (stat(cline_filename, &st) && errno == ENOENT) {
- if (!cline_quiet) {
- memset(&tally, 0, sizeof(tally));
- print_one(&tally, uid);
- }
- return 0; /* no file => nothing to reset */
- }
- }
-
- i=get_tally(NULL, uid, cline_filename, &tfile, &tally, 0);
- if ( i != PAM_SUCCESS ) {
- if (tfile != -1)
- close(tfile);
- fprintf(stderr, "%s: %s\n", *argv, pam_errors(i));
- exit(1);
- }
-
- if ( !cline_quiet )
- print_one(&tally, uid);
-
- if (cline_reset != TALLY_HI) {
-#ifdef HAVE_LIBAUDIT
- char buf[64];
- int audit_fd = audit_open();
- snprintf(buf, sizeof(buf), "pam_tally2 uid=%u reset=%hu", uid, cline_reset);
- audit_log_user_message(audit_fd, AUDIT_USER_ACCT,
- buf, NULL, NULL, ttyname(STDIN_FILENO), 1);
- if (audit_fd >=0)
- close(audit_fd);
-#endif
- if (cline_reset == 0) {
- memset(&tally, 0, sizeof(tally));
- } else {
- tally.fail_cnt = cline_reset;
- }
- i=set_tally(NULL, uid, cline_filename, &tfile, &tally);
- close(tfile);
- if (i != PAM_SUCCESS) {
- fprintf(stderr,"%s: %s\n",*argv,pam_errors(i));
- exit(1);
- }
- } else {
- close(tfile);
- }
- }
- else /* !cline_user (ie, operate on all users) */ {
- FILE *tfile=fopen(cline_filename, "r");
- uid_t uid=0;
- if (!tfile && cline_reset != 0) {
- perror(*argv);
- exit(1);
- }
-
- for ( ; tfile && !feof(tfile); uid++ ) {
- if ( !fread(&tally, sizeof(tally), 1, tfile)
- || !tally.fail_cnt ) {
- continue;
- }
- print_one(&tally, uid);
- }
- if (tfile)
- fclose(tfile);
- if ( cline_reset!=0 && cline_reset!=TALLY_HI ) {
- fprintf(stderr,_("%s: Can't reset all users to non-zero\n"),*argv);
- }
- else if ( !cline_reset ) {
-#ifdef HAVE_LIBAUDIT
- char buf[64];
- int audit_fd = audit_open();
- snprintf(buf, sizeof(buf), "pam_tally2 uid=all reset=0");
- audit_log_user_message(audit_fd, AUDIT_USER_ACCT,
- buf, NULL, NULL, ttyname(STDIN_FILENO), 1);
- if (audit_fd >=0)
- close(audit_fd);
-#endif
- tfile=fopen(cline_filename, "w");
- if ( !tfile ) perror(*argv), exit(0);
- fclose(tfile);
- }
- }
- return 0;
-}
-
-
-#endif /* #ifndef MAIN */
diff --git a/modules/pam_tally2/pam_tally2_app.c b/modules/pam_tally2/pam_tally2_app.c
deleted file mode 100644
index b72e9bfd..00000000
--- a/modules/pam_tally2/pam_tally2_app.c
+++ /dev/null
@@ -1,6 +0,0 @@
-/*
- # This seemed like such a good idea at the time. :)
- */
-
-#define MAIN
-#include "pam_tally2.c"
diff --git a/modules/pam_tally2/tallylog.h b/modules/pam_tally2/tallylog.h
deleted file mode 100644
index 596b1dac..00000000
--- a/modules/pam_tally2/tallylog.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2006, Red Hat, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Red Hat, Inc. nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY RED HAT, INC. AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * tallylog.h - login failure data file format
- *
- * The new login failure file is not compatible with the old faillog(8) format
- * Each record in the file represents a separate UID and the file
- * is indexed in that fashion.
- */
-
-
-#ifndef _TALLYLOG_H
-#define _TALLYLOG_H
-
-#include <stdint.h>
-
-struct tallylog {
- char fail_line[52]; /* rhost or tty of last failure */
- uint16_t reserved; /* reserved for future use */
- uint16_t fail_cnt; /* failures since last success */
- uint64_t fail_time; /* time of last failure */
-};
-/* 64 bytes / entry */
-
-#endif
diff --git a/modules/pam_tally2/tst-pam_tally2 b/modules/pam_tally2/tst-pam_tally2
deleted file mode 100755
index 83c71f41..00000000
--- a/modules/pam_tally2/tst-pam_tally2
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-../../tests/tst-dlopen .libs/pam_tally2.so
diff --git a/modules/pam_time/Makefile.in b/modules/pam_time/Makefile.in
index 331bcc31..08d02d62 100644
--- a/modules/pam_time/Makefile.in
+++ b/modules/pam_time/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_time
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -376,6 +379,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -420,6 +424,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -433,6 +440,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -452,7 +461,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -499,8 +507,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -511,6 +517,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -560,7 +567,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -568,9 +574,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -580,6 +583,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -980,7 +984,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_time/pam_time.8 b/modules/pam_time/pam_time.8
index 0d7eca96..28d84d75 100644
--- a/modules/pam_time/pam_time.8
+++ b/modules/pam_time/pam_time.8
@@ -2,12 +2,12 @@
.\" Title: pam_time
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_TIME" "8" "06/08/2020" "Linux-PAM Manual" "Linux-PAM Manual"
+.TH "PAM_TIME" "8" "09/03/2021" "Linux-PAM Manual" "Linux-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_time/time.conf.5 b/modules/pam_time/time.conf.5
index f866f9bc..2dda8bee 100644
--- a/modules/pam_time/time.conf.5
+++ b/modules/pam_time/time.conf.5
@@ -2,12 +2,12 @@
.\" Title: time.conf
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "TIME\&.CONF" "5" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "TIME\&.CONF" "5" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_timestamp/Makefile.am b/modules/pam_timestamp/Makefile.am
index d49abf4b..d290b85f 100644
--- a/modules/pam_timestamp/Makefile.am
+++ b/modules/pam_timestamp/Makefile.am
@@ -18,12 +18,12 @@ TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
-noinst_HEADERS = hmacsha1.h sha1.h
+noinst_HEADERS = hmacsha1.h sha1.h hmac_openssl_wrapper.h
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
$(WARN_CFLAGS)
-pam_timestamp_la_LDFLAGS = -no-undefined -avoid-version -module $(AM_LDFLAGS)
+pam_timestamp_la_LDFLAGS = -no-undefined -avoid-version -module $(AM_LDFLAGS) $(CRYPTO_LIBS)
pam_timestamp_la_LIBADD = $(top_builddir)/libpam/libpam.la
if HAVE_VERSIONING
pam_timestamp_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
@@ -32,15 +32,24 @@ endif
securelib_LTLIBRARIES = pam_timestamp.la
sbin_PROGRAMS = pam_timestamp_check
-pam_timestamp_la_SOURCES = pam_timestamp.c hmacsha1.c sha1.c
+pam_timestamp_la_SOURCES = pam_timestamp.c
+if COND_USE_OPENSSL
+pam_timestamp_la_SOURCES += hmac_openssl_wrapper.c
+else
+pam_timestamp_la_SOURCES += hmacsha1.c sha1.c
+endif
pam_timestamp_la_CFLAGS = $(AM_CFLAGS)
pam_timestamp_check_SOURCES = pam_timestamp_check.c
-pam_timestamp_check_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@
+pam_timestamp_check_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
pam_timestamp_check_LDADD = $(top_builddir)/libpam/libpam.la
-pam_timestamp_check_LDFLAGS = @PIE_LDFLAGS@
+pam_timestamp_check_LDFLAGS = @EXE_LDFLAGS@
+if COND_USE_OPENSSL
+hmacfile_SOURCES = hmac_openssl_wrapper.c
+else
hmacfile_SOURCES = hmacfile.c hmacsha1.c sha1.c
+endif
hmacfile_LDADD = $(top_builddir)/libpam/libpam.la
check_PROGRAMS = hmacfile
diff --git a/modules/pam_timestamp/Makefile.in b/modules/pam_timestamp/Makefile.in
index 79941c54..440020b5 100644
--- a/modules/pam_timestamp/Makefile.in
+++ b/modules/pam_timestamp/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -98,21 +98,26 @@ build_triplet = @build@
host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
sbin_PROGRAMS = pam_timestamp_check$(EXEEXT)
+@COND_USE_OPENSSL_TRUE@am__append_2 = hmac_openssl_wrapper.c
+@COND_USE_OPENSSL_FALSE@am__append_3 = hmacsha1.c sha1.c
check_PROGRAMS = hmacfile$(EXEEXT)
subdir = modules/pam_timestamp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -154,8 +159,13 @@ am__uninstall_files_from_dir = { \
}
LTLIBRARIES = $(securelib_LTLIBRARIES)
pam_timestamp_la_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
+am__pam_timestamp_la_SOURCES_DIST = pam_timestamp.c \
+ hmac_openssl_wrapper.c hmacsha1.c sha1.c
+@COND_USE_OPENSSL_TRUE@am__objects_1 = pam_timestamp_la-hmac_openssl_wrapper.lo
+@COND_USE_OPENSSL_FALSE@am__objects_2 = pam_timestamp_la-hmacsha1.lo \
+@COND_USE_OPENSSL_FALSE@ pam_timestamp_la-sha1.lo
am_pam_timestamp_la_OBJECTS = pam_timestamp_la-pam_timestamp.lo \
- pam_timestamp_la-hmacsha1.lo pam_timestamp_la-sha1.lo
+ $(am__objects_1) $(am__objects_2)
pam_timestamp_la_OBJECTS = $(am_pam_timestamp_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -165,8 +175,12 @@ pam_timestamp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(pam_timestamp_la_CFLAGS) $(CFLAGS) \
$(pam_timestamp_la_LDFLAGS) $(LDFLAGS) -o $@
-am_hmacfile_OBJECTS = hmacfile.$(OBJEXT) hmacsha1.$(OBJEXT) \
- sha1.$(OBJEXT)
+am__hmacfile_SOURCES_DIST = hmacfile.c hmacsha1.c sha1.c \
+ hmac_openssl_wrapper.c
+@COND_USE_OPENSSL_FALSE@am_hmacfile_OBJECTS = hmacfile.$(OBJEXT) \
+@COND_USE_OPENSSL_FALSE@ hmacsha1.$(OBJEXT) sha1.$(OBJEXT)
+@COND_USE_OPENSSL_TRUE@am_hmacfile_OBJECTS = \
+@COND_USE_OPENSSL_TRUE@ hmac_openssl_wrapper.$(OBJEXT)
hmacfile_OBJECTS = $(am_hmacfile_OBJECTS)
hmacfile_DEPENDENCIES = $(top_builddir)/libpam/libpam.la
am_pam_timestamp_check_OBJECTS = \
@@ -192,8 +206,10 @@ am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/hmacfile.Po ./$(DEPDIR)/hmacsha1.Po \
+am__depfiles_remade = ./$(DEPDIR)/hmac_openssl_wrapper.Po \
+ ./$(DEPDIR)/hmacfile.Po ./$(DEPDIR)/hmacsha1.Po \
./$(DEPDIR)/pam_timestamp_check-pam_timestamp_check.Po \
+ ./$(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Plo \
./$(DEPDIR)/pam_timestamp_la-hmacsha1.Plo \
./$(DEPDIR)/pam_timestamp_la-pam_timestamp.Plo \
./$(DEPDIR)/pam_timestamp_la-sha1.Plo ./$(DEPDIR)/sha1.Po
@@ -218,8 +234,8 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(pam_timestamp_la_SOURCES) $(hmacfile_SOURCES) \
$(pam_timestamp_check_SOURCES)
-DIST_SOURCES = $(pam_timestamp_la_SOURCES) $(hmacfile_SOURCES) \
- $(pam_timestamp_check_SOURCES)
+DIST_SOURCES = $(am__pam_timestamp_la_SOURCES_DIST) \
+ $(am__hmacfile_SOURCES_DIST) $(pam_timestamp_check_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -405,6 +421,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -449,6 +466,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -462,6 +482,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -481,7 +503,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -528,8 +549,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -540,6 +559,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -589,7 +609,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -597,9 +616,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -609,6 +625,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -622,21 +639,23 @@ dist_check_SCRIPTS = tst-pam_timestamp
TESTS = $(dist_check_SCRIPTS) $(check_PROGRAMS)
securelibdir = $(SECUREDIR)
secureconfdir = $(SCONFIGDIR)
-noinst_HEADERS = hmacsha1.h sha1.h
+noinst_HEADERS = hmacsha1.h sha1.h hmac_openssl_wrapper.h
AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \
$(WARN_CFLAGS)
pam_timestamp_la_LDFLAGS = -no-undefined -avoid-version -module \
- $(AM_LDFLAGS) $(am__append_1)
+ $(AM_LDFLAGS) $(CRYPTO_LIBS) $(am__append_1)
pam_timestamp_la_LIBADD = $(top_builddir)/libpam/libpam.la
securelib_LTLIBRARIES = pam_timestamp.la
-pam_timestamp_la_SOURCES = pam_timestamp.c hmacsha1.c sha1.c
+pam_timestamp_la_SOURCES = pam_timestamp.c $(am__append_2) \
+ $(am__append_3)
pam_timestamp_la_CFLAGS = $(AM_CFLAGS)
pam_timestamp_check_SOURCES = pam_timestamp_check.c
-pam_timestamp_check_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@
+pam_timestamp_check_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@
pam_timestamp_check_LDADD = $(top_builddir)/libpam/libpam.la
-pam_timestamp_check_LDFLAGS = @PIE_LDFLAGS@
-hmacfile_SOURCES = hmacfile.c hmacsha1.c sha1.c
+pam_timestamp_check_LDFLAGS = @EXE_LDFLAGS@
+@COND_USE_OPENSSL_FALSE@hmacfile_SOURCES = hmacfile.c hmacsha1.c sha1.c
+@COND_USE_OPENSSL_TRUE@hmacfile_SOURCES = hmac_openssl_wrapper.c
hmacfile_LDADD = $(top_builddir)/libpam/libpam.la
@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
all: all-am
@@ -783,9 +802,11 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmac_openssl_wrapper.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmacfile.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmacsha1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_timestamp_check-pam_timestamp_check.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_timestamp_la-hmacsha1.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_timestamp_la-pam_timestamp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_timestamp_la-sha1.Plo@am__quote@ # am--include-marker
@@ -825,6 +846,13 @@ pam_timestamp_la-pam_timestamp.lo: pam_timestamp.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_timestamp_la_CFLAGS) $(CFLAGS) -c -o pam_timestamp_la-pam_timestamp.lo `test -f 'pam_timestamp.c' || echo '$(srcdir)/'`pam_timestamp.c
+pam_timestamp_la-hmac_openssl_wrapper.lo: hmac_openssl_wrapper.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_timestamp_la_CFLAGS) $(CFLAGS) -MT pam_timestamp_la-hmac_openssl_wrapper.lo -MD -MP -MF $(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Tpo -c -o pam_timestamp_la-hmac_openssl_wrapper.lo `test -f 'hmac_openssl_wrapper.c' || echo '$(srcdir)/'`hmac_openssl_wrapper.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Tpo $(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hmac_openssl_wrapper.c' object='pam_timestamp_la-hmac_openssl_wrapper.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_timestamp_la_CFLAGS) $(CFLAGS) -c -o pam_timestamp_la-hmac_openssl_wrapper.lo `test -f 'hmac_openssl_wrapper.c' || echo '$(srcdir)/'`hmac_openssl_wrapper.c
+
pam_timestamp_la-hmacsha1.lo: hmacsha1.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pam_timestamp_la_CFLAGS) $(CFLAGS) -MT pam_timestamp_la-hmacsha1.lo -MD -MP -MF $(DEPDIR)/pam_timestamp_la-hmacsha1.Tpo -c -o pam_timestamp_la-hmacsha1.lo `test -f 'hmacsha1.c' || echo '$(srcdir)/'`hmacsha1.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/pam_timestamp_la-hmacsha1.Tpo $(DEPDIR)/pam_timestamp_la-hmacsha1.Plo
@@ -1061,7 +1089,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
@@ -1208,9 +1236,11 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
clean-sbinPROGRAMS clean-securelibLTLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -f ./$(DEPDIR)/hmacfile.Po
+ -rm -f ./$(DEPDIR)/hmac_openssl_wrapper.Po
+ -rm -f ./$(DEPDIR)/hmacfile.Po
-rm -f ./$(DEPDIR)/hmacsha1.Po
-rm -f ./$(DEPDIR)/pam_timestamp_check-pam_timestamp_check.Po
+ -rm -f ./$(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-hmacsha1.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-pam_timestamp.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-sha1.Plo
@@ -1260,9 +1290,11 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/hmacfile.Po
+ -rm -f ./$(DEPDIR)/hmac_openssl_wrapper.Po
+ -rm -f ./$(DEPDIR)/hmacfile.Po
-rm -f ./$(DEPDIR)/hmacsha1.Po
-rm -f ./$(DEPDIR)/pam_timestamp_check-pam_timestamp_check.Po
+ -rm -f ./$(DEPDIR)/pam_timestamp_la-hmac_openssl_wrapper.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-hmacsha1.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-pam_timestamp.Plo
-rm -f ./$(DEPDIR)/pam_timestamp_la-sha1.Plo
diff --git a/modules/pam_timestamp/README b/modules/pam_timestamp/README
index 4f16bae0..e1ed508a 100644
--- a/modules/pam_timestamp/README
+++ b/modules/pam_timestamp/README
@@ -13,6 +13,9 @@ created in the timestampdir directory for the user. When an application
attempts to authenticate the user, a pam_timestamp will treat a sufficiently
recent timestamp file as grounds for succeeding.
+The default encryption hash is taken from the HMAC_CRYPTO_ALGO variable from /
+etc/login.defs.
+
OPTIONS
timestampdir=directory
diff --git a/modules/pam_timestamp/hmac_openssl_wrapper.c b/modules/pam_timestamp/hmac_openssl_wrapper.c
new file mode 100644
index 00000000..926c2fb9
--- /dev/null
+++ b/modules/pam_timestamp/hmac_openssl_wrapper.c
@@ -0,0 +1,381 @@
+/* Wrapper for hmac openssl implementation.
+ *
+ * Copyright (c) 2021 Red Hat, Inc.
+ * Written by Iker Pedrosa <ipedrosa@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "config.h"
+
+#ifdef WITH_OPENSSL
+
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <syslog.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <openssl/evp.h>
+#include <openssl/params.h>
+#include <openssl/core_names.h>
+
+#include <security/pam_ext.h>
+#include <security/pam_modutil.h>
+
+#include "hmac_openssl_wrapper.h"
+
+#define LOGIN_DEFS "/etc/login.defs"
+#define CRYPTO_KEY "HMAC_CRYPTO_ALGO"
+#define DEFAULT_ALGORITHM "SHA512"
+#define MAX_HMAC_LENGTH 512
+#define MAX_KEY_LENGTH EVP_MAX_KEY_LENGTH
+
+static char *
+get_crypto_algorithm(pam_handle_t *pamh, int debug){
+ char *config_value = NULL;
+
+ config_value = pam_modutil_search_key(pamh, LOGIN_DEFS, CRYPTO_KEY);
+
+ if (config_value == NULL) {
+ config_value = strdup(DEFAULT_ALGORITHM);
+ if (debug) {
+ pam_syslog(pamh, LOG_DEBUG,
+ "Key [%s] not found, falling back to default algorithm [%s]\n",
+ CRYPTO_KEY, DEFAULT_ALGORITHM);
+ }
+ }
+
+ return config_value;
+}
+
+static int
+generate_key(pam_handle_t *pamh, char **key, size_t key_size)
+{
+ int fd = 0;
+ size_t bytes_read = 0;
+ char * tmp = NULL;
+
+ fd = open("/dev/urandom", O_RDONLY);
+ if (fd == -1) {
+ pam_syslog(pamh, LOG_ERR, "Cannot open /dev/urandom: %m");
+ return PAM_AUTH_ERR;
+ }
+
+ tmp = malloc(key_size);
+ if (!tmp) {
+ pam_syslog(pamh, LOG_CRIT, "Not enough memory");
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ bytes_read = pam_modutil_read(fd, tmp, key_size);
+ close(fd);
+
+ if (bytes_read < key_size) {
+ pam_syslog(pamh, LOG_ERR, "Short read on random device");
+ free(tmp);
+ return PAM_AUTH_ERR;
+ }
+
+ *key = tmp;
+
+ return PAM_SUCCESS;
+}
+
+static int
+read_file(pam_handle_t *pamh, int fd, char **text, size_t *text_length)
+{
+ struct stat st;
+ size_t bytes_read = 0;
+ char *tmp = NULL;
+
+ if (fstat(fd, &st) == -1) {
+ pam_syslog(pamh, LOG_ERR, "Unable to stat file: %m");
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ if (st.st_size == 0) {
+ pam_syslog(pamh, LOG_ERR, "Key file size cannot be 0");
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ tmp = malloc(st.st_size);
+ if (!tmp) {
+ pam_syslog(pamh, LOG_CRIT, "Not enough memory");
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ bytes_read = pam_modutil_read(fd, tmp, st.st_size);
+ close(fd);
+
+ if (bytes_read < (size_t)st.st_size) {
+ pam_syslog(pamh, LOG_ERR, "Short read on key file");
+ memset(tmp, 0, st.st_size);
+ free(tmp);
+ return PAM_AUTH_ERR;
+ }
+
+ *text = tmp;
+ *text_length = st.st_size;
+
+ return PAM_SUCCESS;
+}
+
+static int
+write_file(pam_handle_t *pamh, const char *file_name, char *text,
+ size_t text_length, uid_t owner, gid_t group)
+{
+ int fd = 0;
+ size_t bytes_written = 0;
+
+ fd = open(file_name,
+ O_WRONLY | O_CREAT | O_TRUNC,
+ S_IRUSR | S_IWUSR);
+ if (fd == -1) {
+ pam_syslog(pamh, LOG_ERR, "Unable to open [%s]: %m", file_name);
+ memset(text, 0, text_length);
+ free(text);
+ return PAM_AUTH_ERR;
+ }
+
+ if (fchown(fd, owner, group) == -1) {
+ pam_syslog(pamh, LOG_ERR, "Unable to change ownership [%s]: %m", file_name);
+ memset(text, 0, text_length);
+ free(text);
+ close(fd);
+ return PAM_AUTH_ERR;
+ }
+
+ bytes_written = pam_modutil_write(fd, text, text_length);
+ close(fd);
+
+ if (bytes_written < text_length) {
+ pam_syslog(pamh, LOG_ERR, "Short write on %s", file_name);
+ free(text);
+ return PAM_AUTH_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
+static int
+key_management(pam_handle_t *pamh, const char *file_name, char **text,
+ size_t text_length, uid_t owner, gid_t group)
+{
+ int fd = 0;
+
+ fd = open(file_name, O_RDONLY | O_NOFOLLOW);
+ if (fd == -1) {
+ if (errno == ENOENT) {
+ if (generate_key(pamh, text, text_length)) {
+ pam_syslog(pamh, LOG_ERR, "Unable to generate key");
+ return PAM_AUTH_ERR;
+ }
+
+ if (write_file(pamh, file_name, *text, text_length, owner, group)) {
+ pam_syslog(pamh, LOG_ERR, "Unable to write key");
+ return PAM_AUTH_ERR;
+ }
+ } else {
+ pam_syslog(pamh, LOG_ERR, "Unable to open %s: %m", file_name);
+ return PAM_AUTH_ERR;
+ }
+ } else {
+ if (read_file(pamh, fd, text, &text_length)) {
+ pam_syslog(pamh, LOG_ERR, "Error reading key file %s\n", file_name);
+ return PAM_AUTH_ERR;
+ }
+ }
+
+ return PAM_SUCCESS;
+}
+
+static int
+hmac_management(pam_handle_t *pamh, int debug, void **out, size_t *out_length,
+ char *key, size_t key_length,
+ const void *text, size_t text_length)
+{
+ int ret = PAM_AUTH_ERR;
+ EVP_MAC *evp_mac = NULL;
+ EVP_MAC_CTX *ctx = NULL;
+ unsigned char *hmac_message = NULL;
+ size_t hmac_length;
+ char *algo = NULL;
+ OSSL_PARAM subalg_param[] = { OSSL_PARAM_END, OSSL_PARAM_END };
+
+ algo = get_crypto_algorithm(pamh, debug);
+
+ subalg_param[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST,
+ algo,
+ 0);
+
+ evp_mac = EVP_MAC_fetch(NULL, "HMAC", NULL);
+ if (evp_mac == NULL) {
+ pam_syslog(pamh, LOG_ERR, "Unable to create hmac implementation");
+ goto done;
+ }
+
+ ctx = EVP_MAC_CTX_new(evp_mac);
+ if (ctx == NULL) {
+ pam_syslog(pamh, LOG_ERR, "Unable to create hmac context");
+ goto done;
+ }
+
+ ret = EVP_MAC_init(ctx, (const unsigned char *)key, key_length, subalg_param);
+ if (ret == 0) {
+ pam_syslog(pamh, LOG_ERR, "Unable to initialize hmac context");
+ goto done;
+ }
+
+ ret = EVP_MAC_update(ctx, (const unsigned char *)text, text_length);
+ if (ret == 0) {
+ pam_syslog(pamh, LOG_ERR, "Unable to update hmac context");
+ goto done;
+ }
+
+ hmac_message = (unsigned char*)malloc(sizeof(unsigned char) * MAX_HMAC_LENGTH);
+ if (!hmac_message) {
+ pam_syslog(pamh, LOG_CRIT, "Not enough memory");
+ goto done;
+ }
+
+ ret = EVP_MAC_final(ctx, hmac_message, &hmac_length, MAX_HMAC_LENGTH);
+ if (ret == 0) {
+ pam_syslog(pamh, LOG_ERR, "Unable to calculate hmac message");
+ goto done;
+ }
+
+ *out_length = hmac_length;
+ *out = malloc(*out_length);
+ if (*out == NULL) {
+ pam_syslog(pamh, LOG_CRIT, "Not enough memory");
+ goto done;
+ }
+
+ memcpy(*out, hmac_message, *out_length);
+ ret = PAM_SUCCESS;
+
+done:
+ if (hmac_message != NULL) {
+ free(hmac_message);
+ }
+ if (key != NULL) {
+ memset(key, 0, key_length);
+ free(key);
+ }
+ if (ctx != NULL) {
+ EVP_MAC_CTX_free(ctx);
+ }
+ if (evp_mac != NULL) {
+ EVP_MAC_free(evp_mac);
+ }
+ free(algo);
+
+ return ret;
+}
+
+int
+hmac_size(pam_handle_t *pamh, int debug, size_t *hmac_length)
+{
+ int ret = PAM_AUTH_ERR;
+ EVP_MAC *evp_mac = NULL;
+ EVP_MAC_CTX *ctx = NULL;
+ const unsigned char key[] = "ThisIsJustAKey";
+ size_t key_length = MAX_KEY_LENGTH;
+ char *algo = NULL;
+ OSSL_PARAM subalg_param[] = { OSSL_PARAM_END, OSSL_PARAM_END };
+
+ algo = get_crypto_algorithm(pamh, debug);
+
+ subalg_param[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST,
+ algo,
+ 0);
+
+ evp_mac = EVP_MAC_fetch(NULL, "HMAC", NULL);
+ if (evp_mac == NULL) {
+ pam_syslog(pamh, LOG_ERR, "Unable to create hmac implementation");
+ goto done;
+ }
+
+ ctx = EVP_MAC_CTX_new(evp_mac);
+ if (ctx == NULL) {
+ pam_syslog(pamh, LOG_ERR, "Unable to create hmac context");
+ goto done;
+ }
+
+ ret = EVP_MAC_init(ctx, key, key_length, subalg_param);
+ if (ret == 0) {
+ pam_syslog(pamh, LOG_ERR, "Unable to initialize hmac context");
+ goto done;
+ }
+
+ *hmac_length = EVP_MAC_CTX_get_mac_size(ctx);
+ ret = PAM_SUCCESS;
+
+done:
+ if (ctx != NULL) {
+ EVP_MAC_CTX_free(ctx);
+ }
+ if (evp_mac != NULL) {
+ EVP_MAC_free(evp_mac);
+ }
+ free(algo);
+
+ return ret;
+}
+
+int
+hmac_generate(pam_handle_t *pamh, int debug, void **mac, size_t *mac_length,
+ const char *key_file, uid_t owner, gid_t group,
+ const void *text, size_t text_length)
+{
+ char *key = NULL;
+ size_t key_length = MAX_KEY_LENGTH;
+
+ if (key_management(pamh, key_file, &key, key_length, owner, group)) {
+ return PAM_AUTH_ERR;
+ }
+
+ if (hmac_management(pamh, debug, mac, mac_length, key, key_length,
+ text, text_length)) {
+ return PAM_AUTH_ERR;
+ }
+
+ return PAM_SUCCESS;
+}
+
+#endif /* WITH_OPENSSL */
diff --git a/modules/pam_timestamp/hmac_openssl_wrapper.h b/modules/pam_timestamp/hmac_openssl_wrapper.h
new file mode 100644
index 00000000..cc27c811
--- /dev/null
+++ b/modules/pam_timestamp/hmac_openssl_wrapper.h
@@ -0,0 +1,57 @@
+/* Wrapper for hmac openssl implementation.
+ *
+ * Copyright (c) 2021 Red Hat, Inc.
+ * Written by Iker Pedrosa <ipedrosa@redhat.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, and the entire permission notice in its entirety,
+ * including the disclaimer of warranties.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * ALTERNATIVELY, this product may be distributed under the terms of
+ * the GNU Public License, in which case the provisions of the GPL are
+ * required INSTEAD OF the above restrictions. (This clause is
+ * necessary due to a potential bad interaction between the GPL and
+ * the restrictions contained in a BSD-style copyright.)
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+#ifndef PAM_TIMESTAMP_HMAC_OPENSSL_WRAPPER_H
+#define PAM_TIMESTAMP_HMAC_OPENSSL_WRAPPER_H
+
+#include "config.h"
+
+#ifdef WITH_OPENSSL
+
+#include <openssl/hmac.h>
+#include <security/pam_modules.h>
+
+int
+hmac_size(pam_handle_t *pamh, int debug, size_t *hmac_length);
+
+int
+hmac_generate(pam_handle_t *pamh, int debug, void **mac, size_t *mac_length,
+ const char *key_file, uid_t owner, gid_t group,
+ const void *text, size_t text_length);
+
+#endif /* WITH_OPENSSL */
+#endif /* PAM_TIMESTAMP_HMAC_OPENSSL_WRAPPER_H */
diff --git a/modules/pam_timestamp/pam_timestamp.8 b/modules/pam_timestamp/pam_timestamp.8
index 59ddcd65..cd8195dc 100644
--- a/modules/pam_timestamp/pam_timestamp.8
+++ b/modules/pam_timestamp/pam_timestamp.8
@@ -2,12 +2,12 @@
.\" Title: pam_timestamp
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_TIMESTAMP" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_TIMESTAMP" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -45,6 +45,11 @@ When an application opens a session using
directory for the user\&. When an application attempts to authenticate the user, a
\fIpam_timestamp\fR
will treat a sufficiently recent timestamp file as grounds for succeeding\&.
+.PP
+The default encryption hash is taken from the
+\fBHMAC_CRYPTO_ALGO\fR
+variable from
+\fI/etc/login\&.defs\fR\&.
.SH "OPTIONS"
.PP
\fBtimestampdir=\fR\fB\fIdirectory\fR\fR
diff --git a/modules/pam_timestamp/pam_timestamp.8.xml b/modules/pam_timestamp/pam_timestamp.8.xml
index e19a0bcf..83e5aea8 100644
--- a/modules/pam_timestamp/pam_timestamp.8.xml
+++ b/modules/pam_timestamp/pam_timestamp.8.xml
@@ -50,6 +50,11 @@ for the user. When an application attempts to authenticate the user, a
<emphasis>pam_timestamp</emphasis> will treat a sufficiently recent timestamp
file as grounds for succeeding.
</para>
+ <para condition="openssl_hmac">
+ The default encryption hash is taken from the
+ <emphasis remap='B'>HMAC_CRYPTO_ALGO</emphasis> variable from
+ <emphasis>/etc/login.defs</emphasis>.
+ </para>
</refsect1>
<refsect1 id="pam_timestamp-options">
diff --git a/modules/pam_timestamp/pam_timestamp.c b/modules/pam_timestamp/pam_timestamp.c
index 30be883c..01dd1385 100644
--- a/modules/pam_timestamp/pam_timestamp.c
+++ b/modules/pam_timestamp/pam_timestamp.c
@@ -56,7 +56,11 @@
#include <utmp.h>
#include <syslog.h>
#include <paths.h>
+#ifdef WITH_OPENSSL
+#include "hmac_openssl_wrapper.h"
+#else
#include "hmacsha1.h"
+#endif /* WITH_OPENSSL */
#include <security/pam_modules.h>
#include <security/_pam_macros.h>
@@ -79,6 +83,9 @@
#define BUFLEN PATH_MAX
#endif
+#define ROOT_USER 0
+#define ROOT_GROUP 0
+
/* Return PAM_SUCCESS if the given directory looks "safe". */
static int
check_dir_perms(pam_handle_t *pamh, const char *tdir)
@@ -449,6 +456,13 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
return PAM_AUTH_ERR;
}
+#ifdef WITH_OPENSSL
+ if (hmac_size(pamh, debug, &maclen)) {
+ return PAM_AUTH_ERR;
+ }
+#else
+ maclen = hmac_sha1_size();
+#endif /* WITH_OPENSSL */
/* Check that the file is the expected size. */
if (st.st_size == 0) {
/* Invalid, but may have been created by sudo. */
@@ -456,7 +470,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
return PAM_AUTH_ERR;
}
if (st.st_size !=
- (off_t)(strlen(path) + 1 + sizeof(then) + hmac_sha1_size())) {
+ (off_t)(strlen(path) + 1 + sizeof(then) + maclen)) {
pam_syslog(pamh, LOG_NOTICE, "timestamp file `%s' "
"appears to be corrupted", path);
close(fd);
@@ -487,8 +501,17 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
message_end = message + strlen(path) + 1 + sizeof(then);
/* Regenerate the MAC. */
- hmac_sha1_generate_file(pamh, &mac, &maclen, TIMESTAMPKEY, 0, 0,
- message, message_end - message);
+#ifdef WITH_OPENSSL
+ if (hmac_generate(pamh, debug, &mac, &maclen, TIMESTAMPKEY,
+ ROOT_USER, ROOT_GROUP, message, message_end - message)) {
+ close(fd);
+ free(message);
+ return PAM_AUTH_ERR;
+ }
+#else
+ hmac_sha1_generate_file(pamh, &mac, &maclen, TIMESTAMPKEY,
+ ROOT_USER, ROOT_GROUP, message, message_end - message);
+#endif /* WITH_OPENSSL */
if ((mac == NULL) ||
(memcmp(path, message, strlen(path)) != 0) ||
(memcmp(mac, message_end, maclen) != 0)) {
@@ -605,8 +628,16 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, int argc, const char *
}
}
+#ifdef WITH_OPENSSL
+ if (hmac_size(pamh, debug, &maclen)) {
+ return PAM_SESSION_ERR;
+ }
+#else
+ maclen = hmac_sha1_size();
+#endif /* WITH_OPENSSL */
+
/* Generate the message. */
- text = malloc(strlen(path) + 1 + sizeof(now) + hmac_sha1_size());
+ text = malloc(strlen(path) + 1 + sizeof(now) + maclen);
if (text == NULL) {
pam_syslog(pamh, LOG_CRIT, "unable to allocate memory: %m");
return PAM_SESSION_ERR;
@@ -621,15 +652,21 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, int argc, const char *
p += sizeof(now);
/* Generate the MAC and append it to the plaintext. */
- hmac_sha1_generate_file(pamh, &mac, &maclen,
- TIMESTAMPKEY,
- 0, 0,
- text, p - text);
+#ifdef WITH_OPENSSL
+ if (hmac_generate(pamh, debug, &mac, &maclen, TIMESTAMPKEY,
+ ROOT_USER, ROOT_GROUP, text, p - text)) {
+ free(text);
+ return PAM_SESSION_ERR;
+ }
+#else
+ hmac_sha1_generate_file(pamh, &mac, &maclen, TIMESTAMPKEY,
+ ROOT_USER, ROOT_GROUP, text, p - text);
if (mac == NULL) {
pam_syslog(pamh, LOG_ERR, "failure generating MAC: %m");
free(text);
return PAM_SESSION_ERR;
}
+#endif /* WITH_OPENSSL */
memmove(p, mac, maclen);
p += maclen;
free(mac);
diff --git a/modules/pam_timestamp/pam_timestamp_check.8 b/modules/pam_timestamp/pam_timestamp_check.8
index 50fb1a30..a0373757 100644
--- a/modules/pam_timestamp/pam_timestamp_check.8
+++ b/modules/pam_timestamp/pam_timestamp_check.8
@@ -2,12 +2,12 @@
.\" Title: pam_timestamp_check
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_TIMESTAMP_CHECK" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_TIMESTAMP_CHECK" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -130,4 +130,4 @@ timestamp files and directories
\fBpam\fR(8)
.SH "AUTHOR"
.PP
-pam_tally was written by Nalin Dahyabhai\&.
+pam_timestamp was written by Nalin Dahyabhai\&.
diff --git a/modules/pam_timestamp/pam_timestamp_check.8.xml b/modules/pam_timestamp/pam_timestamp_check.8.xml
index 8ca5a755..3a65d7ef 100644
--- a/modules/pam_timestamp/pam_timestamp_check.8.xml
+++ b/modules/pam_timestamp/pam_timestamp_check.8.xml
@@ -200,7 +200,7 @@ session optional pam_timestamp.so
<refsect1 id='pam_timestamp-author'>
<title>AUTHOR</title>
<para>
- pam_tally was written by Nalin Dahyabhai.
+ pam_timestamp was written by Nalin Dahyabhai.
</para>
</refsect1>
diff --git a/modules/pam_timestamp/sha1.c b/modules/pam_timestamp/sha1.c
index af3ccb97..d713aed1 100644
--- a/modules/pam_timestamp/sha1.c
+++ b/modules/pam_timestamp/sha1.c
@@ -156,8 +156,8 @@ sha1_update(struct sha1_context *ctx, const unsigned char *data, size_t length)
while (l + ctx->pending_count >= SHA1_BLOCK_SIZE) {
c = ctx->pending_count;
t = SHA1_BLOCK_SIZE - c;
- memcpy(ctx->pending + c, &data[i], t);
- sha1_process(ctx, (uint32_t*) ctx->pending);
+ memcpy(ctx->pending.c + c, &data[i], t);
+ sha1_process(ctx, ctx->pending.i);
i += t;
l -= t;
ctx->pending_count = 0;
@@ -165,7 +165,7 @@ sha1_update(struct sha1_context *ctx, const unsigned char *data, size_t length)
/* Save what's left of the data block as a pending data block. */
c = ctx->pending_count;
- memcpy(ctx->pending + c, &data[i], l);
+ memcpy(ctx->pending.c + c, &data[i], l);
ctx->pending_count += l;
/* Update the message length. */
@@ -193,18 +193,17 @@ sha1_output(struct sha1_context *ctx, unsigned char *out)
/* Pad this block. */
c = ctx2.pending_count;
- memcpy(ctx2.pending + c,
+ memcpy(ctx2.pending.c + c,
padding, SHA1_BLOCK_SIZE - c);
/* Do we need to process two blocks now? */
if (c >= (SHA1_BLOCK_SIZE - (sizeof(uint32_t) * 2))) {
/* Process this block. */
- sha1_process(&ctx2,
- (uint32_t*) ctx2.pending);
+ sha1_process(&ctx2, ctx2.pending.i);
/* Set up another block. */
ctx2.pending_count = 0;
- memset(ctx2.pending, 0, SHA1_BLOCK_SIZE);
- ctx2.pending[0] =
+ memset(ctx2.pending.c, 0, SHA1_BLOCK_SIZE);
+ ctx2.pending.c[0] =
(c == SHA1_BLOCK_SIZE) ? 0x80 : 0;
}
@@ -217,11 +216,11 @@ sha1_output(struct sha1_context *ctx, unsigned char *out)
ctx2.counts[0] <<= 3;
ctx2.counts[0] = htonl(ctx2.counts[0]);
ctx2.counts[1] = htonl(ctx2.counts[1]);
- memcpy(ctx2.pending + 56,
+ memcpy(ctx2.pending.c + 56,
&ctx2.counts[1], sizeof(uint32_t));
- memcpy(ctx2.pending + 60,
+ memcpy(ctx2.pending.c + 60,
&ctx2.counts[0], sizeof(uint32_t));
- sha1_process(&ctx2, (uint32_t*) ctx2.pending);
+ sha1_process(&ctx2, ctx2.pending.i);
/* Output the data. */
out[ 3] = (ctx2.a >> 0) & 0xff;
diff --git a/modules/pam_timestamp/sha1.h b/modules/pam_timestamp/sha1.h
index a1c38917..69f432e6 100644
--- a/modules/pam_timestamp/sha1.h
+++ b/modules/pam_timestamp/sha1.h
@@ -46,7 +46,10 @@
struct sha1_context {
size_t count;
- unsigned char pending[SHA1_BLOCK_SIZE] PAM_ATTRIBUTE_ALIGNED(4);
+ union {
+ unsigned char c[SHA1_BLOCK_SIZE];
+ uint32_t i[SHA1_BLOCK_SIZE / sizeof(uint32_t)];
+ } pending;
uint32_t counts[2];
size_t pending_count;
uint32_t a, b, c, d, e;
diff --git a/modules/pam_tty_audit/Makefile.in b/modules/pam_tty_audit/Makefile.in
index 4b1b0ae0..124a811a 100644
--- a/modules/pam_tty_audit/Makefile.in
+++ b/modules/pam_tty_audit/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_tty_audit
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -911,7 +915,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_tty_audit/README b/modules/pam_tty_audit/README
index cae92c4c..91ea9cee 100644
--- a/modules/pam_tty_audit/README
+++ b/modules/pam_tty_audit/README
@@ -37,7 +37,7 @@ log_passwd
NOTES
When TTY auditing is enabled, it is inherited by all processes started by that
-user. In particular, daemons restarted by an user will still have TTY auditing
+user. In particular, daemons restarted by a user will still have TTY auditing
enabled, and audit TTY input even by other users unless auditing for these
users is explicitly disabled. Therefore, it is recommended to use disable=* as
the first option for most daemons using PAM.
diff --git a/modules/pam_tty_audit/pam_tty_audit.8 b/modules/pam_tty_audit/pam_tty_audit.8
index 7ecfcdb3..628cec46 100644
--- a/modules/pam_tty_audit/pam_tty_audit.8
+++ b/modules/pam_tty_audit/pam_tty_audit.8
@@ -2,12 +2,12 @@
.\" Title: pam_tty_audit
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_TTY_AUDIT" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_TTY_AUDIT" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -85,7 +85,7 @@ Success\&.
.RE
.SH "NOTES"
.PP
-When TTY auditing is enabled, it is inherited by all processes started by that user\&. In particular, daemons restarted by an user will still have TTY auditing enabled, and audit TTY input even by other users unless auditing for these users is explicitly disabled\&. Therefore, it is recommended to use
+When TTY auditing is enabled, it is inherited by all processes started by that user\&. In particular, daemons restarted by a user will still have TTY auditing enabled, and audit TTY input even by other users unless auditing for these users is explicitly disabled\&. Therefore, it is recommended to use
\fBdisable=*\fR
as the first option for most daemons using PAM\&.
.PP
diff --git a/modules/pam_tty_audit/pam_tty_audit.8.xml b/modules/pam_tty_audit/pam_tty_audit.8.xml
index e346c689..1c0ba5c4 100644
--- a/modules/pam_tty_audit/pam_tty_audit.8.xml
+++ b/modules/pam_tty_audit/pam_tty_audit.8.xml
@@ -129,7 +129,7 @@
<title>NOTES</title>
<para>
When TTY auditing is enabled, it is inherited by all processes started by
- that user. In particular, daemons restarted by an user will still have
+ that user. In particular, daemons restarted by a user will still have
TTY auditing enabled, and audit TTY input even by other users unless
auditing for these users is explicitly disabled. Therefore, it is
recommended to use <option>disable=*</option> as the first option for
diff --git a/modules/pam_umask/Makefile.in b/modules/pam_umask/Makefile.in
index 0f68b5cb..b4d72c99 100644
--- a/modules/pam_umask/Makefile.in
+++ b/modules/pam_umask/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_umask
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_umask/pam_umask.8 b/modules/pam_umask/pam_umask.8
index 0a4ad5ad..73a609fe 100644
--- a/modules/pam_umask/pam_umask.8
+++ b/modules/pam_umask/pam_umask.8
@@ -2,12 +2,12 @@
.\" Title: pam_umask
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_UMASK" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_UMASK" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_umask/pam_umask.c b/modules/pam_umask/pam_umask.c
index c9efe245..72b10e92 100644
--- a/modules/pam_umask/pam_umask.c
+++ b/modules/pam_umask/pam_umask.c
@@ -64,7 +64,8 @@ struct options_t {
int debug;
int usergroups;
int silent;
- char *umask;
+ const char *umask;
+ char *login_umask;
};
typedef struct options_t options_t;
@@ -79,7 +80,7 @@ parse_option (const pam_handle_t *pamh, const char *argv, options_t *options)
if (strcasecmp (argv, "debug") == 0)
options->debug = 1;
else if ((str = pam_str_skip_icase_prefix (argv, "umask=")) != NULL)
- options->umask = strdup (str);
+ options->umask = str;
else if (strcasecmp (argv, "usergroups") == 0)
options->usergroups = 1;
else if (strcasecmp (argv, "nousergroups") == 0)
@@ -102,10 +103,12 @@ get_options (pam_handle_t *pamh, options_t *options,
for ( ; argc-- > 0; argv++)
parse_option (pamh, *argv, options);
- if (options->umask == NULL)
- options->umask = pam_modutil_search_key (pamh, LOGIN_DEFS, "UMASK");
- if (options->umask == NULL)
- options->umask = pam_modutil_search_key (pamh, LOGIN_CONF, "UMASK");
+ if (options->umask == NULL) {
+ options->login_umask = pam_modutil_search_key (pamh, LOGIN_DEFS, "UMASK");
+ if (options->login_umask == NULL)
+ options->login_umask = pam_modutil_search_key (pamh, LOGIN_CONF, "UMASK");
+ options->umask = options->login_umask;
+ }
return 0;
}
@@ -216,7 +219,8 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED,
if (options.umask != NULL)
{
set_umask (options.umask);
- free (options.umask);
+ free (options.login_umask);
+ options.umask = options.login_umask = NULL;
}
setup_limits_from_gecos (pamh, &options, pw);
diff --git a/modules/pam_unix/Makefile.am b/modules/pam_unix/Makefile.am
index 6463872a..1658735b 100644
--- a/modules/pam_unix/Makefile.am
+++ b/modules/pam_unix/Makefile.am
@@ -47,14 +47,14 @@ bigcrypt_LDADD = @LIBCRYPT@
unix_chkpwd_SOURCES = unix_chkpwd.c md5_good.c md5_broken.c bigcrypt.c \
passverify.c
-unix_chkpwd_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@ -DHELPER_COMPILE=\"unix_chkpwd\"
-unix_chkpwd_LDFLAGS = @PIE_LDFLAGS@
+unix_chkpwd_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@ -DHELPER_COMPILE=\"unix_chkpwd\"
+unix_chkpwd_LDFLAGS = @EXE_LDFLAGS@
unix_chkpwd_LDADD = @LIBCRYPT@ @LIBSELINUX@ @LIBAUDIT@
unix_update_SOURCES = unix_update.c md5_good.c md5_broken.c bigcrypt.c \
passverify.c
-unix_update_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@ -DHELPER_COMPILE=\"unix_update\"
-unix_update_LDFLAGS = @PIE_LDFLAGS@
+unix_update_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@ -DHELPER_COMPILE=\"unix_update\"
+unix_update_LDFLAGS = @EXE_LDFLAGS@
unix_update_LDADD = @LIBCRYPT@ @LIBSELINUX@
if ENABLE_REGENERATE_MAN
diff --git a/modules/pam_unix/Makefile.in b/modules/pam_unix/Makefile.in
index bfc1a252..4dcfdf64 100644
--- a/modules/pam_unix/Makefile.in
+++ b/modules/pam_unix/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -100,18 +100,21 @@ sbin_PROGRAMS = unix_chkpwd$(EXEEXT) unix_update$(EXEEXT)
noinst_PROGRAMS = bigcrypt$(EXEEXT)
subdir = modules/pam_unix
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -431,6 +434,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -475,6 +479,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -488,6 +495,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -507,7 +516,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -554,8 +562,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -566,6 +572,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -615,7 +622,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -623,9 +629,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -635,6 +638,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -670,14 +674,14 @@ bigcrypt_LDADD = @LIBCRYPT@
unix_chkpwd_SOURCES = unix_chkpwd.c md5_good.c md5_broken.c bigcrypt.c \
passverify.c
-unix_chkpwd_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@ -DHELPER_COMPILE=\"unix_chkpwd\"
-unix_chkpwd_LDFLAGS = @PIE_LDFLAGS@
+unix_chkpwd_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@ -DHELPER_COMPILE=\"unix_chkpwd\"
+unix_chkpwd_LDFLAGS = @EXE_LDFLAGS@
unix_chkpwd_LDADD = @LIBCRYPT@ @LIBSELINUX@ @LIBAUDIT@
unix_update_SOURCES = unix_update.c md5_good.c md5_broken.c bigcrypt.c \
passverify.c
-unix_update_CFLAGS = $(AM_CFLAGS) @PIE_CFLAGS@ -DHELPER_COMPILE=\"unix_update\"
-unix_update_LDFLAGS = @PIE_LDFLAGS@
+unix_update_CFLAGS = $(AM_CFLAGS) @EXE_CFLAGS@ -DHELPER_COMPILE=\"unix_update\"
+unix_update_LDFLAGS = @EXE_LDFLAGS@
unix_update_LDADD = @LIBCRYPT@ @LIBSELINUX@
@ENABLE_REGENERATE_MAN_TRUE@dist_noinst_DATA = README
all: all-am
@@ -1254,7 +1258,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_unix/README b/modules/pam_unix/README
index a87f34a5..67a2d215 100644
--- a/modules/pam_unix/README
+++ b/modules/pam_unix/README
@@ -99,7 +99,7 @@ use_authtok
When password changing enforce the module to set the new password to the
one provided by a previously stacked password module (this is used in the
- example of the stacking of the pam_cracklib module documented below).
+ example of the stacking of the pam_passwdqc module documented below).
authtok_type=type
@@ -194,8 +194,8 @@ auth required pam_unix.so
# Ensure users account and password are still active
account required pam_unix.so
# Change the user's password, but at first check the strength
-# with pam_cracklib(8)
-password required pam_cracklib.so retry=3 minlen=6 difok=3
+# with pam_passwdqc(8)
+password required pam_passwdqc.so config=/etc/passwdqc.conf
password required pam_unix.so use_authtok nullok yescrypt
session required pam_unix.so
diff --git a/modules/pam_unix/bigcrypt.c b/modules/pam_unix/bigcrypt.c
index e08e4098..d8d61a4b 100644
--- a/modules/pam_unix/bigcrypt.c
+++ b/modules/pam_unix/bigcrypt.c
@@ -29,9 +29,7 @@
#include <string.h>
#include <stdlib.h>
#include <security/_pam_macros.h>
-#ifdef HAVE_LIBXCRYPT
-#include <xcrypt.h>
-#elif defined(HAVE_CRYPT_H)
+#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
@@ -111,6 +109,9 @@ char *bigcrypt(const char *key, const char *salt)
#endif
if (tmp_ptr == NULL) {
free(dec_c2_cryptbuf);
+#ifdef HAVE_CRYPT_R
+ free(cdata);
+#endif
return NULL;
}
/* and place in the static area */
@@ -137,6 +138,9 @@ char *bigcrypt(const char *key, const char *salt)
if (tmp_ptr == NULL) {
_pam_overwrite(dec_c2_cryptbuf);
free(dec_c2_cryptbuf);
+#ifdef HAVE_CRYPT_R
+ free(cdata);
+#endif
return NULL;
}
diff --git a/modules/pam_unix/lckpwdf.-c b/modules/pam_unix/lckpwdf.-c
index 7145617e..c3e63155 100644
--- a/modules/pam_unix/lckpwdf.-c
+++ b/modules/pam_unix/lckpwdf.-c
@@ -73,17 +73,17 @@ static int lckpwdf(void)
lockfd = open(LOCKFILE, O_WRONLY);
if(lockfd == -1 && errno == ENOENT)
{
- security_context_t create_context;
+ char *create_context_raw;
int rc;
- if(getfilecon("/etc/passwd", &create_context))
+ if(getfilecon_raw("/etc/passwd", &create_context_raw))
return -1;
- rc = setfscreatecon(create_context);
- freecon(create_context);
+ rc = setfscreatecon_raw(create_context_raw);
+ freecon(create_context_raw);
if(rc)
return -1;
lockfd = open(LOCKFILE, O_CREAT | O_WRONLY, 0600);
- if(setfscreatecon(NULL))
+ if(setfscreatecon_raw(NULL))
return -1;
}
}
diff --git a/modules/pam_unix/md5.c b/modules/pam_unix/md5.c
index 9954536f..593d6dc3 100644
--- a/modules/pam_unix/md5.c
+++ b/modules/pam_unix/md5.c
@@ -52,10 +52,10 @@ static void byteReverse(uint8_aligned *buf, unsigned longs)
*/
void MD5Name(MD5Init)(struct MD5Context *ctx)
{
- ctx->buf[0] = 0x67452301U;
- ctx->buf[1] = 0xefcdab89U;
- ctx->buf[2] = 0x98badcfeU;
- ctx->buf[3] = 0x10325476U;
+ ctx->buf.i[0] = 0x67452301U;
+ ctx->buf.i[1] = 0xefcdab89U;
+ ctx->buf.i[2] = 0x98badcfeU;
+ ctx->buf.i[3] = 0x10325476U;
ctx->bits[0] = 0;
ctx->bits[1] = 0;
@@ -81,7 +81,7 @@ void MD5Name(MD5Update)(struct MD5Context *ctx, unsigned const char *buf, unsign
/* Handle any leading odd-sized chunks */
if (t) {
- unsigned char *p = (unsigned char *) ctx->in + t;
+ unsigned char *p = ctx->in.c + t;
t = 64 - t;
if (len < t) {
@@ -89,24 +89,24 @@ void MD5Name(MD5Update)(struct MD5Context *ctx, unsigned const char *buf, unsign
return;
}
memcpy(p, buf, t);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
buf += t;
len -= t;
}
/* Process data in 64-byte chunks */
while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ memcpy(ctx->in.c, buf, 64);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
buf += 64;
len -= 64;
}
/* Handle any remaining bytes of data. */
- memcpy(ctx->in, buf, len);
+ memcpy(ctx->in.c, buf, len);
}
/*
@@ -123,7 +123,7 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx)
/* Set the first char of padding to 0x80. This is safe since there is
always at least one byte free */
- p = ctx->in + count;
+ p = ctx->in.c + count;
*p++ = 0x80;
/* Bytes of padding needed to make 64 bytes */
@@ -133,23 +133,23 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx)
if (count < 8) {
/* Two lots of padding: Pad the first block to 64 bytes */
memset(p, 0, count);
- byteReverse(ctx->in, 16);
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
+ byteReverse(ctx->in.c, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
/* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
+ memset(ctx->in.c, 0, 56);
} else {
/* Pad block to 56 bytes */
memset(p, 0, count - 8);
}
- byteReverse(ctx->in, 14);
+ byteReverse(ctx->in.c, 14);
/* Append length in bits and transform */
- memcpy((uint32 *)ctx->in + 14, ctx->bits, 2*sizeof(uint32));
+ memcpy(ctx->in.i + 14, ctx->bits, 2*sizeof(uint32));
- MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in);
- byteReverse((unsigned char *) ctx->buf, 4);
- memcpy(digest, ctx->buf, 16);
+ MD5Name(MD5Transform)(ctx->buf.i, ctx->in.i);
+ byteReverse(ctx->buf.c, 4);
+ memcpy(digest, ctx->buf.c, 16);
memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */
}
diff --git a/modules/pam_unix/md5.h b/modules/pam_unix/md5.h
index d9186b7f..3dc54bd2 100644
--- a/modules/pam_unix/md5.h
+++ b/modules/pam_unix/md5.h
@@ -7,9 +7,15 @@
typedef unsigned int uint32;
struct MD5Context {
- uint32 buf[4];
+ union {
+ uint32 i[4];
+ unsigned char c[16] PAM_ATTRIBUTE_ALIGNED(4);
+ } buf;
uint32 bits[2];
- unsigned char in[64] PAM_ATTRIBUTE_ALIGNED(4);
+ union {
+ uint32 i[16];
+ unsigned char c[64] PAM_ATTRIBUTE_ALIGNED(4);
+ } in;
};
void GoodMD5Init(struct MD5Context *);
diff --git a/modules/pam_unix/pam_unix.8 b/modules/pam_unix/pam_unix.8
index b396b66c..d9cdea5a 100644
--- a/modules/pam_unix/pam_unix.8
+++ b/modules/pam_unix/pam_unix.8
@@ -2,12 +2,12 @@
.\" Title: pam_unix
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_UNIX" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_UNIX" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -126,7 +126,7 @@ This argument can be used to discourage the authentication component from reques
When password changing enforce the module to set the new password to the one provided by a previously stacked
\fBpassword\fR
module (this is used in the example of the stacking of the
-\fBpam_cracklib\fR
+\fBpam_passwdqc\fR
module documented below)\&.
.RE
.PP
@@ -264,8 +264,8 @@ auth required pam_unix\&.so
# Ensure users account and password are still active
account required pam_unix\&.so
# Change the user\*(Aqs password, but at first check the strength
-# with pam_cracklib(8)
-password required pam_cracklib\&.so retry=3 minlen=6 difok=3
+# with pam_passwdqc(8)
+password required pam_passwdqc\&.so config=/etc/passwdqc\&.conf
password required pam_unix\&.so use_authtok nullok yescrypt
session required pam_unix\&.so
diff --git a/modules/pam_unix/pam_unix.8.xml b/modules/pam_unix/pam_unix.8.xml
index fa02c3a6..9f9c8185 100644
--- a/modules/pam_unix/pam_unix.8.xml
+++ b/modules/pam_unix/pam_unix.8.xml
@@ -223,7 +223,7 @@
When password changing enforce the module to set the new
password to the one provided by a previously stacked
<option>password</option> module (this is used in the
- example of the stacking of the <command>pam_cracklib</command>
+ example of the stacking of the <command>pam_passwdqc</command>
module documented below).
</para>
</listitem>
@@ -465,8 +465,8 @@ auth required pam_unix.so
# Ensure users account and password are still active
account required pam_unix.so
# Change the user's password, but at first check the strength
-# with pam_cracklib(8)
-password required pam_cracklib.so retry=3 minlen=6 difok=3
+# with pam_passwdqc(8)
+password required pam_passwdqc.so config=/etc/passwdqc.conf
password required pam_unix.so use_authtok nullok yescrypt
session required pam_unix.so
</programlisting>
diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c
index de8d65c1..8f5ed3e0 100644
--- a/modules/pam_unix/pam_unix_acct.c
+++ b/modules/pam_unix/pam_unix_acct.c
@@ -189,7 +189,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv)
unsigned long long ctrl;
const void *void_uname;
const char *uname;
- int retval, daysleft;
+ int retval, daysleft = -1;
char buf[256];
D(("called."));
@@ -252,6 +252,10 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv)
_("Your account has expired; please contact your system administrator."));
break;
case PAM_AUTHTOK_ERR:
+ /*
+ * We ignore "password changed too early" error
+ * as it is relevant only for password change.
+ */
retval = PAM_SUCCESS;
/* fallthrough */
case PAM_SUCCESS:
diff --git a/modules/pam_unix/pam_unix_passwd.c b/modules/pam_unix/pam_unix_passwd.c
index e988b2e3..a20e919e 100644
--- a/modules/pam_unix/pam_unix_passwd.c
+++ b/modules/pam_unix/pam_unix_passwd.c
@@ -577,7 +577,7 @@ static int _pam_unix_approve_pass(pam_handle_t * pamh
}
}
- if (strlen(pass_new) > MAXPASS) {
+ if (strlen(pass_new) > PAM_MAX_RESP_SIZE) {
remark = _("You must choose a shorter password.");
D(("length exceeded [%s]", remark));
} else if (off(UNIX__IAMROOT, ctrl)) {
diff --git a/modules/pam_unix/passverify.c b/modules/pam_unix/passverify.c
index a571b4f7..f2474a5b 100644
--- a/modules/pam_unix/passverify.c
+++ b/modules/pam_unix/passverify.c
@@ -19,9 +19,7 @@
#include <sys/time.h>
#include <sys/stat.h>
#include <fcntl.h>
-#ifdef HAVE_LIBXCRYPT
-#include <xcrypt.h>
-#elif defined(HAVE_CRYPT_H)
+#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
@@ -243,12 +241,15 @@ PAMH_ARG_DECL(int get_account_info,
* ...and shadow password file entry for this user,
* if shadowing is enabled
*/
+ *spwdent = pam_modutil_getspnam(pamh, name);
+ if (*spwdent == NULL) {
#ifndef HELPER_COMPILE
- if (geteuid() || SELINUX_ENABLED)
+ /* still a chance the user can authenticate */
return PAM_UNIX_RUN_HELPER;
#endif
- *spwdent = pam_modutil_getspnam(pamh, name);
- if (*spwdent == NULL || (*spwdent)->sp_pwdp == NULL)
+ return PAM_AUTHINFO_UNAVAIL;
+ }
+ if ((*spwdent)->sp_pwdp == NULL)
return PAM_AUTHINFO_UNAVAIL;
}
} else {
@@ -289,13 +290,7 @@ PAMH_ARG_DECL(int check_shadow_expiry,
D(("account expired"));
return PAM_ACCT_EXPIRED;
}
-#if defined(CRYPT_CHECKSALT_AVAILABLE) && CRYPT_CHECKSALT_AVAILABLE
- if (spent->sp_lstchg == 0 ||
- crypt_checksalt(spent->sp_pwdp) == CRYPT_SALT_METHOD_LEGACY ||
- crypt_checksalt(spent->sp_pwdp) == CRYPT_SALT_TOO_CHEAP) {
-#else
if (spent->sp_lstchg == 0) {
-#endif
D(("need a new password"));
*daysleft = 0;
return PAM_NEW_AUTHTOK_REQD;
@@ -452,7 +447,7 @@ PAMH_ARG_DECL(char * create_password_hash,
algoid = "$6$";
} else { /* must be crypt/bigcrypt */
char tmppass[9];
- char *crypted;
+ char *hashed;
crypt_make_salt(salt, 2);
if (off(UNIX_BIGCRYPT, ctrl) && strlen(password) > 8) {
@@ -460,10 +455,10 @@ PAMH_ARG_DECL(char * create_password_hash,
tmppass[sizeof(tmppass)-1] = '\0';
password = tmppass;
}
- crypted = bigcrypt(password, salt);
+ hashed = bigcrypt(password, salt);
memset(tmppass, '\0', sizeof(tmppass));
password = NULL;
- return crypted;
+ return hashed;
}
#if defined(CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) && CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY
@@ -473,23 +468,11 @@ PAMH_ARG_DECL(char * create_password_hash,
*/
sp = crypt_gensalt_rn(algoid, rounds, NULL, 0, salt, sizeof(salt));
#else
-#ifdef HAVE_CRYPT_GENSALT_R
- if (on(UNIX_BLOWFISH_PASS, ctrl)) {
- char entropy[17];
- crypt_make_salt(entropy, sizeof(entropy) - 1);
- sp = crypt_gensalt_r (algoid, rounds,
- entropy, sizeof(entropy),
- salt, sizeof(salt));
- } else {
-#endif
- sp = stpcpy(salt, algoid);
- if (on(UNIX_ALGO_ROUNDS, ctrl)) {
- sp += snprintf(sp, sizeof(salt) - (16 + 1 + (sp - salt)), "rounds=%u$", rounds);
- }
- crypt_make_salt(sp, 16);
-#ifdef HAVE_CRYPT_GENSALT_R
+ sp = stpcpy(salt, algoid);
+ if (on(UNIX_ALGO_ROUNDS, ctrl)) {
+ sp += snprintf(sp, sizeof(salt) - (16 + 1 + (sp - salt)), "rounds=%u$", rounds);
}
-#endif
+ crypt_make_salt(sp, 16);
#endif /* CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY */
#ifdef HAVE_CRYPT_R
sp = NULL;
@@ -650,7 +633,7 @@ save_old_password(pam_handle_t *pamh, const char *forwho, const char *oldpass,
struct stat st;
size_t len = strlen(forwho);
#ifdef WITH_SELINUX
- security_context_t prev_context=NULL;
+ char *prev_context_raw = NULL;
#endif
if (howmany < 0) {
@@ -665,20 +648,20 @@ save_old_password(pam_handle_t *pamh, const char *forwho, const char *oldpass,
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- security_context_t passwd_context=NULL;
- if (getfilecon("/etc/passwd",&passwd_context)<0) {
+ char *passwd_context_raw = NULL;
+ if (getfilecon_raw("/etc/passwd",&passwd_context_raw)<0) {
return PAM_AUTHTOK_ERR;
};
- if (getfscreatecon(&prev_context)<0) {
- freecon(passwd_context);
+ if (getfscreatecon_raw(&prev_context_raw)<0) {
+ freecon(passwd_context_raw);
return PAM_AUTHTOK_ERR;
}
- if (setfscreatecon(passwd_context)) {
- freecon(passwd_context);
- freecon(prev_context);
+ if (setfscreatecon_raw(passwd_context_raw)) {
+ freecon(passwd_context_raw);
+ freecon(prev_context_raw);
return PAM_AUTHTOK_ERR;
}
- freecon(passwd_context);
+ freecon(passwd_context_raw);
}
#endif
pwfile = fopen(OPW_TMPFILE, "w");
@@ -796,12 +779,12 @@ done:
}
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- if (setfscreatecon(prev_context)) {
+ if (setfscreatecon_raw(prev_context_raw)) {
err = 1;
}
- if (prev_context)
- freecon(prev_context);
- prev_context=NULL;
+ if (prev_context_raw)
+ freecon(prev_context_raw);
+ prev_context_raw = NULL;
}
#endif
if (!err) {
@@ -821,26 +804,26 @@ PAMH_ARG_DECL(int unix_update_passwd,
int err = 1;
int oldmask;
#ifdef WITH_SELINUX
- security_context_t prev_context=NULL;
+ char *prev_context_raw = NULL;
#endif
oldmask = umask(077);
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- security_context_t passwd_context=NULL;
- if (getfilecon("/etc/passwd",&passwd_context)<0) {
+ char *passwd_context_raw = NULL;
+ if (getfilecon_raw("/etc/passwd",&passwd_context_raw)<0) {
return PAM_AUTHTOK_ERR;
};
- if (getfscreatecon(&prev_context)<0) {
- freecon(passwd_context);
+ if (getfscreatecon_raw(&prev_context_raw)<0) {
+ freecon(passwd_context_raw);
return PAM_AUTHTOK_ERR;
}
- if (setfscreatecon(passwd_context)) {
- freecon(passwd_context);
- freecon(prev_context);
+ if (setfscreatecon_raw(passwd_context_raw)) {
+ freecon(passwd_context_raw);
+ freecon(prev_context_raw);
return PAM_AUTHTOK_ERR;
}
- freecon(passwd_context);
+ freecon(passwd_context_raw);
}
#endif
pwfile = fopen(PW_TMPFILE, "w");
@@ -919,12 +902,12 @@ done:
}
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- if (setfscreatecon(prev_context)) {
+ if (setfscreatecon_raw(prev_context_raw)) {
err = 1;
}
- if (prev_context)
- freecon(prev_context);
- prev_context=NULL;
+ if (prev_context_raw)
+ freecon(prev_context_raw);
+ prev_context_raw = NULL;
}
#endif
if (!err) {
@@ -945,27 +928,27 @@ PAMH_ARG_DECL(int unix_update_shadow,
int oldmask;
int wroteentry = 0;
#ifdef WITH_SELINUX
- security_context_t prev_context=NULL;
+ char *prev_context_raw = NULL;
#endif
oldmask = umask(077);
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- security_context_t shadow_context=NULL;
- if (getfilecon("/etc/shadow",&shadow_context)<0) {
+ char *shadow_context_raw = NULL;
+ if (getfilecon_raw("/etc/shadow",&shadow_context_raw)<0) {
return PAM_AUTHTOK_ERR;
};
- if (getfscreatecon(&prev_context)<0) {
- freecon(shadow_context);
+ if (getfscreatecon_raw(&prev_context_raw)<0) {
+ freecon(shadow_context_raw);
return PAM_AUTHTOK_ERR;
}
- if (setfscreatecon(shadow_context)) {
- freecon(shadow_context);
- freecon(prev_context);
+ if (setfscreatecon_raw(shadow_context_raw)) {
+ freecon(shadow_context_raw);
+ freecon(prev_context_raw);
return PAM_AUTHTOK_ERR;
}
- freecon(shadow_context);
+ freecon(shadow_context_raw);
}
#endif
pwfile = fopen(SH_TMPFILE, "w");
@@ -1065,12 +1048,12 @@ PAMH_ARG_DECL(int unix_update_shadow,
#ifdef WITH_SELINUX
if (SELINUX_ENABLED) {
- if (setfscreatecon(prev_context)) {
+ if (setfscreatecon_raw(prev_context_raw)) {
err = 1;
}
- if (prev_context)
- freecon(prev_context);
- prev_context=NULL;
+ if (prev_context_raw)
+ freecon(prev_context_raw);
+ prev_context_raw = NULL;
}
#endif
@@ -1096,6 +1079,12 @@ helper_verify_password(const char *name, const char *p, int nullok)
if (pwd == NULL || hash == NULL) {
helper_log_err(LOG_NOTICE, "check pass; user unknown");
retval = PAM_USER_UNKNOWN;
+ } else if (p[0] == '\0' && nullok) {
+ if (hash[0] == '\0') {
+ retval = PAM_SUCCESS;
+ } else {
+ retval = PAM_AUTH_ERR;
+ }
} else {
retval = verify_pwd_hash(p, hash, nullok);
}
@@ -1111,6 +1100,7 @@ helper_verify_password(const char *name, const char *p, int nullok)
}
void
+PAM_FORMAT((printf, 2, 3))
helper_log_err(int err, const char *format, ...)
{
va_list args;
@@ -1180,49 +1170,6 @@ getuidname(uid_t uid)
return username;
}
-int
-read_passwords(int fd, int npass, char **passwords)
-{
- /* The passwords array must contain npass preallocated
- * buffers of length MAXPASS + 1
- */
- int rbytes = 0;
- int offset = 0;
- int i = 0;
- char *pptr;
- while (npass > 0) {
- rbytes = read(fd, passwords[i]+offset, MAXPASS+1-offset);
-
- if (rbytes < 0) {
- if (errno == EINTR) continue;
- break;
- }
- if (rbytes == 0)
- break;
-
- while (npass > 0 && (pptr=memchr(passwords[i]+offset, '\0', rbytes))
- != NULL) {
- rbytes -= pptr - (passwords[i]+offset) + 1;
- i++;
- offset = 0;
- npass--;
- if (rbytes > 0) {
- if (npass > 0)
- memcpy(passwords[i], pptr+1, rbytes);
- memset(pptr+1, '\0', rbytes);
- }
- }
- offset += rbytes;
- }
-
- /* clear up */
- if (offset > 0 && npass > 0) {
- memset(passwords[i], '\0', offset);
- }
-
- return i;
-}
-
#endif
/* ****************************************************************** *
* Copyright (c) Jan Rękorajski 1999.
diff --git a/modules/pam_unix/passverify.h b/modules/pam_unix/passverify.h
index e9a88fbf..c07037d2 100644
--- a/modules/pam_unix/passverify.h
+++ b/modules/pam_unix/passverify.h
@@ -8,8 +8,6 @@
#define PAM_UNIX_RUN_HELPER PAM_CRED_INSUFFICIENT
-#define MAXPASS PAM_MAX_RESP_SIZE /* the maximum length of a password */
-
#define OLD_PASSWORDS_FILE "/etc/security/opasswd"
int
@@ -50,8 +48,6 @@ setup_signals(void);
char *
getuidname(uid_t uid);
-int
-read_passwords(int fd, int npass, char **passwords);
#endif
#ifdef HELPER_COMPILE
diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
index 41db1f04..27ca7127 100644
--- a/modules/pam_unix/support.c
+++ b/modules/pam_unix/support.c
@@ -601,6 +601,9 @@ _unix_blankpasswd (pam_handle_t *pamh, unsigned long long ctrl, const char *name
char *salt = NULL;
int daysleft;
int retval;
+ int blank = 0;
+ int execloop;
+ int nonexistent_check = 1;
D(("called"));
@@ -624,32 +627,35 @@ _unix_blankpasswd (pam_handle_t *pamh, unsigned long long ctrl, const char *name
/* UNIX passwords area */
- retval = get_pwd_hash(pamh, name, &pwd, &salt);
-
- if (retval == PAM_UNIX_RUN_HELPER) {
- /* salt will not be set here so we can return immediately */
- if (_unix_run_helper_binary(pamh, NULL, ctrl, name) == PAM_SUCCESS)
- return 1;
- else
- return 0;
- }
+ /*
+ * Execute this loop twice: one checking the password hash of an existing
+ * user and another one for a non-existing user. This way the runtimes
+ * are equal, making it more difficult to differentiate existing from
+ * non-existing users.
+ */
+ for (execloop = 0; execloop < 2; ++execloop) {
+ retval = get_pwd_hash(pamh, name, &pwd, &salt);
- /* Does this user have a password? */
- if (salt == NULL) {
- retval = 0;
- } else {
- if (strlen(salt) == 0)
- retval = 1;
- else
- retval = 0;
+ if (retval == PAM_UNIX_RUN_HELPER) {
+ if (_unix_run_helper_binary(pamh, NULL, ctrl, name) == PAM_SUCCESS)
+ blank = nonexistent_check;
+ } else if (retval == PAM_USER_UNKNOWN) {
+ name = "root";
+ nonexistent_check = 0;
+ continue;
+ } else if (salt != NULL) {
+ if (strlen(salt) == 0)
+ blank = nonexistent_check;
+ }
+ name = "pam_unix_non_existent:";
+ /* non-existent user check will not affect the blank value */
}
/* tidy up */
-
if (salt)
_pam_delete(salt);
- return retval;
+ return blank;
}
int _unix_verify_password(pam_handle_t * pamh, const char *name
@@ -658,7 +664,7 @@ int _unix_verify_password(pam_handle_t * pamh, const char *name
struct passwd *pwd = NULL;
char *salt = NULL;
char *data_name;
- char pw[MAXPASS + 1];
+ char pw[PAM_MAX_RESP_SIZE + 1];
int retval;
@@ -685,7 +691,7 @@ int _unix_verify_password(pam_handle_t * pamh, const char *name
strcpy(data_name + sizeof(FAIL_PREFIX) - 1, name);
}
- if (p != NULL && strlen(p) > MAXPASS) {
+ if (p != NULL && strlen(p) > PAM_MAX_RESP_SIZE) {
memset(pw, 0, sizeof(pw));
p = strncpy(pw, p, sizeof(pw) - 1);
}
diff --git a/modules/pam_unix/unix_chkpwd.8 b/modules/pam_unix/unix_chkpwd.8
index e5d40ad3..93c95bd6 100644
--- a/modules/pam_unix/unix_chkpwd.8
+++ b/modules/pam_unix/unix_chkpwd.8
@@ -2,12 +2,12 @@
.\" Title: unix_chkpwd
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "UNIX_CHKPWD" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "UNIX_CHKPWD" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_unix/unix_chkpwd.c b/modules/pam_unix/unix_chkpwd.c
index 88647e58..3931bab2 100644
--- a/modules/pam_unix/unix_chkpwd.c
+++ b/modules/pam_unix/unix_chkpwd.c
@@ -33,6 +33,7 @@
#include <security/_pam_macros.h>
#include "passverify.h"
+#include "pam_inline.h"
static int _check_expiry(const char *uname)
{
@@ -89,7 +90,7 @@ static int _audit_log(int type, const char *uname, int rc)
int main(int argc, char *argv[])
{
- char pass[MAXPASS + 1];
+ char pass[PAM_MAX_RESP_SIZE + 1];
char *option;
int npass, nullok;
int blankpass = 0;
@@ -136,7 +137,7 @@ int main(int argc, char *argv[])
user = getuidname(getuid());
/* if the caller specifies the username, verify that user
matches it */
- if (strcmp(user, argv[1])) {
+ if (user == NULL || strcmp(user, argv[1])) {
user = argv[1];
/* no match -> permanently change to the real user and proceed */
if (setuid(getuid()) != 0)
@@ -162,7 +163,7 @@ int main(int argc, char *argv[])
}
/* read the password from stdin (a pipe from the pam_unix module) */
- npass = read_passwords(STDIN_FILENO, 1, passwords);
+ npass = pam_read_passwords(STDIN_FILENO, 1, passwords);
if (npass != 1) { /* is it a valid password? */
helper_log_err(LOG_DEBUG, "no password supplied");
@@ -175,7 +176,7 @@ int main(int argc, char *argv[])
retval = helper_verify_password(user, pass, nullok);
- memset(pass, '\0', MAXPASS); /* clear memory of the password */
+ memset(pass, '\0', PAM_MAX_RESP_SIZE); /* clear memory of the password */
/* return pass or fail */
diff --git a/modules/pam_unix/unix_update.8 b/modules/pam_unix/unix_update.8
index 4a7a3d1b..b1f5ac71 100644
--- a/modules/pam_unix/unix_update.8
+++ b/modules/pam_unix/unix_update.8
@@ -2,12 +2,12 @@
.\" Title: unix_update
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "UNIX_UPDATE" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "UNIX_UPDATE" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_unix/unix_update.c b/modules/pam_unix/unix_update.c
index 6ea7ea51..3559972b 100644
--- a/modules/pam_unix/unix_update.c
+++ b/modules/pam_unix/unix_update.c
@@ -32,14 +32,15 @@
#include <security/_pam_macros.h>
#include "passverify.h"
+#include "pam_inline.h"
static int
set_password(const char *forwho, const char *shadow, const char *remember)
{
struct passwd *pwd = NULL;
int retval;
- char pass[MAXPASS + 1];
- char towhat[MAXPASS + 1];
+ char pass[PAM_MAX_RESP_SIZE + 1];
+ char towhat[PAM_MAX_RESP_SIZE + 1];
int npass = 0;
/* we don't care about number format errors because the helper
should be called internally only */
@@ -49,12 +50,12 @@ set_password(const char *forwho, const char *shadow, const char *remember)
/* read the password from stdin (a pipe from the pam_unix module) */
- npass = read_passwords(STDIN_FILENO, 2, passwords);
+ npass = pam_read_passwords(STDIN_FILENO, 2, passwords);
if (npass != 2) { /* is it a valid password? */
if (npass == 1) {
helper_log_err(LOG_DEBUG, "no new password supplied");
- memset(pass, '\0', MAXPASS);
+ memset(pass, '\0', PAM_MAX_RESP_SIZE);
} else {
helper_log_err(LOG_DEBUG, "no valid passwords supplied");
}
@@ -97,8 +98,8 @@ set_password(const char *forwho, const char *shadow, const char *remember)
}
done:
- memset(pass, '\0', MAXPASS);
- memset(towhat, '\0', MAXPASS);
+ memset(pass, '\0', PAM_MAX_RESP_SIZE);
+ memset(towhat, '\0', PAM_MAX_RESP_SIZE);
unlock_pwdf();
diff --git a/modules/pam_userdb/Makefile.in b/modules/pam_userdb/Makefile.in
index 6473b138..6eb785f0 100644
--- a/modules/pam_userdb/Makefile.in
+++ b/modules/pam_userdb/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_userdb
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -376,6 +379,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -420,6 +424,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -433,6 +440,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -452,7 +461,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -499,8 +507,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -511,6 +517,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -560,7 +567,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -568,9 +574,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -580,6 +583,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -917,7 +921,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_userdb/README b/modules/pam_userdb/README
index 1765591b..9d931bb5 100644
--- a/modules/pam_userdb/README
+++ b/modules/pam_userdb/README
@@ -25,7 +25,8 @@ db=/path/database
debug
- Print debug information.
+ Print debug information. Note that password hashes, both from db and
+ computed, will be printed to syslog.
dump
diff --git a/modules/pam_userdb/pam_userdb.8 b/modules/pam_userdb/pam_userdb.8
index 40bd2006..fc002787 100644
--- a/modules/pam_userdb/pam_userdb.8
+++ b/modules/pam_userdb/pam_userdb.8
@@ -2,12 +2,12 @@
.\" Title: pam_userdb
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_USERDB" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_USERDB" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -60,7 +60,7 @@ suffix\&.
.PP
\fBdebug\fR
.RS 4
-Print debug information\&.
+Print debug information\&. Note that password hashes, both from db and computed, will be printed to syslog\&.
.RE
.PP
\fBdump\fR
diff --git a/modules/pam_userdb/pam_userdb.8.xml b/modules/pam_userdb/pam_userdb.8.xml
index fa628ada..bce92850 100644
--- a/modules/pam_userdb/pam_userdb.8.xml
+++ b/modules/pam_userdb/pam_userdb.8.xml
@@ -100,7 +100,8 @@
</term>
<listitem>
<para>
- Print debug information.
+ Print debug information. Note that password hashes, both from db
+ and computed, will be printed to syslog.
</para>
</listitem>
</varlistentry>
diff --git a/modules/pam_userdb/pam_userdb.c b/modules/pam_userdb/pam_userdb.c
index a46cd276..f467ea4c 100644
--- a/modules/pam_userdb/pam_userdb.c
+++ b/modules/pam_userdb/pam_userdb.c
@@ -17,9 +17,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
-#ifdef HAVE_LIBXCRYPT
-#include <xcrypt.h>
-#elif defined(HAVE_CRYPT_H)
+#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
@@ -133,7 +131,7 @@ _pam_parse (pam_handle_t *pamh, int argc, const char **argv,
/*
- * Looks up an user name in a database and checks the password
+ * Looks up a user name in a database and checks the password
*
* return values:
* 1 = User not found
@@ -194,7 +192,7 @@ user_lookup (pam_handle_t *pamh, const char *database, const char *cryptmode,
}
if (data.dptr != NULL) {
- int compare = 0;
+ int compare = -2;
if (ctrl & PAM_KEY_ONLY_ARG)
{
@@ -209,36 +207,48 @@ user_lookup (pam_handle_t *pamh, const char *database, const char *cryptmode,
char *cryptpw = NULL;
if (data.dsize < 13) {
- compare = -2;
+ /* hash is too short */
+ pam_syslog(pamh, LOG_INFO, "password hash in database is too short");
} else if (ctrl & PAM_ICASE_ARG) {
- compare = -2;
+ pam_syslog(pamh, LOG_INFO,
+ "case-insensitive comparison only works with plaintext passwords");
} else {
+ /* libdb is not guaranteed to produce null terminated strings */
+ char *pwhash = strndup(data.dptr, data.dsize);
+
+ if (pwhash == NULL) {
+ pam_syslog(pamh, LOG_CRIT, "strndup failed: data.dptr");
+ } else {
#ifdef HAVE_CRYPT_R
- struct crypt_data *cdata = NULL;
- cdata = malloc(sizeof(*cdata));
- if (cdata != NULL) {
- cdata->initialized = 0;
- cryptpw = crypt_r(pass, data.dptr, cdata);
- }
+ struct crypt_data *cdata = NULL;
+ cdata = malloc(sizeof(*cdata));
+ if (cdata == NULL) {
+ pam_syslog(pamh, LOG_CRIT, "malloc failed: struct crypt_data");
+ } else {
+ cdata->initialized = 0;
+ cryptpw = crypt_r(pass, pwhash, cdata);
+ }
#else
- cryptpw = crypt (pass, data.dptr);
+ cryptpw = crypt (pass, pwhash);
#endif
- if (cryptpw && strlen(cryptpw) == (size_t)data.dsize) {
- compare = memcmp(data.dptr, cryptpw, data.dsize);
- } else {
- compare = -2;
- if (ctrl & PAM_DEBUG_ARG) {
- if (cryptpw)
- pam_syslog(pamh, LOG_INFO, "lengths of computed and stored hashes differ");
- else
- pam_syslog(pamh, LOG_INFO, "crypt() returned NULL");
+ if (cryptpw && strlen(cryptpw) == (size_t)data.dsize) {
+ compare = memcmp(data.dptr, cryptpw, data.dsize);
+ } else {
+ if (ctrl & PAM_DEBUG_ARG) {
+ if (cryptpw) {
+ pam_syslog(pamh, LOG_INFO, "lengths of computed and stored hashes differ");
+ pam_syslog(pamh, LOG_INFO, "computed hash: %s", cryptpw);
+ } else {
+ pam_syslog(pamh, LOG_ERR, "crypt() returned NULL");
+ }
+ }
}
- }
#ifdef HAVE_CRYPT_R
- free(cdata);
+ free(cdata);
#endif
+ }
+ free(pwhash);
}
-
} else {
/* Unknown password encryption method -
diff --git a/modules/pam_usertype/Makefile.in b/modules/pam_usertype/Makefile.in
index 125235b4..4118a622 100644
--- a/modules/pam_usertype/Makefile.in
+++ b/modules/pam_usertype/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_usertype
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -374,6 +377,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -418,6 +422,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -431,6 +438,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -450,7 +459,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -497,8 +505,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -509,6 +515,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -558,7 +565,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -566,9 +572,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -578,6 +581,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -913,7 +917,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_usertype/pam_usertype.8 b/modules/pam_usertype/pam_usertype.8
index 16a18080..2f021013 100644
--- a/modules/pam_usertype/pam_usertype.8
+++ b/modules/pam_usertype/pam_usertype.8
@@ -2,12 +2,12 @@
.\" Title: pam_usertype
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM
.\" Source: Linux-PAM
.\" Language: English
.\"
-.TH "PAM_USERTYPE" "8" "06/08/2020" "Linux-PAM" "Linux\-PAM"
+.TH "PAM_USERTYPE" "8" "09/03/2021" "Linux-PAM" "Linux\-PAM"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_usertype/pam_usertype.c b/modules/pam_usertype/pam_usertype.c
index 2807c306..d03b73b5 100644
--- a/modules/pam_usertype/pam_usertype.c
+++ b/modules/pam_usertype/pam_usertype.c
@@ -139,8 +139,11 @@ pam_usertype_get_uid(struct pam_usertype_opts *opts,
"error retrieving information about user %s", username);
}
+ pam_modutil_getpwnam(pamh, "root");
+
return PAM_USER_UNKNOWN;
}
+ pam_modutil_getpwnam(pamh, "pam_usertype_non_existent:");
*_uid = pwd->pw_uid;
diff --git a/modules/pam_warn/Makefile.in b/modules/pam_warn/Makefile.in
index b3118f88..a1f192f9 100644
--- a/modules/pam_warn/Makefile.in
+++ b/modules/pam_warn/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -97,18 +97,21 @@ host_triplet = @host@
check_PROGRAMS = tst-pam_warn-retval$(EXEEXT)
subdir = modules/pam_warn
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -378,6 +381,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -422,6 +426,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -435,6 +442,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -454,7 +463,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -501,8 +509,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -513,6 +519,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -562,7 +569,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -570,9 +576,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -582,6 +585,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -932,7 +936,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_warn/pam_warn.8 b/modules/pam_warn/pam_warn.8
index c2e2b15a..2b990faa 100644
--- a/modules/pam_warn/pam_warn.8
+++ b/modules/pam_warn/pam_warn.8
@@ -2,12 +2,12 @@
.\" Title: pam_warn
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_WARN" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_WARN" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_wheel/Makefile.in b/modules/pam_wheel/Makefile.in
index 6059555c..fedf07ad 100644
--- a/modules/pam_wheel/Makefile.in
+++ b/modules/pam_wheel/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_wheel
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_wheel/README b/modules/pam_wheel/README
index bcb2d297..5dae4b61 100644
--- a/modules/pam_wheel/README
+++ b/modules/pam_wheel/README
@@ -41,9 +41,9 @@ trust
use_uid
- The check for wheel membership will be done against the current uid instead
- of the original one (useful when jumping with su from one account to
- another for example).
+ The check will be done against the real uid of the calling process, instead
+ of trying to obtain the user from the login session associated with the
+ terminal in use.
EXAMPLES
diff --git a/modules/pam_wheel/pam_wheel.8 b/modules/pam_wheel/pam_wheel.8
index 5aa4f148..648046e6 100644
--- a/modules/pam_wheel/pam_wheel.8
+++ b/modules/pam_wheel/pam_wheel.8
@@ -2,12 +2,12 @@
.\" Title: pam_wheel
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_WHEEL" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_WHEEL" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -75,7 +75,7 @@ The pam_wheel module will return PAM_SUCCESS instead of PAM_IGNORE if the user i
.PP
\fBuse_uid\fR
.RS 4
-The check for wheel membership will be done against the current uid instead of the original one (useful when jumping with su from one account to another for example)\&.
+The check will be done against the real uid of the calling process, instead of trying to obtain the user from the login session associated with the terminal in use\&.
.RE
.SH "MODULE TYPES PROVIDED"
.PP
diff --git a/modules/pam_wheel/pam_wheel.8.xml b/modules/pam_wheel/pam_wheel.8.xml
index b32f5e2b..ee8c7d26 100644
--- a/modules/pam_wheel/pam_wheel.8.xml
+++ b/modules/pam_wheel/pam_wheel.8.xml
@@ -122,9 +122,9 @@
</term>
<listitem>
<para>
- The check for wheel membership will be done against
- the current uid instead of the original one (useful when
- jumping with su from one account to another for example).
+ The check will be done against the real uid of the calling process,
+ instead of trying to obtain the user from the login session
+ associated with the terminal in use.
</para>
</listitem>
</varlistentry>
diff --git a/modules/pam_wheel/pam_wheel.c b/modules/pam_wheel/pam_wheel.c
index a025ebaf..179f56b3 100644
--- a/modules/pam_wheel/pam_wheel.c
+++ b/modules/pam_wheel/pam_wheel.c
@@ -44,17 +44,6 @@
#include <security/pam_ext.h>
#include "pam_inline.h"
-/* checks if a user is on a list of members of the GID 0 group */
-static int is_on_list(char * const *list, const char *member)
-{
- while (list && *list) {
- if (strcmp(*list, member) == 0)
- return 1;
- list++;
- }
- return 0;
-}
-
/* argument parsing */
#define PAM_DEBUG_ARG 0x0001
@@ -130,25 +119,37 @@ perform_check (pam_handle_t *pamh, int ctrl, const char *use_group)
}
if (ctrl & PAM_USE_UID_ARG) {
- tpwd = pam_modutil_getpwuid (pamh, getuid());
- if (!tpwd) {
- if (ctrl & PAM_DEBUG_ARG) {
+ tpwd = pam_modutil_getpwuid (pamh, getuid());
+ if (tpwd == NULL) {
+ if (ctrl & PAM_DEBUG_ARG) {
pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
- }
- return PAM_SERVICE_ERR;
- }
- fromsu = tpwd->pw_name;
+ }
+ return PAM_SERVICE_ERR;
+ }
+ fromsu = tpwd->pw_name;
} else {
- fromsu = pam_modutil_getlogin(pamh);
- if (fromsu) {
- tpwd = pam_modutil_getpwnam (pamh, fromsu);
- }
- if (!fromsu || !tpwd) {
- if (ctrl & PAM_DEBUG_ARG) {
- pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
- }
- return PAM_SERVICE_ERR;
- }
+ fromsu = pam_modutil_getlogin(pamh);
+
+ /* if getlogin fails try a fallback to PAM_RUSER */
+ if (fromsu == NULL) {
+ const char *rhostname;
+
+ retval = pam_get_item(pamh, PAM_RHOST, (const void **)&rhostname);
+ if (retval != PAM_SUCCESS || rhostname == NULL) {
+ retval = pam_get_item(pamh, PAM_RUSER, (const void **)&fromsu);
+ }
+ }
+
+ if (fromsu != NULL) {
+ tpwd = pam_modutil_getpwnam (pamh, fromsu);
+ }
+
+ if (fromsu == NULL || tpwd == NULL) {
+ if (ctrl & PAM_DEBUG_ARG) {
+ pam_syslog(pamh, LOG_NOTICE, "who is running me ?!");
+ }
+ return PAM_SERVICE_ERR;
+ }
}
/*
@@ -163,7 +164,7 @@ perform_check (pam_handle_t *pamh, int ctrl, const char *use_group)
grp = pam_modutil_getgrnam (pamh, use_group);
}
- if (!grp || (!grp->gr_mem && (tpwd->pw_gid != grp->gr_gid))) {
+ if (grp == NULL) {
if (ctrl & PAM_DEBUG_ARG) {
if (!use_group[0]) {
pam_syslog(pamh, LOG_NOTICE, "no members in a GID 0 group");
@@ -188,7 +189,7 @@ perform_check (pam_handle_t *pamh, int ctrl, const char *use_group)
* user has the "wheel" (sic) group as its primary group.
*/
- if (is_on_list(grp->gr_mem, fromsu) || (tpwd->pw_gid == grp->gr_gid)) {
+ if (pam_modutil_user_in_group_uid_gid(pamh, tpwd->pw_uid, grp->gr_gid)) {
if (ctrl & PAM_DENY_ARG) {
retval = PAM_PERM_DENIED;
diff --git a/modules/pam_xauth/Makefile.in b/modules/pam_xauth/Makefile.in
index 7025c400..4838634b 100644
--- a/modules/pam_xauth/Makefile.in
+++ b/modules/pam_xauth/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -96,18 +96,21 @@ host_triplet = @host@
@HAVE_VERSIONING_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/../modules.map
subdir = modules/pam_xauth
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_check_SCRIPTS) \
@@ -373,6 +376,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -417,6 +421,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -430,6 +437,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -449,7 +458,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -496,8 +504,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -508,6 +514,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -557,7 +564,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -565,9 +571,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -577,6 +580,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -912,7 +916,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/modules/pam_xauth/pam_xauth.8 b/modules/pam_xauth/pam_xauth.8
index 9521f0cf..90177fbc 100644
--- a/modules/pam_xauth/pam_xauth.8
+++ b/modules/pam_xauth/pam_xauth.8
@@ -2,12 +2,12 @@
.\" Title: pam_xauth
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\" Date: 06/08/2020
+.\" Date: 09/03/2021
.\" Manual: Linux-PAM Manual
.\" Source: Linux-PAM Manual
.\" Language: English
.\"
-.TH "PAM_XAUTH" "8" "06/08/2020" "Linux-PAM Manual" "Linux\-PAM Manual"
+.TH "PAM_XAUTH" "8" "09/03/2021" "Linux-PAM Manual" "Linux\-PAM Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/modules/pam_xauth/pam_xauth.c b/modules/pam_xauth/pam_xauth.c
index ae731211..03f8dc78 100644
--- a/modules/pam_xauth/pam_xauth.c
+++ b/modules/pam_xauth/pam_xauth.c
@@ -532,7 +532,7 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED,
xauth, "-f", cookiefile, "nlist", display,
NULL) == 0) {
#ifdef WITH_SELINUX
- security_context_t context = NULL;
+ char *context_raw = NULL;
#endif
PAM_MODUTIL_DEF_PRIVS(privs);
@@ -626,16 +626,16 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED,
if (is_selinux_enabled() > 0) {
struct selabel_handle *ctx = selabel_open(SELABEL_CTX_FILE, NULL, 0);
if (ctx != NULL) {
- if (selabel_lookup(ctx, &context,
- xauthority + sizeof(XAUTHENV), S_IFREG) != 0) {
+ if (selabel_lookup_raw(ctx, &context_raw,
+ xauthority + sizeof(XAUTHENV), S_IFREG) != 0) {
pam_syslog(pamh, LOG_WARNING,
"could not get SELinux label for '%s'",
xauthority + sizeof(XAUTHENV));
}
selabel_close(ctx);
- if (setfscreatecon(context)) {
+ if (setfscreatecon_raw(context_raw)) {
pam_syslog(pamh, LOG_WARNING,
- "setfscreatecon(%s) failed: %m", context);
+ "setfscreatecon_raw(%s) failed: %m", context_raw);
}
}
}
@@ -646,9 +646,9 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED,
"error creating temporary file `%s': %m",
xauthority + sizeof(XAUTHENV));
#ifdef WITH_SELINUX
- if (context != NULL) {
- free(context);
- setfscreatecon(NULL);
+ if (context_raw != NULL) {
+ free(context_raw);
+ setfscreatecon_raw(NULL);
}
#endif /* WITH_SELINUX */
if (fd >= 0)
diff --git a/po/Linux-PAM.pot b/po/Linux-PAM.pot
index 14873926..5e92d7e9 100644
--- a/po/Linux-PAM.pot
+++ b/po/Linux-PAM.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Linux-PAM 1.4.0\n"
+"Project-Id-Version: Linux-PAM 1.5.2\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,21 +18,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -212,96 +199,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -353,7 +299,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -394,22 +340,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -444,12 +390,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -469,62 +415,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -544,7 +435,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -552,7 +443,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -561,6 +452,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr ""
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f96264b9..cd057f1f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,100 +1,95 @@
-./libpamc/pamc_client.c
-./libpamc/pamc_converse.c
-./libpamc/pamc_load.c
-./libpam_misc/help_env.c
-./libpam_misc/misc_conv.c
-./libpam/pam_account.c
-./libpam/pam_audit.c
-./libpam/pam_auth.c
-./libpam/pam_data.c
-./libpam/pam_delay.c
-./libpam/pam_dispatch.c
-./libpam/pam_dynamic.c
-./libpam/pam_end.c
-./libpam/pam_env.c
-./libpam/pam_get_authtok.c
-./libpam/pam_handlers.c
-./libpam/pam_item.c
-./libpam/pam_misc.c
-./libpam/pam_modutil_cleanup.c
-./libpam/pam_modutil_getgrgid.c
-./libpam/pam_modutil_getgrnam.c
-./libpam/pam_modutil_getlogin.c
-./libpam/pam_modutil_getpwnam.c
-./libpam/pam_modutil_getpwuid.c
-./libpam/pam_modutil_getspnam.c
-./libpam/pam_modutil_ingroup.c
-./libpam/pam_modutil_ioloop.c
-./libpam/pam_password.c
-./libpam/pam_prelude.c
-./libpam/pam_session.c
-./libpam/pam_start.c
-./libpam/pam_strerror.c
-./libpam/pam_syslog.c
-./libpam/pam_vprompt.c
-./modules/pam_access/pam_access.c
-./modules/pam_cracklib/pam_cracklib.c
-./modules/pam_debug/pam_debug.c
-./modules/pam_deny/pam_deny.c
-./modules/pam_echo/pam_echo.c
-./modules/pam_env/pam_env.c
-./modules/pam_exec/pam_exec.c
-./modules/pam_faildelay/pam_faildelay.c
-./modules/pam_faillock/main.c
-./modules/pam_faillock/pam_faillock.c
-./modules/pam_filter/pam_filter.c
-./modules/pam_filter/upperLOWER/upperLOWER.c
-./modules/pam_ftp/pam_ftp.c
-./modules/pam_group/pam_group.c
-./modules/pam_issue/pam_issue.c
-./modules/pam_keyinit/pam_keyinit.c
-./modules/pam_lastlog/pam_lastlog.c
-./modules/pam_limits/pam_limits.c
-./modules/pam_listfile/pam_listfile.c
-./modules/pam_localuser/pam_localuser.c
-./modules/pam_loginuid/pam_loginuid.c
-./modules/pam_mail/pam_mail.c
-./modules/pam_mkhomedir/pam_mkhomedir.c
-./modules/pam_motd/pam_motd.c
-./modules/pam_namespace/md5.c
-./modules/pam_namespace/pam_namespace.c
-./modules/pam_nologin/pam_nologin.c
-./modules/pam_permit/pam_permit.c
-./modules/pam_pwhistory/opasswd.c
-./modules/pam_pwhistory/pam_pwhistory.c
-./modules/pam_rhosts/pam_rhosts.c
-./modules/pam_rootok/pam_rootok.c
-./modules/pam_securetty/pam_securetty.c
-./modules/pam_selinux/pam_selinux.c
-./modules/pam_selinux/pam_selinux_check.c
-./modules/pam_sepermit/pam_sepermit.c
-./modules/pam_shells/pam_shells.c
-./modules/pam_stress/pam_stress.c
-./modules/pam_succeed_if/pam_succeed_if.c
-./modules/pam_tally/pam_tally_app.c
-./modules/pam_tally/pam_tally.c
-./modules/pam_tally2/pam_tally2_app.c
-./modules/pam_tally2/pam_tally2.c
-./modules/pam_time/pam_time.c
-./modules/pam_timestamp/pam_timestamp.c
-./modules/pam_timestamp/pam_timestamp_check.c
-./modules/pam_tty_audit/pam_tty_audit.c
-./modules/pam_umask/pam_umask.c
-./modules/pam_unix/bigcrypt.c
-./modules/pam_unix/bigcrypt_main.c
-./modules/pam_unix/md5_broken.c
-./modules/pam_unix/md5.c
-./modules/pam_unix/md5_crypt.c
-./modules/pam_unix/md5_good.c
-./modules/pam_unix/pam_unix_acct.c
-./modules/pam_unix/pam_unix_auth.c
-./modules/pam_unix/pam_unix_passwd.c
-./modules/pam_unix/pam_unix_sess.c
-./modules/pam_unix/passverify.c
-./modules/pam_unix/support.c
-./modules/pam_unix/unix_chkpwd.c
-./modules/pam_unix/yppasswd_xdr.c
-./modules/pam_userdb/pam_userdb.c
-./modules/pam_warn/pam_warn.c
-./modules/pam_wheel/pam_wheel.c
-./modules/pam_xauth/pam_xauth.c
+libpam/pam_account.c
+libpam/pam_audit.c
+libpam/pam_auth.c
+libpam/pam_data.c
+libpam/pam_delay.c
+libpam/pam_dispatch.c
+libpam/pam_dynamic.c
+libpam/pam_end.c
+libpam/pam_env.c
+libpam/pam_get_authtok.c
+libpam/pam_handlers.c
+libpam/pam_item.c
+libpam/pam_misc.c
+libpam/pam_modutil_cleanup.c
+libpam/pam_modutil_getgrgid.c
+libpam/pam_modutil_getgrnam.c
+libpam/pam_modutil_getlogin.c
+libpam/pam_modutil_getpwnam.c
+libpam/pam_modutil_getpwuid.c
+libpam/pam_modutil_getspnam.c
+libpam/pam_modutil_ingroup.c
+libpam/pam_modutil_ioloop.c
+libpam/pam_password.c
+libpam/pam_prelude.c
+libpam/pam_session.c
+libpam/pam_start.c
+libpam/pam_strerror.c
+libpam/pam_syslog.c
+libpam/pam_vprompt.c
+libpam_misc/help_env.c
+libpam_misc/misc_conv.c
+libpamc/pamc_client.c
+libpamc/pamc_converse.c
+libpamc/pamc_load.c
+modules/pam_access/pam_access.c
+modules/pam_debug/pam_debug.c
+modules/pam_deny/pam_deny.c
+modules/pam_echo/pam_echo.c
+modules/pam_env/pam_env.c
+modules/pam_exec/pam_exec.c
+modules/pam_faildelay/pam_faildelay.c
+modules/pam_faillock/main.c
+modules/pam_faillock/pam_faillock.c
+modules/pam_filter/pam_filter.c
+modules/pam_filter/upperLOWER/upperLOWER.c
+modules/pam_ftp/pam_ftp.c
+modules/pam_group/pam_group.c
+modules/pam_issue/pam_issue.c
+modules/pam_keyinit/pam_keyinit.c
+modules/pam_lastlog/pam_lastlog.c
+modules/pam_limits/pam_limits.c
+modules/pam_listfile/pam_listfile.c
+modules/pam_localuser/pam_localuser.c
+modules/pam_loginuid/pam_loginuid.c
+modules/pam_mail/pam_mail.c
+modules/pam_mkhomedir/pam_mkhomedir.c
+modules/pam_motd/pam_motd.c
+modules/pam_namespace/md5.c
+modules/pam_namespace/pam_namespace.c
+modules/pam_nologin/pam_nologin.c
+modules/pam_permit/pam_permit.c
+modules/pam_pwhistory/opasswd.c
+modules/pam_pwhistory/pam_pwhistory.c
+modules/pam_rhosts/pam_rhosts.c
+modules/pam_rootok/pam_rootok.c
+modules/pam_securetty/pam_securetty.c
+modules/pam_selinux/pam_selinux.c
+modules/pam_selinux/pam_selinux_check.c
+modules/pam_sepermit/pam_sepermit.c
+modules/pam_shells/pam_shells.c
+modules/pam_stress/pam_stress.c
+modules/pam_succeed_if/pam_succeed_if.c
+modules/pam_time/pam_time.c
+modules/pam_timestamp/pam_timestamp.c
+modules/pam_timestamp/pam_timestamp_check.c
+modules/pam_tty_audit/pam_tty_audit.c
+modules/pam_umask/pam_umask.c
+modules/pam_unix/bigcrypt.c
+modules/pam_unix/bigcrypt_main.c
+modules/pam_unix/md5.c
+modules/pam_unix/md5_broken.c
+modules/pam_unix/md5_crypt.c
+modules/pam_unix/md5_good.c
+modules/pam_unix/pam_unix_acct.c
+modules/pam_unix/pam_unix_auth.c
+modules/pam_unix/pam_unix_passwd.c
+modules/pam_unix/pam_unix_sess.c
+modules/pam_unix/passverify.c
+modules/pam_unix/support.c
+modules/pam_unix/unix_chkpwd.c
+modules/pam_unix/yppasswd_xdr.c
+modules/pam_userdb/pam_userdb.c
+modules/pam_warn/pam_warn.c
+modules/pam_wheel/pam_wheel.c
+modules/pam_xauth/pam_xauth.c
diff --git a/po/af.po b/po/af.po
index e25f3eca..e5dd8f52 100644
--- a/po/af.po
+++ b/po/af.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans (http://www.transifex.com/projects/p/fedora/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/am.po b/po/am.po
index b52f0e28..d995af71 100644
--- a/po/am.po
+++ b/po/am.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Amharic (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/ar.gmo b/po/ar.gmo
index 1ed32a92..e7523c79 100644
--- a/po/ar.gmo
+++ b/po/ar.gmo
Binary files differ
diff --git a/po/ar.po b/po/ar.po
index 0846f43d..01238ceb 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -4,37 +4,26 @@
#
# Translators:
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Yaron Shahrabani <sh.yaron@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2011-11-30 06:57-0500\n"
-"Last-Translator: Tomáš Mráz <tmraz@fedoraproject.org>\n"
-"Language-Team: Arabic <trans-ar@lists.fedoraproject.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-07-05 10:55+0000\n"
+"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
+"Language-Team: Arabic <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/ar/>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
-"X-Generator: Zanata 3.8.3\n"
+"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
+"X-Generator: Weblate 4.1.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...الوقت ينÙد...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...عذرًا، انتهى الوقت!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "محادثة خاطئة (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "كلمة السر: "
@@ -216,99 +205,60 @@ msgstr "يحتاج التطبيق إلى استدعاء libpam مرة أخرى"
msgid "Unknown PAM error"
msgstr "خطأ PAM غير معروÙ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "لا يوجد اختلا٠عن كلمة السر القديمة"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "كلمة سر يمكن قراءتها من الجهتين"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "لم يتم سوى تغيير حالة الأحرÙ"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "كلمة السر الجديدة شديدة الشبه بكلمة السر القديمة"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "كلمة السر شديدة البساطة"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "كلمة مرور ملتÙØ©"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "لم يتم إدخال كلمة السر"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...الوقت ينÙد...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "تعذر تغيير كلمة السر الخاصة بـ NIS."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...عذرًا، انتهى الوقت!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "كلمة سر سيئة: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "محادثة خاطئة (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -364,7 +314,7 @@ msgstr[5] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "مرات تسجيل دخول كثيرة جدًا لـ '%s'."
@@ -406,22 +356,22 @@ msgstr "لديك بريد قديم ÙÙŠ مجلد %s."
msgid "You have mail in folder %s."
msgstr "لديك بريد ÙÙŠ مجلد %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "كلمة السر التي تم إدخالها مستخدمة بالÙعل. اختر كلمة سر أخرى."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "كلمة السر التي تم إدخالها مستخدمة بالÙعل. اختر كلمة سر أخرى."
@@ -458,12 +408,12 @@ msgstr "لا يصلح كسياق أمان"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "تم تخصيص سياق الأمان %s"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "تم تخصيص سياق الأمان %s"
@@ -483,63 +433,7 @@ msgstr "Ùشل pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "تسجيل الدخول: Ùشل تشعيب: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "خطأ ÙÙŠ التصديق"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "خطأ ÙÙŠ الخدمة"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "مستخدم غير معروÙ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "خطأ غير معروÙ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: تم إعطاء رقم خطأ لـ --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: خيار غير معرو٠%s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: لا يمكن إعادة تعيين كاÙØ© المستخدمين إلى رقم غير الصÙر\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -562,7 +456,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "مطلوب منك تغيير كلمة السر على الÙور (كلمة السر قديمة جدًا)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -574,7 +468,7 @@ msgstr[4] ""
msgstr[5] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -583,6 +477,16 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr "تعذر تغيير كلمة السر الخاصة بـ NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "لم يتم إدخال كلمة السر"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "تعذر تغيير كلمة السر الخاصة بـ NIS."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "يجب عليك اختيار كلمة مرور أقصر."
@@ -601,3 +505,50 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "يجب الانتظار Ùترة أطول لتغيير كلمة السر"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "لا يوجد اختلا٠عن كلمة السر القديمة"
+
+#~ msgid "is a palindrome"
+#~ msgstr "كلمة سر يمكن قراءتها من الجهتين"
+
+#~ msgid "case changes only"
+#~ msgstr "لم يتم سوى تغيير حالة الأحرÙ"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "كلمة السر الجديدة شديدة الشبه بكلمة السر القديمة"
+
+#~ msgid "is too simple"
+#~ msgstr "كلمة السر شديدة البساطة"
+
+#~ msgid "is rotated"
+#~ msgstr "كلمة مرور ملتÙØ©"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "كلمة سر سيئة: %s"
+
+#~ msgid "Authentication error"
+#~ msgstr "خطأ ÙÙŠ التصديق"
+
+#~ msgid "Service error"
+#~ msgstr "خطأ ÙÙŠ الخدمة"
+
+#~ msgid "Unknown user"
+#~ msgstr "مستخدم غير معروÙ"
+
+#~ msgid "Unknown error"
+#~ msgstr "خطأ غير معروÙ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: تم إعطاء رقم خطأ لـ ‎--reset=‎\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: خيار غير معرو٠%s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: لا يمكن إعادة تعيين كاÙØ© المستخدمين إلى رقم غير الصÙر\n"
diff --git a/po/as.gmo b/po/as.gmo
index e42ca3f7..63eda1e8 100644
--- a/po/as.gmo
+++ b/po/as.gmo
Binary files differ
diff --git a/po/as.po b/po/as.po
index c119243c..cf2549d6 100644
--- a/po/as.po
+++ b/po/as.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-10 02:40-0400\n"
"Last-Translator: ngoswami <ngoswami@redhat.com>\n"
"Language-Team: Assamese (http://www.transifex.com/projects/p/fedora/language/"
@@ -23,21 +23,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...সময় পাৰ হৈ গৈছে...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...কà§à¦·à¦®à¦¾ কৰিব, আপোনাৰ বাবে সময় অনà§à¦¤ হ'ল!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ভà§à¦² সমà§à¦¬à¦¾à¦¦ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦:"
@@ -219,99 +206,56 @@ msgstr "অনà§à¦ªà§à§°à§Ÿà§‹à¦—ে আকৌ libpam ক মাতিব লà
msgid "Unknown PAM error"
msgstr "অজà§à¦žà¦¾à¦¤ PAM ভà§à¦²"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "পà§à§°à¦£à¦¿à¦Ÿà§‹à§° সৈতে à¦à¦•à§‡à¦‡"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "মেমৰি আবনà§à¦Ÿà¦¨ তà§à§°à§à¦Ÿà¦¿"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "à¦à¦Ÿà¦¾ অনà§à¦²à§‹à¦®â€Œ-বিলোম বাকà§à¦¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "অকল কেচ সলনি কৰা"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "পৰণিটোৰ সৈতে বহà§à¦¤ à¦à¦•à§‡à¦‡"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "বৰ সৰল"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "পকোৱা হৈছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "পৰà§à¦¯à¦¾à¦ªà§à¦¤ character classes নাই"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "à¦à¦Ÿà¦¾à§° পিছত à¦à¦Ÿà¦¾ বহà§à¦¤à§‹ à¦à¦•à§‡à¦‡ আখৰ আছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "অতি দীঘল à¦à¦•à§‡à¦§à§°à¦£à§° আখৰ কà§à§°à¦®à§° অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤ কৰে"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "কিবা ধৰনত বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾à§° নাম আছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "কোনো গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ দিয়া হোৱা নাই"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...সময় পাৰ হৈ গৈছে...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰিব পৰা নহয় ।"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...কà§à¦·à¦®à¦¾ কৰিব, আপোনাৰ বাবে সময় অনà§à¦¤ হ'ল!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "বেয়া গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ভà§à¦² সমà§à¦¬à¦¾à¦¦ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s বিফল: পà§à§°à¦¸à§à¦¥à¦¾à¦¨à§° কোড %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s বিফল: %d%s সঙà§à¦•à§‡à¦¤ ধৰা গ'ল"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s বিফল: অজà§à¦žà¦¾à¦¤ অৱসà§à¦¥à¦¾ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u বিফল পà§à§°à§±à§‡à¦¶à§° বাবে হিচাপ লক কৰা হৈছে"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -363,7 +307,7 @@ msgstr[1] "শেহতীয়া সফল পà§à§°à§±à§‡à¦¶à§° পিছত %d
msgid "There were %d failed login attempts since the last successful login."
msgstr "শেহতীয়া সফল পà§à§°à§±à§‡à¦¶à§° পিছত %d বিফল হোৱা পà§à§°à§±à§‡à¦¶à§° চেষà§à¦Ÿà¦¾ চলোৱা হৈছিল ।"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' ৰ বাবে বহà§à¦¤à§‹ পà§à§°à§±à§‡à¦¶ ।"
@@ -405,22 +349,22 @@ msgstr "%s ফোলডাৰত আপোনাৰ পà§à§°à¦£à¦¿ ডাক à¦
msgid "You have mail in folder %s."
msgstr "%s ফোলà§à¦¡à¦¾à§°à¦¤ আপোনাৰ ডাক আছে ।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' পঞà§à¦œà¦¿à¦•à¦¾ সৃষà§à¦Ÿà¦¿ কৰা হৈছে ।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "%s পঞà§à¦œà¦¿à¦•à¦¾ সৃষà§à¦Ÿà¦¿ আৰৠআৰমà§à¦­ কৰিব পৰা নাই ।"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ ইতিমধà§à¦¯à§‡ বà§à¦¯à§±à¦¹à§ƒà¦¤ । অনà§à¦¯ à¦à¦Ÿà¦¾ বাচি লওক ।"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "পাছৱাৰà§à¦¡ ইতিমধà§à¦¯à§‡ বà§à¦¯à§±à¦¹à¦¾à§° হৈছে।"
@@ -456,12 +400,12 @@ msgstr "à¦à¦Ÿà¦¾ বৈধ সà§à§°à¦•à§à¦·à¦¾à§° সনà§à¦¦à§°à§à¦­ নà¦
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "সà§à§°à¦•à§à¦·à¦¾à§° সনà§à¦¦à§°à§à¦­ %s নিযà§à¦•à§à¦¤ কৰা হ'ল"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "চাবি নিৰà§à¦®à¦¾à¦£à§° সনà§à¦¦à§°à§à¦­ %s নিযà§à¦•à§à¦¤ কৰা হ'ল"
@@ -481,66 +425,7 @@ msgstr "pam_set_item() কৰোà¦à¦¤à§‡ বিফল\n"
msgid "login: failure forking: %m"
msgstr "পà§à§°à§±à§‡à¦¶: forking ত বিফল: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "হিচাপ অসà§à¦¥à¦¾à§Ÿà§€à§°à§‚পে লক কৰা হৈছে (%ld ছেকেণà§à¦¡ আৰৠআছে)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "পà§à§°à¦®à¦¾à¦£à§€à¦•à§°à¦£à¦¤ ভà§à¦²"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "সেৱাৰ ভà§à¦²"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "অজà§à¦žà¦¾à¦¤ বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§‹à¦à¦¤à¦¾"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "অজà§à¦žà¦¾à¦¤ ভà§à¦²"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= লৈ বেয়া সংখà§à¦¯à¦¾ দিয়া গৈছে\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: অপৰিচিত বিকলà§à¦ª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: সকলো বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§‹à¦à¦¤à¦¾à¦• শূণà§à¦¯ নোহোৱা অৱসà§à¦¥à¦¾à¦²à§ˆ পà§à¦¨à¦ƒ পà§à§°à¦¤à¦¿à¦·à§à¦ à¦¾ কৰিব নোৱাৰি\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "পà§à§°à§±à§‡à¦¶ বিফল শেহতীয়া বিফলতা -ৰ পৰা\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "অভিগমà§à¦¯à¦¤à¦¾à§° অনà§à¦®à¦¤à¦¿ (শেহতীয়া অভিগমà§à¦¯à¦¤à¦¾ %ld ছেকেণà§à¦¡ আগতে) ।"
@@ -563,7 +448,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "আপà§à¦¨à¦¿ আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰাটো পà§à§°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ হৈ পৰিছে (গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ পà§à§°à¦£à¦¿ হ'ল)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -571,7 +456,7 @@ msgstr[0] "সকীয়নী: আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ %d
msgstr[1] "সকীয়নী: আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ %d দিনত অনà§à¦¤ হ'ব"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "সকীয়নী: আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ %d দিনত অনà§à¦¤ হ'ব"
@@ -580,6 +465,16 @@ msgstr "সকীয়নী: আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ %d à¦
msgid "NIS password could not be changed."
msgstr "NIS গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰিব পৰা নহয় ।"
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "কোনো গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ দিয়া হোৱা নাই"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰিব পৰা নহয় ।"
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -599,3 +494,81 @@ msgstr "%s ৰ বাবে গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰা à
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "আপোনাৰ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰিবলৈ আপà§à¦¨à¦¿ আৰৠকিছৠপৰ অপেকà§à¦·à¦¾ কৰিব লাগিব"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "পà§à§°à¦£à¦¿à¦Ÿà§‹à§° সৈতে à¦à¦•à§‡à¦‡"
+
+#~ msgid "memory allocation error"
+#~ msgstr "মেমৰি আবনà§à¦Ÿà¦¨ তà§à§°à§à¦Ÿà¦¿"
+
+#~ msgid "is a palindrome"
+#~ msgstr "à¦à¦Ÿà¦¾ অনà§à¦²à§‹à¦®â€Œ-বিলোম বাকà§à¦¯"
+
+#~ msgid "case changes only"
+#~ msgstr "অকল কেচ সলনি কৰা"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "পৰণিটোৰ সৈতে বহà§à¦¤ à¦à¦•à§‡à¦‡"
+
+#~ msgid "is too simple"
+#~ msgstr "বৰ সৰল"
+
+#~ msgid "is rotated"
+#~ msgstr "পকোৱা হৈছে"
+
+#~ msgid "not enough character classes"
+#~ msgstr "পৰà§à¦¯à¦¾à¦ªà§à¦¤ character classes নাই"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "à¦à¦Ÿà¦¾à§° পিছত à¦à¦Ÿà¦¾ বহà§à¦¤à§‹ à¦à¦•à§‡à¦‡ আখৰ আছে"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "অতি দীঘল à¦à¦•à§‡à¦§à§°à¦£à§° আখৰ কà§à§°à¦®à§° অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤ কৰে"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "কিবা ধৰনত বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§à¦¤à¦¾à§° নাম আছে"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "বেয়া গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "হিচাপ অসà§à¦¥à¦¾à§Ÿà§€à§°à§‚পে লক কৰা হৈছে (%ld ছেকেণà§à¦¡ আৰৠআছে)"
+
+#~ msgid "Authentication error"
+#~ msgstr "পà§à§°à¦®à¦¾à¦£à§€à¦•à§°à¦£à¦¤ ভà§à¦²"
+
+#~ msgid "Service error"
+#~ msgstr "সেৱাৰ ভà§à¦²"
+
+#~ msgid "Unknown user"
+#~ msgstr "অজà§à¦žà¦¾à¦¤ বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§‹à¦à¦¤à¦¾"
+
+#~ msgid "Unknown error"
+#~ msgstr "অজà§à¦žà¦¾à¦¤ ভà§à¦²"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= লৈ বেয়া সংখà§à¦¯à¦¾ দিয়া গৈছে\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: অপৰিচিত বিকলà§à¦ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: সকলো বà§à¦¯à§±à¦¹à¦¾à§°à¦•à§°à§‹à¦à¦¤à¦¾à¦• শূণà§à¦¯ নোহোৱা অৱসà§à¦¥à¦¾à¦²à§ˆ পà§à¦¨à¦ƒ পà§à§°à¦¤à¦¿à¦·à§à¦ à¦¾ কৰিব নোৱাৰি\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "পà§à§°à§±à§‡à¦¶ বিফল শেহতীয়া বিফলতা -ৰ পৰা\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/az.po b/po/az.po
index 83459905..6f54a02b 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM 1.4.0\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-04-25 00:40+0000\n"
"Last-Translator: Alesker Abdullayev - FEDORA Azerbaijan <tech@abdullaeff."
"com>\n"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.0.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Bağışlayın, vaxtınız bitdi!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ÅžifrÉ™: "
@@ -215,96 +202,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr ""
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Bağışlayın, vaxtınız bitdi!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -356,7 +302,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -397,22 +343,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -447,12 +393,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -472,62 +418,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -547,7 +438,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -555,7 +446,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -564,6 +455,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr ""
diff --git a/po/be.po b/po/be.po
index c0d34d47..c5b43e85 100644
--- a/po/be.po
+++ b/po/be.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Belarusian (http://www.transifex.com/projects/p/fedora/"
@@ -21,21 +21,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,57 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -358,7 +306,7 @@ msgstr[3] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -399,22 +347,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -449,12 +397,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -474,62 +422,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -549,7 +442,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -559,7 +452,7 @@ msgstr[2] ""
msgstr[3] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -568,6 +461,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/bg.gmo b/po/bg.gmo
index e22cd0d2..b58007d0 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 9c5800de..c6f5cac7 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -5,48 +5,36 @@
# Translators:
# Valentin Laskov <laskov@festa.bg>, 2012-2013
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Dmitry V. Levin <ldv@altlinux.org>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2013-08-09 10:31-0400\n"
-"Last-Translator: Valentin Laskov <laskov@festa.bg>\n"
-"Language-Team: Bulgarian <trans-bg@lists.fedoraproject.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-12-20 08:00+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
+"Language-Team: Bulgarian <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/bg/>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Zanata 3.8.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Времето изтича...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...СъжалÑваме, Вашето време изтече!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "погрешен разговор (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Парола: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "Ðова %s парола: "
+msgstr "Nastoyashta парола %s: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "Ðова парола: "
+msgstr "Nastoyashta парола: "
#: libpam/pam_get_authtok.c:44
#, c-format
@@ -76,7 +64,6 @@ msgid "Retype %s"
msgstr "Ðапишете пак %s"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
msgstr "ПромÑната на паролата е прекратена."
@@ -219,102 +206,60 @@ msgstr "Приложението Ñе нуждае от повторно извÐ
msgid "Unknown PAM error"
msgstr "Ðепозната PAM грешка"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "е Ñъщата като Ñтарата"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "грешка при заделÑне на памет"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "е палиндром"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "променена е Ñамо големината на буквите"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "е твърде подобна на Ñтарата"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "е много леÑна"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "е завъртÑна"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "недоÑтатъчно клаÑове знаци"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "Ñъдържа твърде много еднакви поÑледователни знаци"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "Ñъдържа твърде дълга еднообразна поÑледователноÑÑ‚ знаци"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "под нÑкаква форма Ñъдържа името на потребителÑ"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Ðе е предоÑтавена парола"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Времето изтича...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS парола не може да бъде променена."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...СъжалÑваме, Вашето време изтече!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ЛОШРПÐРОЛÐ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "погрешен разговор (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s Ñе провали: код на грешка %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s Ñе провали: уловен Ñигнал %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s Ñе провали: непознат ÑÑ‚Ð°Ñ‚ÑƒÑ 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+"Usage: %s [--dir /път/към/директориÑта-на-tally] [--user потребителÑко_име] "
+"[--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "Ðкаунтът е заключен поради %u неуÑпешни опита за влизане"
+msgstr "Ðкаунтът е заключен поради %u неуÑпешни опита за влизане."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(оÑтават %d мин. за отключване)"
+msgstr[1] "(оÑтават %d мин. за отключване)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(оÑтават %d мин. за отключване)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -365,15 +310,14 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr "След поÑледното уÑпешно влизане, имаше %d неуÑпешни опита за влизане."
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
msgstr "Твърде много Ð²Ð»Ð¸Ð·Ð°Ð½Ð¸Ñ Ð·Ð° '%s'."
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "Имате нови пиÑма."
+msgstr "ÐÑмате пиÑма."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -407,29 +351,29 @@ msgstr "Имате Ñтари пиÑма в папка %s."
msgid "You have mail in folder %s."
msgstr "Имате пиÑма в папка %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Създаване на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ðе мога да Ñъздам и наÑÑ‚Ñ€Ð¾Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Паролата вече е използвана. Изберете друга."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Паролата вече е използвана."
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "Подразбиращ Ñе контекÑÑ‚ за ÑигурноÑÑ‚ %s\n"
+msgstr "Подразбиращ Ñе контекÑÑ‚ за ÑигурноÑÑ‚ %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
@@ -440,33 +384,32 @@ msgid "role:"
msgstr "ролÑ:"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "ÐÑма подразбиращ Ñе тип за Ñ€Ð¾Ð»Ñ %s\n"
+msgstr "ÐÑма подразбиращ Ñе тип за Ñ€Ð¾Ð»Ñ %s."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
msgstr "ниво:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "Ðевалиден контекÑÑ‚ за ÑигурноÑÑ‚"
+msgstr "Ðевалиден контекÑÑ‚ за ÑигурноÑÑ‚."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "Ðе може да бъде получен валиден контекÑÑ‚ за %s."
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "Зададен е контекÑÑ‚ за ÑигурноÑÑ‚ %s"
+msgstr "Зададен е контекÑÑ‚ за ÑигурноÑÑ‚ %s."
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "Зададен е Key Creation Context %s"
+msgstr "Зададен е key creation context %s."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -483,115 +426,60 @@ msgstr "pam_set_item() не уÑÐ¿Ñ \n"
msgid "login: failure forking: %m"
msgstr "вход: неуÑпех при Ñтартиране: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Ðкаунтът е заключен временно (%ld оÑтават Ñекунди)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Грешка при удоÑтоверÑването"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Грешка в уÑлугата"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ðепознат потребител"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ðепозната грешка"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Грешно чиÑло, подадено на --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Ðеразпозната Ð¾Ð¿Ñ†Ð¸Ñ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Ðе мога да уÑÑ‚Ð°Ð½Ð¾Ð²Ñ Ð²Ñички потребители на non-zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "ВлÑзъл ÐеуÑпехи ПоÑледен неуÑпех От\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
-#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "ДоÑтъпът е предоÑтавен (поÑледниÑÑ‚ доÑтъп бе преди %ld Ñекунди)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
msgstr ""
"Срокът на акаунта Ви е изтекъл; молÑ, Ñвържете Ñе Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора на "
-"ÑиÑтемата"
+"ÑиÑтемата."
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "ИзиÑква Ñе веднага да Ñмените паролата Ñи (изиÑкано от root)"
+msgstr "ИзиÑква Ñе веднага да Ñмените паролата Ñи (изиÑкано от админиÑтратор)."
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "ИзиÑква Ñе веднага да Ñмените паролата Ñи (Ñрокът и изтича)"
+msgstr "ИзиÑква Ñе веднага да Ñмените паролата Ñи (Ñрокът и изтича)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "Внимание: Ñрокът на паролата Ви изтича Ñлед %d ден"
-msgstr[1] "Внимание: Ñрокът на паролата Ви изтича Ñлед %d дни"
+msgstr[0] "Внимание: Ñрокът на паролата Ви изтича Ñлед %d ден."
+msgstr[1] "Внимание: Ñрокът на паролата Ви изтича Ñлед %d дни."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "Внимание: паролата Ви ще изтече Ñлед %d дни"
+msgstr "Внимание: паролата Ви ще изтече Ñлед %d дни."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "NIS парола не може да бъде променена."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Ðе е предоÑтавена парола."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Паролата не е променена."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ТрÑбва да изберете по-кратка парола."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "ТрÑбва да изберете по-дълга парола"
+msgstr "ТрÑбва да изберете по-дълга парола."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
@@ -599,6 +487,82 @@ msgid "Changing password for %s."
msgstr "СмÑна на паролата за %s."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "ТрÑбва да изчакате повече, за да промените Вашата парола"
+msgstr "ТрÑбва да изчакате повече, за да промените Вашата парола."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "е Ñъщата като Ñтарата"
+
+#~ msgid "memory allocation error"
+#~ msgstr "грешка при заделÑне на памет"
+
+#~ msgid "is a palindrome"
+#~ msgstr "е палиндром"
+
+#~ msgid "case changes only"
+#~ msgstr "променена е Ñамо големината на буквите"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "е твърде подобна на Ñтарата"
+
+#~ msgid "is too simple"
+#~ msgstr "е много леÑна"
+
+#~ msgid "is rotated"
+#~ msgstr "е завъртÑна"
+
+#~ msgid "not enough character classes"
+#~ msgstr "недоÑтатъчно клаÑове знаци"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "Ñъдържа твърде много еднакви поÑледователни знаци"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "Ñъдържа твърде дълга еднообразна поÑледователноÑÑ‚ знаци"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "под нÑкаква форма Ñъдържа името на потребителÑ"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ЛОШРПÐРОЛÐ: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Ðкаунтът е заключен временно (%ld оÑтават Ñекунди)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Грешка при удоÑтоверÑването"
+
+#~ msgid "Service error"
+#~ msgstr "Грешка в уÑлугата"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ðепознат потребител"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ðепозната грешка"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Грешно чиÑло, подадено на --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Ðеразпозната Ð¾Ð¿Ñ†Ð¸Ñ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Ðе мога да уÑÑ‚Ð°Ð½Ð¾Ð²Ñ Ð²Ñички потребители на non-zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ВлÑзъл ÐеуÑпехи ПоÑледен неуÑпех От\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/bn.gmo b/po/bn.gmo
index 04a888dc..83588ba4 100644
--- a/po/bn.gmo
+++ b/po/bn.gmo
Binary files differ
diff --git a/po/bn.po b/po/bn.po
index 336344e2..5d929422 100644
--- a/po/bn.po
+++ b/po/bn.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-04-10 04:36-0400\n"
"Last-Translator: Mahay Alam Khan <mahayalamkhan@gmail.com>\n"
"Language-Team: Bengali <info@ankur.org.bd>\n"
@@ -27,21 +27,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...সময় সমাপà§à¦¤à¦¿à¦° পথে...⎠\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...দà§à¦ƒà¦–িত, সময় সমাপà§à¦¤!⎠\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ তথà§à¦¯à¦¬à¦¿à¦¨à¦¿à¦®à§Ÿ (%d)âŽ\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "পাসওয়ারà§à¦¡: "
@@ -223,100 +210,56 @@ msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ দà§à¦¬à¦¾à¦°à¦¾ পà§à¦¨à¦°à¦¾à
msgid "Unknown PAM error"
msgstr "PAM সংকà§à¦°à¦¾à¦¨à§à¦¤ অজানা তà§à¦°à§à¦Ÿà¦¿"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "পà§à¦°à§‹à¦¨à§‹à¦Ÿà¦¿à¦° অনà§à¦°à§‚প"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "মেমরি বরাদà§à¦¦ করতে সমসà§à¦¯à¦¾"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "উভমà§à¦–ী শবà§à¦¦"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° হরফের ছাà¦à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡à§‡à¦° সমতূলà§à¦¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "জটিল নয়"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ঘোরানো হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "পরà§à¦¯à¦¾à¦ªà§à¦¤ অকà§à¦·à¦° শà§à¦°à§‡à¦£à§€ উপসà§à¦¥à¦¿à¦¤ নেই"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-#, fuzzy
-msgid "contains too long of a monotonic character sequence"
-msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "কোনো রূপে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "কোনো পাসওয়ারà§à¦¡ উলà§à¦²à¦¿à¦–িত হয়নি"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...সময় সমাপà§à¦¤à¦¿à¦° পথে...⎠\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...দà§à¦ƒà¦–িত, সময় সমাপà§à¦¤!⎠\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "পাসওয়ারà§à¦¡ ভাল নয়: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ তথà§à¦¯à¦¬à¦¿à¦¨à¦¿à¦®à§Ÿ (%d)âŽ\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s বিফল: পà§à¦°à¦¸à§à¦¥à¦¾à¦¨à¦•à¦¾à¦²à§€à¦¨ কোড %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s বিফল: %d%s সিগনাল পà§à¦°à¦¾à¦ªà§à¦¤"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s বিফল: অজানা অবসà§à¦¥à¦¾ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u বà§à¦¯à¦°à§à¦¥ লগ-ইনের ফলে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -368,7 +311,7 @@ msgstr[1] "সরà§à¦¬à¦¶à§‡à¦· সফল লগ-ইনের পরে %d-টà
msgid "There were %d failed login attempts since the last successful login."
msgstr "সরà§à¦¬à¦¶à§‡à¦· সফল লগ-ইনের পরে %d-টি বà§à¦¯à¦°à§à¦¥ লগ-ইনের পà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ করা হয়েছে।"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'-র কà§à¦·à§‡à¦¤à§à¦°à§‡ অতà§à¦¯à¦¾à¦§à¦¿à¦• লগ-ইন"
@@ -410,22 +353,22 @@ msgstr "%s ফোলà§à¦¡à¦¾à¦°à§‡ পà§à¦°à§‹à¦¨à§‹ মেইল উপসà§
msgid "You have mail in folder %s."
msgstr "%s ফোলà§à¦¡à¦¾à¦°à§‡ মেইল উপসà§à¦¥à¦¿à¦¤ রয়েছে।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' ডিরেকà§à¦Ÿà¦°à¦¿ নিরà§à¦®à¦¾à¦£ করা হচà§à¦›à§‡à¥¤"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ডিরেকà§à¦Ÿà¦°à¦¿ '%s' নিরà§à¦®à¦¾à¦£ ও আরমà§à¦­ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "পাসওয়ারà§à¦¡ পূরà§à¦¬à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়েছে। à¦à¦•à¦Ÿà¦¿ পৃথক পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "পাসওয়ারà§à¦¡ পূরà§à¦¬à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়েছে। à¦à¦•à¦Ÿà¦¿ পৃথক পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
@@ -462,12 +405,12 @@ msgstr "বৈধ নিরাপতà§à¦¤à¦¾ সংকà§à¦°à¦¾à¦¨à§à¦¤ contex
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Security Context %s ধারà§à¦¯ করা হয়েছে"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "কি নিরà§à¦®à¦¾à¦£à§‡à¦° Context %s ধারà§à¦¯ করা হয়েছে"
@@ -487,66 +430,7 @@ msgstr "pam_set_item() করতে বà§à¦¯à¦°à§à¦¥\n"
msgid "login: failure forking: %m"
msgstr "লগ-ইন: fork করতে বà§à¦¯à¦°à§à¦¥: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "সাময়িকরূপে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে (%ld সেকেনà§à¦¡ অবশিষà§à¦Ÿ)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "অনà§à¦®à§‹à¦¦à¦¨ সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "পরিসেবা সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "অজানা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "অজানা সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= à¦à¦° জনà§à¦¯ ভà§à¦² সংখà§à¦¯à¦¾ উলà§à¦²à¦¿à¦–িত\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: অজানা বিকলà§à¦ª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: সব বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° জনà§à¦¯ শূণà§à¦¯-ভিনà§à¦¨ মান ধারà§à¦¯ করতে বà§à¦¯à¦°à§à¦¥\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "লগ-ইন বিফলতা সরà§à¦¬à¦¶à§‡à¦· বিফলতা চিহà§à¦¨à¦¿à¦¤ সà§à¦¥à¦¾à¦¨ থেকে\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "পà§à¦°à¦¬à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à¦° পà§à¦°à¦¦à¦¾à¦¨ করা হয়েছে (%ld পূরà§à¦¬à§‡ সরà§à¦¬à¦¶à§‡à¦· লগ-ইন করা হয়েছে)।"
@@ -571,7 +455,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "আপনার পাসওয়ারà§à¦¡ à¦à¦‡ মà§à¦¹à§‚রà§à¦¤à§‡ পরিবরà§à¦¤à¦¨ করা আবশà§à¦¯à¦• (password-র মেয়াদ পূরà§à¦£ হয়েছে)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -579,7 +463,7 @@ msgstr[0] "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়à¦
msgstr[1] "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়ারà§à¦¡à§‡à¦° মেয়াদপূরà§à¦£ হবে"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়ারà§à¦¡à§‡à¦° মেয়াদপূরà§à¦£ হবে"
@@ -588,6 +472,16 @@ msgstr "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়াà¦
msgid "NIS password could not be changed."
msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "কোনো পাসওয়ারà§à¦¡ উলà§à¦²à¦¿à¦–িত হয়নি"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "আপনি à¦à¦•à¦Ÿà¦¿ ছোট পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করতে হবে।"
@@ -606,3 +500,82 @@ msgstr "%s-র পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা à¦
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "কিছৠকাল পরে পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হবে"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "পà§à¦°à§‹à¦¨à§‹à¦Ÿà¦¿à¦° অনà§à¦°à§‚প"
+
+#~ msgid "memory allocation error"
+#~ msgstr "মেমরি বরাদà§à¦¦ করতে সমসà§à¦¯à¦¾"
+
+#~ msgid "is a palindrome"
+#~ msgstr "উভমà§à¦–ী শবà§à¦¦"
+
+#~ msgid "case changes only"
+#~ msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° হরফের ছাà¦à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡à§‡à¦° সমতূলà§à¦¯"
+
+#~ msgid "is too simple"
+#~ msgstr "জটিল নয়"
+
+#~ msgid "is rotated"
+#~ msgstr "ঘোরানো হয়েছে"
+
+#~ msgid "not enough character classes"
+#~ msgstr "পরà§à¦¯à¦¾à¦ªà§à¦¤ অকà§à¦·à¦° শà§à¦°à§‡à¦£à§€ উপসà§à¦¥à¦¿à¦¤ নেই"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
+
+#, fuzzy
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "কোনো রূপে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ হয়েছে"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "পাসওয়ারà§à¦¡ ভাল নয়: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "সাময়িকরূপে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে (%ld সেকেনà§à¦¡ অবশিষà§à¦Ÿ)"
+
+#~ msgid "Authentication error"
+#~ msgstr "অনà§à¦®à§‹à¦¦à¦¨ সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
+
+#~ msgid "Service error"
+#~ msgstr "পরিসেবা সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
+
+#~ msgid "Unknown user"
+#~ msgstr "অজানা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€"
+
+#~ msgid "Unknown error"
+#~ msgstr "অজানা সমসà§à¦¯à¦¾"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= à¦à¦° জনà§à¦¯ ভà§à¦² সংখà§à¦¯à¦¾ উলà§à¦²à¦¿à¦–িত\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: অজানা বিকলà§à¦ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: সব বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° জনà§à¦¯ শূণà§à¦¯-ভিনà§à¦¨ মান ধারà§à¦¯ করতে বà§à¦¯à¦°à§à¦¥\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "লগ-ইন বিফলতা সরà§à¦¬à¦¶à§‡à¦· বিফলতা চিহà§à¦¨à¦¿à¦¤ সà§à¦¥à¦¾à¦¨ থেকে\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/bn_IN.gmo b/po/bn_IN.gmo
index aca51432..60578a7e 100644
--- a/po/bn_IN.gmo
+++ b/po/bn_IN.gmo
Binary files differ
diff --git a/po/bn_IN.po b/po/bn_IN.po
index 915400bb..324658d6 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-02-28 05:38-0500\n"
"Last-Translator: runa <runabh@gmail.com>\n"
"Language-Team: Bengali (India) <anubad@lists.ankur.org.in>\n"
@@ -22,21 +22,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...সময় সমাপà§à¦¤à¦¿à¦° পথে...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...দà§à¦ƒà¦–িত, সময় সমাপà§à¦¤!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ তথà§à¦¯à¦¬à¦¿à¦¨à¦¿à¦®à§Ÿ (conversation) (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "পাসওয়ারà§à¦¡: "
@@ -218,100 +205,56 @@ msgstr "অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ দà§à¦¬à¦¾à¦°à¦¾ পà§à¦¨à¦°à¦¾à
msgid "Unknown PAM error"
msgstr "PAM সংকà§à¦°à¦¾à¦¨à§à¦¤ অজানা তà§à¦°à§à¦Ÿà¦¿"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "পà§à¦°à§‹à¦¨à§‹à¦Ÿà¦¿à¦° অনà§à¦°à§‚প"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "মেমরি বরাদà§à¦¦ করতে সমসà§à¦¯à¦¾"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "উভমà§à¦–ী শবà§à¦¦"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° হরফের ছাà¦à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡à§‡à¦° সমতূলà§à¦¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "জটিল নয়"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ঘোরানো হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "পরà§à¦¯à¦¾à¦ªà§à¦¤ অকà§à¦·à¦° শà§à¦°à§‡à¦£à§€ উপসà§à¦¥à¦¿à¦¤ নেই"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-#, fuzzy
-msgid "contains too long of a monotonic character sequence"
-msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "কোনো রূপে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ হয়েছে"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "কোনো পাসওয়ারà§à¦¡ উলà§à¦²à¦¿à¦–িত হয়নি"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...সময় সমাপà§à¦¤à¦¿à¦° পথে...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...দà§à¦ƒà¦–িত, সময় সমাপà§à¦¤!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "পাসওয়ারà§à¦¡ ভাল নয়: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ তথà§à¦¯à¦¬à¦¿à¦¨à¦¿à¦®à§Ÿ (conversation) (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s বিফল: পà§à¦°à¦¸à§à¦¥à¦¾à¦¨à¦•à¦¾à¦²à§€à¦¨ কোড %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s বিফল: %d%s সিগনাল পà§à¦°à¦¾à¦ªà§à¦¤"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s বিফল: অজানা অবসà§à¦¥à¦¾ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u বà§à¦¯à¦°à§à¦¥ লগ-ইনের ফলে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -363,7 +306,7 @@ msgstr[1] "সরà§à¦¬à¦¶à§‡à¦· সফল লগ-ইনের পরে %d-টà
msgid "There were %d failed login attempts since the last successful login."
msgstr "সরà§à¦¬à¦¶à§‡à¦· সফল লগ-ইনের পরে %d-টি বà§à¦¯à¦°à§à¦¥ লগ-ইনের পà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ করা হয়েছে।"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'-র কà§à¦·à§‡à¦¤à§à¦°à§‡ অতà§à¦¯à¦¾à¦§à¦¿à¦• লগ-ইন"
@@ -405,22 +348,22 @@ msgstr "%s ফোলà§à¦¡à¦¾à¦°à§‡ পà§à¦°à§‹à¦¨à§‹ মেইল উপসà§
msgid "You have mail in folder %s."
msgstr "%s ফোলà§à¦¡à¦¾à¦°à§‡ মেইল উপসà§à¦¥à¦¿à¦¤ রয়েছে।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' ডিরেকà§à¦Ÿà¦°à¦¿ নিরà§à¦®à¦¾à¦£ করা হচà§à¦›à§‡à¥¤"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ডিরেকà§à¦Ÿà¦°à¦¿ '%s' নিরà§à¦®à¦¾à¦£ ও আরমà§à¦­ করতে বà§à¦¯à¦°à§à¦¥à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "পাসওয়ারà§à¦¡ পূরà§à¦¬à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়েছে। à¦à¦•à¦Ÿà¦¿ পৃথক পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "পাসওয়ারà§à¦¡ পূরà§à¦¬à§‡ বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়েছে। à¦à¦•à¦Ÿà¦¿ পৃথক পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
@@ -457,12 +400,12 @@ msgstr "বৈধ নিরাপতà§à¦¤à¦¾ সংকà§à¦°à¦¾à¦¨à§à¦¤ contex
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Security Context %s ধারà§à¦¯ করা হয়েছে"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "কি নিরà§à¦®à¦¾à¦£à§‡à¦° Context %s ধারà§à¦¯ করা হয়েছে"
@@ -482,66 +425,7 @@ msgstr "pam_set_item() করতে বà§à¦¯à¦°à§à¦¥\n"
msgid "login: failure forking: %m"
msgstr "লগ-ইন: fork করতে বà§à¦¯à¦°à§à¦¥: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "সাময়িকরূপে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে (%ld সেকেনà§à¦¡ অবশিষà§à¦Ÿ)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "অনà§à¦®à§‹à¦¦à¦¨ সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "পরিসেবা সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "অজানা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "অজানা সমসà§à¦¯à¦¾"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= à¦à¦° জনà§à¦¯ ভà§à¦² সংখà§à¦¯à¦¾ উলà§à¦²à¦¿à¦–িত\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: অজানা বিকলà§à¦ª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: সব বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° জনà§à¦¯ শূণà§à¦¯-ভিনà§à¦¨ মান ধারà§à¦¯ করতে বà§à¦¯à¦°à§à¦¥\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "লগ-ইন বিফলতা সরà§à¦¬à¦¶à§‡à¦· বিফলতা চিহà§à¦¨à¦¿à¦¤ সà§à¦¥à¦¾à¦¨ থেকে\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "পà§à¦°à¦¬à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à¦° পà§à¦°à¦¦à¦¾à¦¨ করা হয়েছে (%ld পূরà§à¦¬à§‡ সরà§à¦¬à¦¶à§‡à¦· লগ-ইন করা হয়েছে)।"
@@ -566,7 +450,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "আপনার পাসওয়ারà§à¦¡ à¦à¦‡ মà§à¦¹à§‚রà§à¦¤à§‡ পরিবরà§à¦¤à¦¨ করা আবশà§à¦¯à¦• (password-র মেয়াদ পূরà§à¦£ হয়েছে)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -574,7 +458,7 @@ msgstr[0] "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়à¦
msgstr[1] "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়ারà§à¦¡à§‡à¦° মেয়াদপূরà§à¦£ হবে"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়ারà§à¦¡à§‡à¦° মেয়াদপূরà§à¦£ হবে"
@@ -583,6 +467,16 @@ msgstr "সতরà§à¦•à¦¬à¦¾à¦£à§€: %d দিন পরে পাসওয়াà¦
msgid "NIS password could not be changed."
msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "কোনো পাসওয়ারà§à¦¡ উলà§à¦²à¦¿à¦–িত হয়নি"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হয়নি।"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "আপনি à¦à¦•à¦Ÿà¦¿ ছোট পাসওয়ারà§à¦¡ নিরà§à¦¬à¦¾à¦šà¦¨ করতে হবে।"
@@ -601,3 +495,82 @@ msgstr "%s-র পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা à¦
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "কিছৠকাল পরে পাসওয়ারà§à¦¡ পরিবরà§à¦¤à¦¨ করা সমà§à¦­à¦¬ হবে"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "পà§à¦°à§‹à¦¨à§‹à¦Ÿà¦¿à¦° অনà§à¦°à§‚প"
+
+#~ msgid "memory allocation error"
+#~ msgstr "মেমরি বরাদà§à¦¦ করতে সমসà§à¦¯à¦¾"
+
+#~ msgid "is a palindrome"
+#~ msgstr "উভমà§à¦–ী শবà§à¦¦"
+
+#~ msgid "case changes only"
+#~ msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° হরফের ছাà¦à¦¦ পরিবরà§à¦¤à¦¨ করা হয়েছে"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡à§‡à¦° সমতূলà§à¦¯"
+
+#~ msgid "is too simple"
+#~ msgstr "জটিল নয়"
+
+#~ msgid "is rotated"
+#~ msgstr "ঘোরানো হয়েছে"
+
+#~ msgid "not enough character classes"
+#~ msgstr "পরà§à¦¯à¦¾à¦ªà§à¦¤ অকà§à¦·à¦° শà§à¦°à§‡à¦£à§€ উপসà§à¦¥à¦¿à¦¤ নেই"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
+
+#, fuzzy
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "à¦à¦•à¦‡ অকà§à¦·à¦° অতà§à¦¯à¦¾à¦§à¦¿à¦• বার কà§à¦°à¦®à¦¾à¦—ত বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়েছে"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "কোনো রূপে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ হয়েছে"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "পাসওয়ারà§à¦¡ ভাল নয়: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "সাময়িকরূপে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ লক করা হয়েছে (%ld সেকেনà§à¦¡ অবশিষà§à¦Ÿ)"
+
+#~ msgid "Authentication error"
+#~ msgstr "অনà§à¦®à§‹à¦¦à¦¨ সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
+
+#~ msgid "Service error"
+#~ msgstr "পরিসেবা সংকà§à¦°à¦¾à¦¨à§à¦¤ সমসà§à¦¯à¦¾"
+
+#~ msgid "Unknown user"
+#~ msgstr "অজানা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€"
+
+#~ msgid "Unknown error"
+#~ msgstr "অজানা সমসà§à¦¯à¦¾"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= à¦à¦° জনà§à¦¯ ভà§à¦² সংখà§à¦¯à¦¾ উলà§à¦²à¦¿à¦–িত\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: অজানা বিকলà§à¦ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: সব বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° জনà§à¦¯ শূণà§à¦¯-ভিনà§à¦¨ মান ধারà§à¦¯ করতে বà§à¦¯à¦°à§à¦¥\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "লগ-ইন বিফলতা সরà§à¦¬à¦¶à§‡à¦· বিফলতা চিহà§à¦¨à¦¿à¦¤ সà§à¦¥à¦¾à¦¨ থেকে\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/bs.po b/po/bs.po
index ea6c060a..660c5a5a 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bosnian (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,56 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +304,7 @@ msgstr[2] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +345,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +395,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +420,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,7 +440,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -557,7 +449,7 @@ msgstr[1] ""
msgstr[2] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -566,6 +458,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/ca.gmo b/po/ca.gmo
index 358f8761..f65f78c0 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index b6ffac6e..4eb0fe2d 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,13 +9,13 @@
# xqueralt <xqueralt@gmail.com>, 2008
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Robert Antoni Buj Gelonch <robert.buj@gmail.com>, 2020.
-# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-17 18:48+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Catalan <https://translate.fedoraproject.org/projects/linux-"
"pam/master/ca/>\n"
@@ -24,23 +24,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0.4\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...S'acaba el temps...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...S'ha acabat el temps.\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversa errònia (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Contrasenya: "
@@ -221,100 +208,60 @@ msgstr "L'aplicació necessita cridar novament libpam"
msgid "Unknown PAM error"
msgstr "Error de PAM desconegut"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "és la mateixa que l'antiga"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "Error d'assignació de memòria"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "és un palíndrom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "només canvien les majúscules i minúscules"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "és massa semblant a l'antiga"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "és massa senzilla"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "està girada"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "no hi ha suficients classes de caràcters"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "conté massa caràcters idèntics consecutius"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "conté una seqüència de caràcters monòtona massa llarga"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "conté el nom d'usuari d'alguna forma"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "No s'ha proporcionat cap contrasenya."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...S'acaba el temps...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "No s'ha canviat la contrasenya."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...S'ha acabat el temps.\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "CONTRASENYA INCORRECTA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversa errònia (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s ha fallat: codi de sortida %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s ha fallat: s'ha atrapat el senyal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s ha fallat: estat 0x%x desconegut"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file nom_fitxer_arrel] [--user nom_usuari] [--reset[=n]] [--quiet]\n"
+"Forma d’ús: %s: [--dir /directori/path/to/tally] [--user nom_usuari] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "El compte està bloquejat a causa de %u inicis fallits de sessió."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(resten %d minut per desbloquejar)"
+msgstr[1] "(resten %d minuts per desbloquejar)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(resten %d minuts per desbloquejar)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -369,7 +316,7 @@ msgstr ""
"S'han produït %d intents fallits d'inici de sessió des de l'últim inici de "
"sessió reeixit."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Hi havia massa inicis de sessió per a '%s'."
@@ -410,22 +357,22 @@ msgstr "Teniu correu antic a la carpeta %s."
msgid "You have mail in folder %s."
msgstr "Teniu correu a la carpeta %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Creant el directori '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "No s'ha pogut crear i inicialitzar el directori '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Aquesta contrasenya ja s'ha fet servir. Trieu-ne una altra."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "La contrasenya ja ha estat utilitzada."
@@ -460,12 +407,12 @@ msgstr "Aquest no és un context de seguretat vàlid."
msgid "A valid context for %s could not be obtained."
msgstr "No s'ha pogut obtenir un context vàlid per a %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "S'ha assignat el context de seguretat %s."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "S'ha assignat el context de creació de clau %s."
@@ -485,67 +432,7 @@ msgstr "s'ha produït un error en pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "inici de sessió: ha fallat la bifurcació: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "El compte està bloquejat temporalment (queden %ld segons)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Error d'autenticació"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Error del servei"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Usuari desconegut"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Error desconegut"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: número incorrecte assignat a --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: opció %s no reconeguda\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file nom_fitxer_arrel] [--user nom_usuari] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: no es poden restablir tots els usuaris a un valor diferent de zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Entrada Fallades Última fallada Des de\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f nom_fitxer_arrel] [--file nom_fitxer_arrel]\n"
-" [-u nom_usuari] [--user nom_usuari]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "S'ha concedit l'accés (l'últim accés va ser fa %ld segons)."
@@ -568,7 +455,7 @@ msgid ""
msgstr ""
"Heu de canviar la contrasenya immediatament (la contrasenya ha vençut)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -576,7 +463,7 @@ msgstr[0] "Atenció: la contrasenya venç d'aquí a %d dia."
msgstr[1] "Atenció: la contrasenya venç d'aquí a %d dies."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Atenció: la contrasenya venç d'aquí a %d dies."
@@ -585,6 +472,14 @@ msgstr "Atenció: la contrasenya venç d'aquí a %d dies."
msgid "NIS password could not be changed."
msgstr "No s'ha pogut canviar la contrasenya NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "No s'ha proporcionat cap contrasenya."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "No s'ha canviat la contrasenya."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Heu de triar una contrasenya més curta."
@@ -601,3 +496,82 @@ msgstr "S'està canviant la contrasenya de %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Heu d'esperar més temps abans de canviar la contrasenya."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "és la mateixa que l'antiga"
+
+#~ msgid "memory allocation error"
+#~ msgstr "Error d'assignació de memòria"
+
+#~ msgid "is a palindrome"
+#~ msgstr "és un palíndrom"
+
+#~ msgid "case changes only"
+#~ msgstr "només canvien les majúscules i minúscules"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "és massa semblant a l'antiga"
+
+#~ msgid "is too simple"
+#~ msgstr "és massa senzilla"
+
+#~ msgid "is rotated"
+#~ msgstr "està girada"
+
+#~ msgid "not enough character classes"
+#~ msgstr "no hi ha suficients classes de caràcters"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "conté massa caràcters idèntics consecutius"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "conté una seqüència de caràcters monòtona massa llarga"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "conté el nom d'usuari d'alguna forma"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "CONTRASENYA INCORRECTA: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "El compte està bloquejat temporalment (queden %ld segons)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Error d'autenticació"
+
+#~ msgid "Service error"
+#~ msgstr "Error del servei"
+
+#~ msgid "Unknown user"
+#~ msgstr "Usuari desconegut"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error desconegut"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: número incorrecte assignat a --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: opció %s no reconeguda\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file nom_fitxer_arrel] [--user nom_usuari] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: no es poden restablir tots els usuaris a un valor diferent de zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Entrada Fallades Última fallada Des de\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f nom_fitxer_arrel] [--file nom_fitxer_arrel]\n"
+#~ " [-u nom_usuari] [--user nom_usuari]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/cs.gmo b/po/cs.gmo
index b21aceee..75979c7a 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index fcdaa340..588b63c2 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-20 10:38+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Czech <https://translate.fedoraproject.org/projects/linux-pam/"
@@ -25,21 +25,8 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 3.11.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Dochází Äas...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Promiňte, Äas vyprÅ¡el!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "nesprávná konverzace (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Heslo: "
@@ -219,84 +206,35 @@ msgstr "Aplikace musí znovu zavolat libpam"
msgid "Unknown PAM error"
msgstr "Neznámá chyba PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "je stejné jako předcházející"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "chyba alokace paměti"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "je palindrom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "pouze mění velikost"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "je příliš podobné předcházejícímu"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "je příliš jednoduché"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "je posunuté"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "nemá dostatek různých druhů znaků"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "obsahuje příliš mnoho stejných znaků za sebou"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "obsahuje příliš dlouhou postupnou sekvenci znaků"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "obsahuje v nějaké formě uživatelské jméno"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Heslo nebylo zadáno."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Dochází Äas...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Heslo nebylo změněno."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Promiňte, Äas vyprÅ¡el!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ŠPATNÉ HESLO: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "nesprávná konverzace (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s selhal: návratový kód %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s selhal: dostal signál %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s selhal: neznámý kód stavu 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -304,13 +242,22 @@ msgstr ""
"Použití: %s [--dir /cesta/k/tally-adresari] [--user uzivatelske_jmeno] [--"
"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "ÚÄet je uzamÄen z důvodu %u neúspěšných pokusů o pÅ™ihlášení."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minut zbývá do odemÄení)"
+msgstr[1] "(%d minut zbývá do odemÄení)"
+msgstr[2] "(%d minut zbývá do odemÄení)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d minut zbývá do odemÄení)"
@@ -363,7 +310,7 @@ msgstr[2] "Od posledního úspěšného doÅ¡lo k %d neúspěšným pokusům o pÅ
msgid "There were %d failed login attempts since the last successful login."
msgstr "Od posledního úspěšného došlo k %d neúspěšným pokusům o přihlášení."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Proběhlo příliš mnoho přihlášení pro '%s'."
@@ -404,22 +351,22 @@ msgstr "Máte starou poštu ve složce %s."
msgid "You have mail in folder %s."
msgstr "Máte poštu ve složce %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Vytváření adresáře '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Nezdařilo se vytvořit a inicializovat adresář '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Heslo již bylo použito. Zvolte jiné."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Heslo již bylo použito."
@@ -454,12 +401,12 @@ msgstr "Toto není platný bezpeÄnostní kontext."
msgid "A valid context for %s could not be obtained."
msgstr "Nepodařilo se získat platný kontext pro %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "BezpeÄnostní kontext %s byl pÅ™iÅ™azen."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Kontext pro vytváření klíÄů %s byl pÅ™idÄ›len."
@@ -479,67 +426,7 @@ msgstr "chyba pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: chyba forku: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ÚÄet je doÄasnÄ› uzamÄen (zbývá %ld vteÅ™in)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Chyba autentizace"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Chyba služby"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Neznámý uživatel"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Neznámá chyba"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Zadána špatná hodnota --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Neznámá volba %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file jmeno_souboru] [--user uzivatelske_jmeno] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Nelze resetovat všechny uživatele nenulově\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Selhání Poslední selhání Od\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f plna-cesta-k-souboru] [--file plna-cesta-k-souboru]\n"
-" [-u uzivatelske-jmeno] [--user uzivatelske-jmeno]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Přístup byl povolen (poslední přístup před %ld vteřinami)."
@@ -559,7 +446,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Nyní musíte změnit své heslo (heslo vypršelo)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -568,7 +455,7 @@ msgstr[1] "Varování: Vaše heslo vyprší za %d dny."
msgstr[2] "Varování: Vaše heslo vyprší za %d dní."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Varování: PoÄet dní do vyprÅ¡ení hesla: %d"
@@ -577,6 +464,14 @@ msgstr "Varování: PoÄet dní do vyprÅ¡ení hesla: %d"
msgid "NIS password could not be changed."
msgstr "NIS heslo se nepodařilo změnit."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Heslo nebylo zadáno."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Heslo nebylo změněno."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Musíte zvolit kratší heslo."
@@ -593,3 +488,81 @@ msgstr "Změna hesla pro %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Na zmÄ›nu svého hesla musíte poÄkat déle."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "je stejné jako předcházející"
+
+#~ msgid "memory allocation error"
+#~ msgstr "chyba alokace paměti"
+
+#~ msgid "is a palindrome"
+#~ msgstr "je palindrom"
+
+#~ msgid "case changes only"
+#~ msgstr "pouze mění velikost"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "je příliš podobné předcházejícímu"
+
+#~ msgid "is too simple"
+#~ msgstr "je příliš jednoduché"
+
+#~ msgid "is rotated"
+#~ msgstr "je posunuté"
+
+#~ msgid "not enough character classes"
+#~ msgstr "nemá dostatek různých druhů znaků"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "obsahuje příliš mnoho stejných znaků za sebou"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "obsahuje příliš dlouhou postupnou sekvenci znaků"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "obsahuje v nějaké formě uživatelské jméno"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ŠPATNÉ HESLO: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ÚÄet je doÄasnÄ› uzamÄen (zbývá %ld vteÅ™in)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Chyba autentizace"
+
+#~ msgid "Service error"
+#~ msgstr "Chyba služby"
+
+#~ msgid "Unknown user"
+#~ msgstr "Neznámý uživatel"
+
+#~ msgid "Unknown error"
+#~ msgstr "Neznámá chyba"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Zadána špatná hodnota --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Neznámá volba %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file jmeno_souboru] [--user uzivatelske_jmeno] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Nelze resetovat všechny uživatele nenulově\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Selhání Poslední selhání Od\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f plna-cesta-k-souboru] [--file plna-cesta-k-souboru]\n"
+#~ " [-u uzivatelske-jmeno] [--user uzivatelske-jmeno]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/cy.po b/po/cy.po
index 8b375595..d22b405f 100644
--- a/po/cy.po
+++ b/po/cy.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Welsh (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"11) ? 2 : 3;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,57 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -358,7 +306,7 @@ msgstr[3] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -399,22 +347,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -449,12 +397,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -474,62 +422,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -549,7 +442,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -559,7 +452,7 @@ msgstr[2] ""
msgstr[3] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -568,6 +461,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/da.gmo b/po/da.gmo
index 2f3bca35..10e91b30 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 1b142aac..a9c55164 100644
--- a/po/da.po
+++ b/po/da.po
@@ -6,13 +6,14 @@
# Kris Thomsen <lakristho@gmail.com>, 2009,2012-2013
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# scootergrisen <scootergrisen@gmail.com>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-02 09:40+0000\n"
-"Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Danish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/da/>\n"
"Language: da\n"
@@ -20,23 +21,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0.1\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Tiden er ved at udløbe...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Din tid er desværre gået!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "konversationsfejl (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Adgangskode: "
@@ -216,97 +204,56 @@ msgstr "Programmet skal kalde libpam igen"
msgid "Unknown PAM error"
msgstr "Ukendt PAM-fejl"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "er den samme som den gamle"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "fejl under hukommelsesallokering"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "det staves ens forfra og bagfra"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "kun forskel i store/små bogstaver"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ligner for meget den gamle"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "er for simpel"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "er roteret"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ikke nok tegnklasser"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "indeholder for mange af de samme tegn"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "indeholder en for lang sekvens af monotone tegn"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "indeholder brugernavnet i en eller anden form"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Der er ikke angivet nogen adgangskode."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Tiden er ved at udløbe...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Adgangskoden er ikke blevet ændret."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Din tid er desværre gået!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "DÃ…RLIG ADGANGSKODE: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "konversationsfejl (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s fejlede: afslutningskode %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s fejlede: fangede signal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s fejlede: ukendt status 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"Anvendelse: %s [--dir /sti/til/tally-mappe] [--user brugernavn] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Konto låst på grund af %u fejlende logins."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minut tilbage hvor der kan låses op)"
+msgstr[1] "(%d minutter tilbage hvor der kan låses op)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d minutter tilbage hvor der kan låses op)"
@@ -358,7 +305,7 @@ msgstr[1] "Der var %d fejlende loginforsøg siden sidste succesfulde login."
msgid "There were %d failed login attempts since the last successful login."
msgstr "Der var %d fejlende loginforsøg siden sidste succesfulde login."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Der var for mange logins for '%s'."
@@ -399,22 +346,22 @@ msgstr "Du har gammel e-post i mappe %s."
msgid "You have mail in folder %s."
msgstr "Du har e-post i mappe %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Opretter mappe \"%s\"."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Kunne ikke oprette og initialisere mappe \"%s\"."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Adgangskoden er allerede blevet brugt. Vælg en anden."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Adgangskode er allerede i brug."
@@ -449,12 +396,12 @@ msgstr "Der er ikke et gyldigt sikkerhedskontekst."
msgid "A valid context for %s could not be obtained."
msgstr "Der kunne ikke indhentes et gyldigt kontekst for %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Sikkerhedskontekst %s er blevet tildelt."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Nøgleoprettelseskonteksten %s er blevet tildelt."
@@ -474,65 +421,7 @@ msgstr "pam_set_item() mislykkedes\n"
msgid "login: failure forking: %m"
msgstr "login: fejl ved forgrening: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Kontoen er midlertidigt låst (%ld sekunder tilbage)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Fejl ved godkendelse"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Fejl ved tjeneste"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ukendt bruger"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ukendt fejl"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Der er angivet et forkert tal til --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Ikke genkendt indstilling %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr "%s: [--file rodfilnavn] [--user brugernavn] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Alle brugere kunne ikke nulstilles til ikke-nul\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Fejlende Sidste fejl Fra\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rodfilnavn] [--file rodfilnavn]\n"
-" [-u brugernavn] [--user brugernavn]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Adgang er blevet givet (sidste adgang var for %ld sekunder siden)."
@@ -553,7 +442,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Du skal ændre din adgangskode omgående (adgangskoden er god gammel)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -561,7 +450,7 @@ msgstr[0] "Advarsel: Din adgangskode udløber om %d dag."
msgstr[1] "Advarsel: Din adgangskode udløber om %d dage."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Advarsel: din adgangskode udløber om %d dage."
@@ -570,6 +459,14 @@ msgstr "Advarsel: din adgangskode udløber om %d dage."
msgid "NIS password could not be changed."
msgstr "NIS-adgangskoden kunne ikke ændres."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Der er ikke angivet nogen adgangskode."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Adgangskoden er ikke blevet ændret."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Du skal vælge en kortere adgangskode."
@@ -586,3 +483,80 @@ msgstr "Ændrer adgangskode for %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Du skal vente længere for at ændre din adgangskode."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "er den samme som den gamle"
+
+#~ msgid "memory allocation error"
+#~ msgstr "fejl under hukommelsesallokering"
+
+#~ msgid "is a palindrome"
+#~ msgstr "det staves ens forfra og bagfra"
+
+#~ msgid "case changes only"
+#~ msgstr "kun forskel i store/små bogstaver"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ligner for meget den gamle"
+
+#~ msgid "is too simple"
+#~ msgstr "er for simpel"
+
+#~ msgid "is rotated"
+#~ msgstr "er roteret"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ikke nok tegnklasser"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "indeholder for mange af de samme tegn"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "indeholder en for lang sekvens af monotone tegn"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "indeholder brugernavnet i en eller anden form"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "DÃ…RLIG ADGANGSKODE: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Kontoen er midlertidigt låst (%ld sekunder tilbage)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Fejl ved godkendelse"
+
+#~ msgid "Service error"
+#~ msgstr "Fejl ved tjeneste"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ukendt bruger"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ukendt fejl"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Der er angivet et forkert tal til --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Ikke genkendt indstilling %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rodfilnavn] [--user brugernavn] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Alle brugere kunne ikke nulstilles til ikke-nul\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Fejlende Sidste fejl Fra\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rodfilnavn] [--file rodfilnavn]\n"
+#~ " [-u brugernavn] [--user brugernavn]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/de.gmo b/po/de.gmo
index 97dd4578..c7f56c29 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index ba1d6a97..7fd9459e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5,13 +5,13 @@
# Translators:
# Roman Spirgi <bigant@fedoraproject.org>, 2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-15 23:38+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-21 13:28+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: German <https://translate.fedoraproject.org/projects/linux-"
"pam/master/de/>\n"
@@ -20,23 +20,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.11.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Time läuft ab...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Ihre Zeit ist abgelaufen.\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "fehlerhafte Kommunikation (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Passwort: "
@@ -220,100 +207,60 @@ msgstr "Anwendung muss libpam wieder aufrufen"
msgid "Unknown PAM error"
msgstr "Unbekannter PAM-Fehler"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ist das gleiche wie das Alte"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "Fehler beim Allozieren von Speicher"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ist ein Palindrome"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "nur Änderungen bei der Gross-/Kleinschreibung"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ist dem alten zu ähnlich"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ist zu einfach"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "wurde gedreht"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "nicht genug unterschiedliche Arten von Zeichen"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "das gleiche Zeichen wurde so oft hintereinander verwendet"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "Der gesetzte Wert beinhaltet zu lange monotone Zeichenfolgen"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "enthält den Benutzernamen in irgendeiner Form"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Kein Passwort angegeben."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Zeit läuft ab...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Passwort nicht geändert."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Ihre Zeit ist abgelaufen!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "Schlechtes Passwort: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "fehlerhafte Kommunikation (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s schlug fehl: Fehlercode %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s schlug fehl: Signal %d%s erhalten"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s schlug fehl: Unbekannter Status 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+"Aufruf: %s [--dir /path/to/tally-Verzeichnis] [--user Benutzername] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Das Konto ist wegen %u fehlgeschlagener Anmelde-Versuche gesperrt."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(noch %d Minute zum Entsperren)"
+msgstr[1] "(noch %d Minuten zum Entsperren)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(noch %d Minuten zum Entsperren)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -365,7 +312,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Es gab %d fehlgeschlagene Versuche seit der letzten erfolgreichen Anmeldung."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Zu viele Anmeldungen für '%s'."
@@ -406,22 +353,22 @@ msgstr "Sie haben alte Nachrichten in %s."
msgid "You have mail in folder %s."
msgstr "Sie haben Nachrichten in %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Erstelle Verzeichnis '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Verzeichnis '%s' kann nicht erstellt und initialisiert werden."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Passwort wurde bereits verwendet. Wählen Sie ein anderes aus."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Das gleiche Passwort wurde bereits einmal verwendet."
@@ -456,12 +403,12 @@ msgstr "Kein gültiger Sicherheitskontext."
msgid "A valid context for %s could not be obtained."
msgstr "Unfähig einen gültigen Kontext zu erhalten für %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Sicherheitskontext %s zugewiesen."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Schlüssel-Erzeugungskontext %s zugeordnet."
@@ -481,67 +428,7 @@ msgstr "Fehler bei pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "Anmeldung: Fehler bei Abspaltung: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Konto temporär gesperrt (noch %ld Sekunden)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Authentifizierungsfehler"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Dienstfehler"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Unbekannter Benutzer"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Unbekannter Fehler"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Ungültige Nummer für --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Nicht erkannte Option: %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: Es können nicht alle Benutzer auf Nicht-null zurückgesetzt werden\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Account Fehler Letzter Versuch Von\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Zugriff erlaubt (letzter Zugriff war vor %ld Sekunden)."
@@ -561,7 +448,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Sie müssen Ihr Passwort sofort ändern (Passwortablauf)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -569,7 +456,7 @@ msgstr[0] "Warnung: Ihr Passwort läuft in %d Tag ab."
msgstr[1] "Warnung: Ihr Passwort läuft in %d Tagen ab."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Warnung: Ihr Passwort läuft in %d Tagen ab."
@@ -578,6 +465,14 @@ msgstr "Warnung: Ihr Passwort läuft in %d Tagen ab."
msgid "NIS password could not be changed."
msgstr "Änderung des NIS-Passworts nicht möglich."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Kein Passwort angegeben."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Passwort nicht geändert."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Sie müssen ein kürzeres Passwort wählen."
@@ -594,3 +489,82 @@ msgstr "Ändern des Passworts für %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Sie können Ihr Passwort noch nicht ändern."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ist das gleiche wie das Alte"
+
+#~ msgid "memory allocation error"
+#~ msgstr "Fehler beim Allozieren von Speicher"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ist ein Palindrome"
+
+#~ msgid "case changes only"
+#~ msgstr "nur Änderungen bei der Gross-/Kleinschreibung"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ist dem alten zu ähnlich"
+
+#~ msgid "is too simple"
+#~ msgstr "ist zu einfach"
+
+#~ msgid "is rotated"
+#~ msgstr "wurde gedreht"
+
+#~ msgid "not enough character classes"
+#~ msgstr "nicht genug unterschiedliche Arten von Zeichen"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "das gleiche Zeichen wurde so oft hintereinander verwendet"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "Der gesetzte Wert beinhaltet zu lange monotone Zeichenfolgen"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "enthält den Benutzernamen in irgendeiner Form"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "Schlechtes Passwort: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Konto temporär gesperrt (noch %ld Sekunden)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Authentifizierungsfehler"
+
+#~ msgid "Service error"
+#~ msgstr "Dienstfehler"
+
+#~ msgid "Unknown user"
+#~ msgstr "Unbekannter Benutzer"
+
+#~ msgid "Unknown error"
+#~ msgstr "Unbekannter Fehler"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Ungültige Nummer für --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Nicht erkannte Option: %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file verwurzelter-Dateiname] [--user Benutzername] [--reset[=n]] "
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: Es können nicht alle Benutzer auf Nicht-null zurückgesetzt werden\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Account Fehler Letzter Versuch Von\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/de_CH.po b/po/de_CH.po
index 60656754..fefc8515 100644
--- a/po/de_CH.po
+++ b/po/de_CH.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/el.po b/po/el.po
index cabc80b4..0a498838 100644
--- a/po/el.po
+++ b/po/el.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek <trans-el@lists.fedoraproject.org>\n"
@@ -19,21 +19,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -213,96 +200,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +300,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +341,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +391,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +416,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,7 +436,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -553,7 +444,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -562,6 +453,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/eo.gmo b/po/eo.gmo
index bee23e88..5552ceb3 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index a8da4b66..a47e9be7 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -4,99 +4,87 @@
#
# Translators:
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Carmen Bianca Bakker <carmen@carmenbianca.eu>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2011-11-30 06:56-0500\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/fedora/"
-"language/eo/)\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-02-05 00:40+0000\n"
+"Last-Translator: Carmen Bianca Bakker <carmen@carmenbianca.eu>\n"
+"Language-Team: Esperanto <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/eo/>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Zanata 3.8.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.4.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr ""
+msgstr "Pasvorto: "
#: libpam/pam_get_authtok.c:41
#, c-format
msgid "Current %s password: "
-msgstr ""
+msgstr "Aktuala %s pasvorto: "
#: libpam/pam_get_authtok.c:42
msgid "Current password: "
-msgstr ""
+msgstr "Aktuala pasvorto: "
#: libpam/pam_get_authtok.c:44
#, c-format
msgid "New %s password: "
-msgstr ""
+msgstr "Nova %s pasvorto: "
#: libpam/pam_get_authtok.c:45
msgid "New password: "
-msgstr ""
+msgstr "Nova pasvorto: "
#: libpam/pam_get_authtok.c:47
#, c-format
msgid "Retype new %s password: "
-msgstr ""
+msgstr "Retajpu novan %s pasvorton: "
#: libpam/pam_get_authtok.c:48
msgid "Retype new password: "
-msgstr ""
+msgstr "Retajpu novan pasvorton: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
-msgstr ""
+msgstr "Pardonon, la pasvortoj ne kongruas."
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
msgid "Retype %s"
-msgstr ""
+msgstr "Retajpu %s"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
msgid "Password change has been aborted."
-msgstr ""
+msgstr "PasvortoÅanÄo ĉesis."
#: libpam/pam_item.c:311
msgid "login:"
-msgstr ""
+msgstr "saluto:"
#: libpam/pam_strerror.c:40
msgid "Success"
-msgstr ""
+msgstr "Sukceso"
#: libpam/pam_strerror.c:42
msgid "Critical error - immediate abort"
-msgstr ""
+msgstr "Kritika eraro - tuja ĉeso"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
-msgstr ""
+msgstr "Malsukcesis Åargi modulon"
#: libpam/pam_strerror.c:46
msgid "Symbol not found"
-msgstr ""
+msgstr "Ne trovis simbolon"
#: libpam/pam_strerror.c:48
msgid "Error in service module"
@@ -104,7 +92,7 @@ msgstr ""
#: libpam/pam_strerror.c:50
msgid "System error"
-msgstr ""
+msgstr "Sistema eraro"
#: libpam/pam_strerror.c:52
msgid "Memory buffer error"
@@ -112,15 +100,15 @@ msgstr ""
#: libpam/pam_strerror.c:54
msgid "Permission denied"
-msgstr ""
+msgstr "Permeso rifuzita"
#: libpam/pam_strerror.c:56
msgid "Authentication failure"
-msgstr ""
+msgstr "AÅ­tentiga malsukceso"
#: libpam/pam_strerror.c:58
msgid "Insufficient credentials to access authentication data"
-msgstr ""
+msgstr "Nesufiĉaj salutiloj por atingi aŭtentigajn datumojn"
#: libpam/pam_strerror.c:60
msgid "Authentication service cannot retrieve authentication info"
@@ -212,208 +200,167 @@ msgstr ""
#: libpam/pam_strerror.c:105
msgid "Unknown PAM error"
-msgstr ""
+msgstr "Nekonata PAM-eraro"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(restas %d minutoj por malÅlosi)"
+msgstr[1] "(restas %d minutoj por malÅlosi)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(restas %d minutoj por malÅlosi)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
msgid " %a %b %e %H:%M:%S %Z %Y"
-msgstr ""
+msgstr " %a %e-a de %b %H:%M:%S %Z %Y"
#. TRANSLATORS: " from <host>"
#: modules/pam_lastlog/pam_lastlog.c:327 modules/pam_lastlog/pam_lastlog.c:588
#, c-format
msgid " from %.*s"
-msgstr ""
+msgstr " de %.*s"
#. TRANSLATORS: " on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:339 modules/pam_lastlog/pam_lastlog.c:600
#, c-format
msgid " on %.*s"
-msgstr ""
+msgstr " sur %.*s"
#. TRANSLATORS: "Last login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:349
#, c-format
msgid "Last login:%s%s%s"
-msgstr ""
+msgstr "Lasta saluto: %s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:355
msgid "Welcome to your new account!"
-msgstr ""
+msgstr "Bonvenon al via nova konto!"
#. TRANSLATORS: "Last failed login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:610
#, c-format
msgid "Last failed login:%s%s%s"
-msgstr ""
+msgstr "Lasta malsukcesa saluto: %s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:619 modules/pam_lastlog/pam_lastlog.c:626
#, c-format
msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Estis %d malsukcesa salutprovo ekde la lasta sukcesa saluto."
+msgstr[1] "Estis %d malsukcesaj salutprovoj ekde la lasta sukcesa saluto."
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
-msgstr ""
+msgstr "Estis %d malsukcesaj salutprovoj ekde la lasta sukcesa saluto."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
-msgstr ""
+msgstr "Estis tro multaj salutoj por '%s'."
#: modules/pam_mail/pam_mail.c:289
msgid "You have no mail."
-msgstr ""
+msgstr "Vi ne havas poÅton."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
-msgstr ""
+msgstr "Vi havas novan poÅton."
#: modules/pam_mail/pam_mail.c:295
msgid "You have old mail."
-msgstr ""
+msgstr "Vi havas malnovan poÅton."
#: modules/pam_mail/pam_mail.c:299
msgid "You have mail."
-msgstr ""
+msgstr "Vi havas poÅton."
#: modules/pam_mail/pam_mail.c:306
#, c-format
msgid "You have no mail in folder %s."
-msgstr ""
+msgstr "Vi havas neniun poÅton en dosierujo %s."
#: modules/pam_mail/pam_mail.c:310
#, c-format
msgid "You have new mail in folder %s."
-msgstr ""
+msgstr "Vi havas novan poÅton en dosierujo %s."
#: modules/pam_mail/pam_mail.c:314
#, c-format
msgid "You have old mail in folder %s."
-msgstr ""
+msgstr "Vi havas malnovan poÅton en dosierujo %s."
#: modules/pam_mail/pam_mail.c:319
#, c-format
msgid "You have mail in folder %s."
-msgstr ""
+msgstr "Vi havas poÅton en dosierujo %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr ""
+msgstr "Kreante dosierujon '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
-msgstr ""
+msgstr "Pasvorto jam uzita. Elektu alian."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
-msgstr ""
+msgstr "Pasvorto jam uzita."
#: modules/pam_selinux/pam_selinux.c:172
#, c-format
@@ -446,12 +393,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +418,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +438,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +446,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,15 +455,21 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
-#, fuzzy
msgid "You must choose a shorter password."
msgstr "Vi devas elekti pli mallongan pasvorton."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "Vi devas elekti pli mallongan pasvorton."
+msgstr "Vi devas elekti pli longan pasvorton."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
@@ -579,6 +477,5 @@ msgid "Changing password for %s."
msgstr ""
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "Vi devas elekti pli mallongan pasvorton."
+msgstr ""
diff --git a/po/es.gmo b/po/es.gmo
index d497caad..78cc54f1 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 1b642108..a3245897 100644
--- a/po/es.po
+++ b/po/es.po
@@ -13,13 +13,14 @@
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Dmitry V. Levin <ldv@altlinux.org>, 2020.
# Ãlvaro Castillo <sincorchetes@gmail.com>, 2020.
+# Emilio Herrera <ehespinosa57@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-06 11:40+0000\n"
-"Last-Translator: Ãlvaro Castillo <sincorchetes@gmail.com>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-03-14 19:01+0000\n"
+"Last-Translator: Emilio Herrera <ehespinosa57@gmail.com>\n"
"Language-Team: Spanish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/es/>\n"
"Language: es\n"
@@ -27,23 +28,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0.3\n"
+"X-Generator: Weblate 4.5.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...El tiempo se está agotando...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Lo sentimos, el tiempo se ha agotado.\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversación incorrecta (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Contraseña: "
@@ -226,103 +214,60 @@ msgstr "La aplicación debe llamar a libpam de nuevo"
msgid "Unknown PAM error"
msgstr "Error desconocido de PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "es igual que la antigua"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "error de asignación de memoria"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "es un palíndromo"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "sólo hay cambios de minúsculas y mayúsculas"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "es demasiado similar a la antigua"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "es demasiado sencilla"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "es igual pero al revés"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "no hay suficientes clases de caracteres"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "contiene demasiados carateres iguales consecutivos"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "contiene demasiados carateres iguales consecutivos"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "de alguna manera contiene el nombre del usuario"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "No se ha proporcionado ninguna contraseña"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...El tiempo se está agotando...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "No es posible cambiar la contraseña NIS."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Lo sentimos, el tiempo se ha agotado.\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "CONTRASEÑA INCORRECTA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversación incorrecta (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s fallido: código de salida %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s fallido: señal capturada %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s fallido: estado desconocido 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file nombre de archivo-raíz] [--user nombre de usuario] [--reset[=n]] "
-"[--quiet]\n"
+"Usage: %s [--dir /ruta/al/directorio-de-conteo] [--user nombre-de-usuario] "
+"[--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "La cuenta está bloqueada debido a %u logueo fallidos"
+msgstr "La cuenta está bloqueada debido a %u inicios de sesión fallidos."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minutos restantes para el desbloqueo)"
+msgstr[1] "(%d minutos restantes para el desbloqueo)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d minutos restantes para el desbloqueo)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -372,7 +317,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr "Hubo %d intentos de logueo fallidos desde el último logueo exitoso. "
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Hay demasiados inicios de sesión para \"%s\"."
@@ -414,22 +359,22 @@ msgstr "Tiene correo antiguo en la carpeta %s."
msgid "You have mail in folder %s."
msgstr "Tiene correo en la carpeta %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Creando directorio '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "No se pudo crear e inicializar el directorio '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "La contraseña ya se ha utilizado. Seleccione otra."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "La contraseña ya se ha utilizado. Seleccione otra."
@@ -465,12 +410,12 @@ msgstr "No es un contexto de seguridad válido"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Contexto de seguridad %s asignado"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Contexto de Creación Clave %s Asignado"
@@ -490,69 +435,7 @@ msgstr "error en pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "inicio de sesión: error en horquilla: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "La cuenta está temporalmente bloqueada (%ld segundos restantes)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Error de autenticación"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Error de servicio"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Usuario desconocido"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Error desconocido"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Número incorrecto proporcionado a --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Opción no reconocida %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file nombre de archivo-raíz] [--user nombre de usuario] [--reset[=n]] "
-"[--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: No es posible restaurar a todos los usuarios a un número distinto de "
-"cero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Fallo de Ingresos Ultimo fallo desde\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f nombre-arch-completo] [--file nombre-arch-completo]\n"
-" [-u nombre-de-usuario] [--user nombre-de-usuario]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Acceso permitido (el último acceso fué hace %ld segundos)."
@@ -577,7 +460,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Debe cambiar la contraseña inmediatamente (la contraseña ha caducado)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -585,7 +468,7 @@ msgstr[0] "Advertencia: la contraseña caducará dentro de %d día"
msgstr[1] "Advertencia: la contraseña caducará dentro de %d días"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Advertencia: la contraseña caducará dentro de %d días"
@@ -594,6 +477,16 @@ msgstr "Advertencia: la contraseña caducará dentro de %d días"
msgid "NIS password could not be changed."
msgstr "No es posible cambiar la contraseña NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "No se ha proporcionado ninguna contraseña"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "No es posible cambiar la contraseña NIS."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Debes elegir una contraseña más corta."
@@ -612,3 +505,84 @@ msgstr "Cambiando la contraseña de %s."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Debe esperar más tiempo para cambiar la contraseña"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "es igual que la antigua"
+
+#~ msgid "memory allocation error"
+#~ msgstr "error de asignación de memoria"
+
+#~ msgid "is a palindrome"
+#~ msgstr "es un palíndromo"
+
+#~ msgid "case changes only"
+#~ msgstr "sólo hay cambios de minúsculas y mayúsculas"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "es demasiado similar a la antigua"
+
+#~ msgid "is too simple"
+#~ msgstr "es demasiado sencilla"
+
+#~ msgid "is rotated"
+#~ msgstr "es igual pero al revés"
+
+#~ msgid "not enough character classes"
+#~ msgstr "no hay suficientes clases de caracteres"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "contiene demasiados carateres iguales consecutivos"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "contiene demasiados carateres iguales consecutivos"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "de alguna manera contiene el nombre del usuario"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "CONTRASEÑA INCORRECTA: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "La cuenta está temporalmente bloqueada (%ld segundos restantes)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Error de autenticación"
+
+#~ msgid "Service error"
+#~ msgstr "Error de servicio"
+
+#~ msgid "Unknown user"
+#~ msgstr "Usuario desconocido"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error desconocido"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Número incorrecto proporcionado a --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Opción no reconocida %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file nombre de archivo-raíz] [--user nombre de usuario] [--"
+#~ "reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: No es posible restaurar a todos los usuarios a un número distinto de "
+#~ "cero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Fallo de Ingresos Ultimo fallo desde\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f nombre-arch-completo] [--file nombre-arch-completo]\n"
+#~ " [-u nombre-de-usuario] [--user nombre-de-usuario]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/et.gmo b/po/et.gmo
index edd152b3..3b8de9a0 100644
--- a/po/et.gmo
+++ b/po/et.gmo
Binary files differ
diff --git a/po/et.po b/po/et.po
index 7e851926..c189a37f 100644
--- a/po/et.po
+++ b/po/et.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-12-02 06:25-0500\n"
"Last-Translator: mihkel <turakas@gmail.com>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Aeg hakkab otsa saama...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Kahjuks on su aeg otsas!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "vigane vestlus (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Parool: "
@@ -217,98 +204,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr "Tundmatu PAM-i viga"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "on sama kui vana"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "on palindroom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "on liiga sarnane vanale"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "on liiga lihtne"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "on roteeruv"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Parooli on juba kasutatud. Vali uus parool."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Aeg hakkab otsa saama...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "Parooli on juba kasutatud. Vali uus parool."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Kahjuks on su aeg otsas!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr ""
+msgid "erroneous conversation (%d)\n"
+msgstr "vigane vestlus (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -360,7 +304,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -402,22 +346,22 @@ msgstr "Sul on vanu poste kaustas %s."
msgid "You have mail in folder %s."
msgstr "Sul on poste kaustas %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "loon kataloogi '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Parooli on juba kasutatud. Vali uus parool."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "Parooli on juba kasutatud. Vali uus parool."
@@ -453,12 +397,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -478,62 +422,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Autentimise viga"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Teenuse viga"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Tundmatu kasutaja"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Tundmatu viga"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -554,7 +443,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -562,7 +451,7 @@ msgstr[0] "Hoiatus: su parool aegub %d päeva pärast"
msgstr[1] "Hoiatus: su parool aegub %d päeva pärast"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Hoiatus: su parool aegub %d päeva pärast"
@@ -571,6 +460,16 @@ msgstr "Hoiatus: su parool aegub %d päeva pärast"
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Parooli on juba kasutatud. Vali uus parool."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "Parooli on juba kasutatud. Vali uus parool."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Peate valima lühema parooli."
@@ -589,3 +488,30 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Sa pead valima pikema parooli"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "on sama kui vana"
+
+#~ msgid "is a palindrome"
+#~ msgstr "on palindroom"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "on liiga sarnane vanale"
+
+#~ msgid "is too simple"
+#~ msgstr "on liiga lihtne"
+
+#~ msgid "is rotated"
+#~ msgstr "on roteeruv"
+
+#~ msgid "Authentication error"
+#~ msgstr "Autentimise viga"
+
+#~ msgid "Service error"
+#~ msgstr "Teenuse viga"
+
+#~ msgid "Unknown user"
+#~ msgstr "Tundmatu kasutaja"
+
+#~ msgid "Unknown error"
+#~ msgstr "Tundmatu viga"
diff --git a/po/eu.gmo b/po/eu.gmo
index ae98e145..97527f7b 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 816dfe96..e21dbd48 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-12-24 08:54-0500\n"
"Last-Translator: Asier Iturralde Sarasola <asier.iturralde@gmail.com>\n"
"Language-Team: Basque (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Pasahitza: "
@@ -216,96 +203,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +303,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +344,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +394,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +419,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Errore ezezaguna"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,7 +439,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -556,7 +447,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -565,6 +456,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -584,3 +483,6 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Pasahitz laburragoa aukeratu behar duzu."
+
+#~ msgid "Unknown error"
+#~ msgstr "Errore ezezaguna"
diff --git a/po/fa.po b/po/fa.po
index 21bf302f..4125be7c 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Persian (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +299,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +340,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +390,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +415,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,14 +435,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -561,6 +451,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/fi.gmo b/po/fi.gmo
index 20e8159c..d04368f1 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index e9d92232..315bb09c 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -10,13 +10,16 @@
# Ville-Pekka Vainio <vpvainio@iki.fi>, 2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2020.
+# Jan Kuparinen <copper_fin@hotmail.com>, 2021.
+# Ricky Tigg <ricky.tigg@gmail.com>, 2021.
+# Dmitry V. Levin <ldv@altlinux.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-19 09:38+0000\n"
-"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Finnish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/fi/>\n"
"Language: fi\n"
@@ -24,23 +27,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.11.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Aika on loppumassa...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Aikasi on loppunut!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "virheellinen keskustelu (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Salasana: "
@@ -86,7 +76,7 @@ msgstr "Salasanan vaihtaminen keskeytettiin."
#: libpam/pam_item.c:311
msgid "login:"
-msgstr "kirjautuminen:"
+msgstr "sisäänkirjautuminen:"
#: libpam/pam_strerror.c:40
msgid "Success"
@@ -158,7 +148,7 @@ msgstr "Tunnistautumispalvelu ei pääse käyttäjän valtuustietoihin"
#: libpam/pam_strerror.c:74
msgid "User credentials expired"
-msgstr "Käyttäjän valtuustiedot vanhentunut"
+msgstr "Käyttäjän valtuustiedot vanhentuneet"
#: libpam/pam_strerror.c:76
msgid "Failure setting user credentials"
@@ -220,102 +210,60 @@ msgstr "Sovelluksen tarvitsee kutsua uudelleen libpam:ia"
msgid "Unknown PAM error"
msgstr "Tuntematon PAM-virhe"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "on sama kuin vanha"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "muistinvarausvirhe"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "on palindromi"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "vain kirjainkoko muutos"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "on liian samankaltainen vanhan kanssa"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "on liian yksinkertainen"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "on kierrätetty"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "liian vähän merkkiluokkia"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "sisältää liian monta samaa merkkiä peräkkäin"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "sisältää liian pitkän yksitoikkoisen merkkijonon"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "sisältää käyttäjätunnuksen jossakin muodossa"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Et antanut salasanaa"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Aika on loppumassa...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Salasanaa ei vaihdettu."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Aikasi on loppunut!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "HUONO SALASANA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "virheellinen keskustelu (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s epäonnistui: loppukoodi %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s epäonnistui: otettiin kiinni signaali %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s epäonnistui: tuntematon tila 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file juurrutettu-tiedostonimi] [--user käyttäjätunnus] [--reset[=n]] "
-"[--quiet]\n"
+"Käyttö:%s: [--dir /polku/missä/tally-hakemisto] [--user käyttäjätunnus] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Käyttäjätili on lukittu %u epäonnistuneen kirjautumisen vuoksi."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minuutti jäljellä avaamiseen)"
+msgstr[1] "(%d minuuttia jäljellä avaamiseen)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d minuuttia jäljellä avaamiseen)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -370,10 +318,10 @@ msgstr ""
"Edellisen onnistuneen kirjautumisen jälkeen kirjautuminen on epäonnistunut "
"%d kertaa."
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
-msgstr "Liian monta kirjautumista '%s'."
+msgstr "Liian monta kirjautumista käyttäjälle '%s'."
#: modules/pam_mail/pam_mail.c:289
msgid "You have no mail."
@@ -411,29 +359,29 @@ msgstr "Sinulla on vanhaa postia kansiossa %s."
msgid "You have mail in folder %s."
msgstr "Sinulla on postia kansiossa %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Luodaan hakemisto â€%sâ€."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Hakemistoa â€%s†ei voida luoda eikä alustaa."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Salasana on jo käytetty. Valitse toinen."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Salasana on jo käytetty."
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "Oletustietoturvaympäristö %s\n"
+msgstr "Oletustietoturvaympäristö on %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
@@ -444,33 +392,32 @@ msgid "role:"
msgstr "rooli:"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "Roolilla %s ei ole oletustyyppiä\n"
+msgstr "Roolilla %s ei ole oletustyyppiä."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
msgstr "taso:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "Ei kelvollinen tietoturvaympäristö"
+msgstr "Ei kelvollinen tietoturvaympäristö."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "Kelvollista sisältöä %s:lle ei pystytty saamaan."
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "Tietoturvaympäristö %s asetettiin"
+msgstr "Tietoturvaympäristö %s asetettiin."
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "Avaimenluontiympäristö %s asetettiin"
+msgstr "Avaimenluontiympäristö %s asetettiin."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -487,67 +434,7 @@ msgstr "pam_set_item() kutsu epäonnistui\n"
msgid "login: failure forking: %m"
msgstr "sisäänkirjautuminen: virhe haarautumisessa: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Käyttäjätili on lukittu tilapäisesti (%ld sekuntia jäljellä)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Tunnistautumisvirhe"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Palveluvirhe"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Tuntematon käyttäjä"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Tuntematon virhe"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Väärä numero annettu valinnalle --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Tunnistamaton valinta %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file juurrutettu-tiedostonimi] [--user käyttäjätunnus] [--reset[=n]] "
-"[--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Ei voida palauttaa kaikkia käyttäjiä ei-nolliksi\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Tunnus Epäonnistuneita Viimeisin Koneelta\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f juurrutettu-tiedostonimi] [--file juurrutettu-tiedostonimi]\n"
-" [-u käyttäjätunnus] [--user käyttäjätunnus]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Pääsy sallittu (edellinen kirjautuminen %ld sekuntia sitten)."
@@ -567,7 +454,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Salasanasi täytyy vaihtaa heti (salasana vanhentunut)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -575,7 +462,7 @@ msgstr[0] "Varoitus: salasanasi vanhentuu %d päivän kuluttua."
msgstr[1] "Varoitus: salasanasi vanhentuu %d päivän kuluttua."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Varoitus: salasanasi vanhentuu %d päivän kuluttua."
@@ -584,6 +471,14 @@ msgstr "Varoitus: salasanasi vanhentuu %d päivän kuluttua."
msgid "NIS password could not be changed."
msgstr "NIS-salasanaa ei voitu vaihtaa."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Et antanut salasanaa."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Salasanaa ei vaihdettu."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Sinun on valittava lyhyempi salasana."
@@ -600,3 +495,81 @@ msgstr "Vaihdetaan käyttäjän %s salasana."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Sinun täytyy odottaa kauemmin vaihtaaksesi salasanasi."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "on sama kuin vanha"
+
+#~ msgid "memory allocation error"
+#~ msgstr "muistinvarausvirhe"
+
+#~ msgid "is a palindrome"
+#~ msgstr "on palindromi"
+
+#~ msgid "case changes only"
+#~ msgstr "vain kirjainkoko muutos"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "on liian samankaltainen vanhan kanssa"
+
+#~ msgid "is too simple"
+#~ msgstr "on liian yksinkertainen"
+
+#~ msgid "is rotated"
+#~ msgstr "on kierrätetty"
+
+#~ msgid "not enough character classes"
+#~ msgstr "liian vähän merkkiluokkia"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "sisältää liian monta samaa merkkiä peräkkäin"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "sisältää liian pitkän yksitoikkoisen merkkijonon"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "sisältää käyttäjätunnuksen jossakin muodossa"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "HUONO SALASANA: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Käyttäjätili on lukittu tilapäisesti (%ld sekuntia jäljellä)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Tunnistautumisvirhe"
+
+#~ msgid "Service error"
+#~ msgstr "Palveluvirhe"
+
+#~ msgid "Unknown user"
+#~ msgstr "Tuntematon käyttäjä"
+
+#~ msgid "Unknown error"
+#~ msgstr "Tuntematon virhe"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Väärä numero annettu valinnalle --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Tunnistamaton valinta %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file juurrutettu-tiedostonimi] [--user käyttäjätunnus] [--"
+#~ "reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Ei voida palauttaa kaikkia käyttäjiä ei-nolliksi\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Tunnus Epäonnistuneita Viimeisin Koneelta\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f juurrutettu-tiedostonimi] [--file juurrutettu-tiedostonimi]\n"
+#~ " [-u käyttäjätunnus] [--user käyttäjätunnus]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/fr.gmo b/po/fr.gmo
index 1792808c..38e112b1 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index bad82cbb..bb105af9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -12,13 +12,14 @@
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Julien Humbert <julroy67@gmail.com>, 2020.
# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Jérôme Fenal <jfenal@free.fr>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-02 09:40+0000\n"
-"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-08-18 09:04+0000\n"
+"Last-Translator: Jérôme Fenal <jfenal@free.fr>\n"
"Language-Team: French <https://translate.fedoraproject.org/projects/linux-"
"pam/master/fr/>\n"
"Language: fr\n"
@@ -26,23 +27,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.0.1\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Temps bientôt écoulé...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Votre temps est épuisé !\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversation erronnée (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Mot de passe : "
@@ -231,84 +219,35 @@ msgstr "L’application doit à nouveau appeler libpam"
msgid "Unknown PAM error"
msgstr "Erreur PAM inconnue"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "est identique à l’ancien"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "erreur d’allocation de mémoire"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "est un palindrome"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "changement de casse uniquement"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ressemble trop à l’ancien"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "est trop simple"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "est inversé"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "les caractères utilisés ne sont pas suffisamment variés"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "contient trop de caractères consécutifs identiques"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "contient trop de caractères consécutifs identiques"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "contient le nom d’utilisateur d’une certaine manière"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Aucun mot de passe n’a été fourni."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Temps bientôt écoulé...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Le mot de passe n’a pas été modifié."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Votre temps est épuisé !\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "MOT DE PASSE INCORRECT : %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversation erronnée (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s échec : code de sortie %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s échec : signal capté %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s échec : statut 0x inconnu%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -316,13 +255,21 @@ msgstr ""
"Utilisation : %s [--dir /chemin/vers/dossier-tally] [--user nom "
"d’utilisateur] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Le compte est temporairement verrouillé dû aux %u connexions échouées."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minute restante pour déverrouiller)"
+msgstr[1] "(%d minutes restantes pour déverrouiller)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d minutes restantes pour déverrouiller)"
@@ -380,7 +327,7 @@ msgstr ""
"Il y a eu %d tentatives de connexion échouées depuis la dernière connexion "
"réussie."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Trop de connexions pour « %s »."
@@ -421,22 +368,22 @@ msgstr "Vous avez un ancien message dans le dossier %s."
msgid "You have mail in folder %s."
msgstr "Vous avez des messages dans le dossier %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Création du répertoire « %s »."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Impossible de créer et d’initialiser le répertoire « %s »."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Mot de passe déjà utilisé. Choisissez-en un autre."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Mot de passe déjà utilisé."
@@ -471,12 +418,12 @@ msgstr "Ceci n’est pas un contexte de sécurité valide."
msgid "A valid context for %s could not be obtained."
msgstr "Impossible d’obtenir un contexte valide pour %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Le contexte de sécurité %s a été attribué."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Le contexte de création de clés %s a été attribué."
@@ -496,67 +443,7 @@ msgstr "échec de pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login : échec du clonage : %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Le compte est temporairement verrouillé (%ld secondes restantes)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Erreur d’authentification"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Erreur de service"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Utilisateur inconnu"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Erreur inconnue"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s : Numéro incorrect attribué à --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s : Option non reconnue %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s : [--file chemin du fichier] [--user nom d’utilisateur] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s : Impossible de réinitialiser tous les utilisateurs à non-zéro\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Connexion Échecs Dernier échec De\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s : [-f chemin du fichier] [--file chemin du fichier]\n"
-" [-u nom d’utilisateur] [--user nom d’utilisateur]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "L’accès a été accordé (dernier accès il y a %ld secondes)."
@@ -580,7 +467,7 @@ msgid ""
msgstr ""
"Vous devez changer votre mot de passe immédiatement (mot de passe expiré)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -588,7 +475,7 @@ msgstr[0] "Attention : votre mot de passe expirera dans %d jour."
msgstr[1] "Attention : votre mot de passe expirera dans %d jours."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Attention : votre mot de passe expirera dans %d jours."
@@ -597,6 +484,14 @@ msgstr "Attention : votre mot de passe expirera dans %d jours."
msgid "NIS password could not be changed."
msgstr "Le mot de passe NIS n’a pas pu être changé."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Aucun mot de passe n’a été fourni."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Le mot de passe n’a pas été modifié."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Vous devez choisir un mot de passe plus court."
@@ -615,3 +510,81 @@ msgid "You must wait longer to change your password."
msgstr ""
"Vous devez attendre plus longtemps afin de pouvoir changer votre mot de "
"passe."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "est identique à l’ancien"
+
+#~ msgid "memory allocation error"
+#~ msgstr "erreur d’allocation de mémoire"
+
+#~ msgid "is a palindrome"
+#~ msgstr "est un palindrome"
+
+#~ msgid "case changes only"
+#~ msgstr "changement de casse uniquement"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ressemble trop à l’ancien"
+
+#~ msgid "is too simple"
+#~ msgstr "est trop simple"
+
+#~ msgid "is rotated"
+#~ msgstr "est inversé"
+
+#~ msgid "not enough character classes"
+#~ msgstr "les caractères utilisés ne sont pas suffisamment variés"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "contient trop de caractères consécutifs identiques"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "contient trop de caractères consécutifs identiques"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "contient le nom d’utilisateur d’une certaine manière"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "MOT DE PASSE INCORRECT : %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Le compte est temporairement verrouillé (%ld secondes restantes)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Erreur d’authentification"
+
+#~ msgid "Service error"
+#~ msgstr "Erreur de service"
+
+#~ msgid "Unknown user"
+#~ msgstr "Utilisateur inconnu"
+
+#~ msgid "Unknown error"
+#~ msgstr "Erreur inconnue"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s : Numéro incorrect attribué à --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s : Option non reconnue %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s : [--file chemin du fichier] [--user nom d’utilisateur] [--reset[=n]] "
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s : Impossible de réinitialiser tous les utilisateurs à non-zéro\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Connexion Échecs Dernier échec De\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s : [-f chemin du fichier] [--file chemin du fichier]\n"
+#~ " [-u nom d’utilisateur] [--user nom d’utilisateur]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ga.gmo b/po/ga.gmo
index 97017df3..36924913 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 17cdf489..c4bc3632 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-09-10 02:14-0400\n"
"Last-Translator: leftmostcat <leftmostcat@gmail.com>\n"
"Language-Team: Irish (http://www.transifex.com/projects/p/fedora/language/"
@@ -23,21 +23,8 @@ msgstr ""
"4);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Tá am ag imeacht...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Tá brón orm, tá do chuid ama imithe!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "comhrá earráideach (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Focal faire: "
@@ -223,86 +210,35 @@ msgstr "Ní mór don fheidhmchlár libpam a ghlaoch arís"
msgid "Unknown PAM error"
msgstr "Earráid PAM anaithnid"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "tá sé díreach cosúil leis an seancheann"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "earráid dála chuimhne"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "is palandróm é"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "athruithe cáis amháin"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "tá sé ró-chosúil leis an seancheann"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "tá sé ró-shimplí"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "tá sé rothlaithe"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "níl go leor aicmí carachtar ann"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "tá an iomarca carachtar céanna ann go leantach"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "tá seicheamh carachtar aontonach ró-fhada ann"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "tá an t-ainm úsáideora ann i bhfoirm éigin"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Níor soláthraíodh aon fhocal faire"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Tá am ag imeacht...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "Níorbh fhéidir focal faire NIS a athrú."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Tá brón orm, tá do chuid ama imithe!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "DROCHFHOCAL FAIRE: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "comhrá earráideach (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "Theip %s: cód scortha %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "Theip %s: fuarthas comhartha %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "Theip %s: stádas anaithnid 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -310,13 +246,24 @@ msgstr ""
"%s: [--file ainm-comhad-le-fréamh] [--user úsáideoir] [--reset[=u]]\n"
"[--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Cuireadh an cuntas faoi ghlas mar gheall ar %u logáil isteach teipthe"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -383,7 +330,7 @@ msgstr ""
"Bhí %d iarracht logála isteach teipthe ann ón logáil isteach is déanaí a\n"
"d'éirigh leis."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "An iomarca logálacha isteach do '%s'."
@@ -425,22 +372,22 @@ msgstr "Tá seanphost agat i bhfillteán %s."
msgid "You have mail in folder %s."
msgstr "Tá post agat i bhfillteán %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Comhadlann '%s' á cruthú."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ní féidir comhadlann '%s' a chruthú agus a thúsú."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Úsáidtear an focal faire cheana. Roghnaigh ceann eile."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Úsáidtear an focal faire cheana."
@@ -476,12 +423,12 @@ msgstr "Ní comhthéacs bailí slándála é"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Sannadh Comhthéacs Slándála %s"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Sannadh Comhthéacs Chruthú Eochracha %s"
@@ -501,67 +448,7 @@ msgstr "theip ar pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "logáil isteach: theip ar dhéanamh foirc: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Cuireadh an cuntas faoi ghlas go sealadach (%ld soicind fágtha)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Earráid fhíordheimhnithe"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Earráid seirbhíse"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Úsáideoir anaithnid"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Earráid anaithnid"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Tugadh drochuimhir do --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Rogha anaithnid %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file ainm-comhad-le-fréamh] [--user úsáideoir] [--reset[=u]]\n"
-"[--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Ní féidir gach úsáideoir a athrú go neamhnialasach\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Logáil isteach Teipeanna Teip is déanaí Ó\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f ainm-comhad-le-fréamh] [--file ainm-comhad-le-fréamh]\n"
-" [-u úsáideoir] [--user úsáideoir]\n"
-" [-r] [--reset[=u]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Bronnadh rochtain (bhí an rochtain is déanaí %ld soicind ó shin)."
@@ -587,7 +474,7 @@ msgid ""
msgstr ""
"Ní mór duit d'fhocal faire a athrú láithreach (chuaigh focal faire in aos)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -598,7 +485,7 @@ msgstr[3] "Rabhadh: rachaidh d'fhocal faire as feidhm i gceann %d lá"
msgstr[4] "Rabhadh: rachaidh d'fhocal faire as feidhm i gceann %d lá"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Rabhadh: rachaidh d'fhocal faire as feidhm i gceann %d lá"
@@ -607,6 +494,16 @@ msgstr "Rabhadh: rachaidh d'fhocal faire as feidhm i gceann %d lá"
msgid "NIS password could not be changed."
msgstr "Níorbh fhéidir focal faire NIS a athrú."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Níor soláthraíodh aon fhocal faire"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "Níorbh fhéidir focal faire NIS a athrú."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Ní mór duit pasfhocal níos giorra a roghnú."
@@ -625,3 +522,82 @@ msgstr "Focal faire %s á athrú."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Caithfidh tú fanacht níos faide chun d'fhocal faire a athrú"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "tá sé díreach cosúil leis an seancheann"
+
+#~ msgid "memory allocation error"
+#~ msgstr "earráid dála chuimhne"
+
+#~ msgid "is a palindrome"
+#~ msgstr "is palandróm é"
+
+#~ msgid "case changes only"
+#~ msgstr "athruithe cáis amháin"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "tá sé ró-chosúil leis an seancheann"
+
+#~ msgid "is too simple"
+#~ msgstr "tá sé ró-shimplí"
+
+#~ msgid "is rotated"
+#~ msgstr "tá sé rothlaithe"
+
+#~ msgid "not enough character classes"
+#~ msgstr "níl go leor aicmí carachtar ann"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "tá an iomarca carachtar céanna ann go leantach"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "tá seicheamh carachtar aontonach ró-fhada ann"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "tá an t-ainm úsáideora ann i bhfoirm éigin"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "DROCHFHOCAL FAIRE: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Cuireadh an cuntas faoi ghlas go sealadach (%ld soicind fágtha)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Earráid fhíordheimhnithe"
+
+#~ msgid "Service error"
+#~ msgstr "Earráid seirbhíse"
+
+#~ msgid "Unknown user"
+#~ msgstr "Úsáideoir anaithnid"
+
+#~ msgid "Unknown error"
+#~ msgstr "Earráid anaithnid"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Tugadh drochuimhir do --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Rogha anaithnid %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file ainm-comhad-le-fréamh] [--user úsáideoir] [--reset[=u]]\n"
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Ní féidir gach úsáideoir a athrú go neamhnialasach\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Logáil isteach Teipeanna Teip is déanaí Ó\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f ainm-comhad-le-fréamh] [--file ainm-comhad-le-fréamh]\n"
+#~ " [-u úsáideoir] [--user úsáideoir]\n"
+#~ " [-r] [--reset[=u]] [--quiet]\n"
diff --git a/po/gl.po b/po/gl.po
index 04d45bfb..66b62600 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Galician (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/gu.gmo b/po/gu.gmo
index 2ceada0c..97a493f4 100644
--- a/po/gu.gmo
+++ b/po/gu.gmo
Binary files differ
diff --git a/po/gu.po b/po/gu.po
index b1b1fb12..b7480c0c 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-14 08:16-0400\n"
"Last-Translator: sweta <swkothar@redhat.com>\n"
"Language-Team: Gujarati <trans-gu@lists.fedoraproject.org>\n"
@@ -23,21 +23,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...સમય ચાલà«àª¯à«‹ જઈ રહà«àª¯à«‹ છે...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...માફ કરજો, તમારો સમય સમાપà«àª¤ થયો!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "કà«àª·àª¤àª¿àª¯à«àª•à«àª¤ વારà«àª¤àª¾àª²àª¾àªª (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "પાસવરà«àª¡: "
@@ -219,99 +206,56 @@ msgstr "કારà«àª¯àª•à«àª°àª®àª¨à«‡ libpam ફરીથી બોલાવ
msgid "Unknown PAM error"
msgstr "અજà«àªžàª¾àª¤ PAM ભૂલ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ઠજૂના જેવો જ છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "મેમરી ફાળવણી ભૂલ"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ઠપેલીનà«àª¡à«àª°à«‹àª® છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "કેસ ફેરફાર માતà«àª°"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ઠજૂના સાથે àªàª•àª¦àª® સરખો છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ઠખૂબ સાદો છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ઠફેરવાયેલ છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "પૂરતા અકà«àª·àª° વરà«àª—à«‹ નથી"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "àªàª•àªªàª›à«€ àªàª• ઘણા બધા સરખા અકà«àª·àª°à«‹àª¨à«‡ સમાવે છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "મૉનોટોનિક અકà«àª·àª° કà«àª°àª® ઘણો લાંબો સમાવે છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "અમà«àª• ફોરà«àª®àª®àª¾àª‚ વપરાશકરà«àª¤àª¾ નામ ને સમાવે છે"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "કોઈ પાસવરà«àª¡ પૂરો પડાયેલ નથી"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...સમય ચાલà«àª¯à«‹ જઈ રહà«àª¯à«‹ છે...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS પાસવરà«àª¡ બદલી શકà«àª¯àª¾ નહિં."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...માફ કરજો, તમારો સમય સમાપà«àª¤ થયો!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ખરાબ પાસવરà«àª¡: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "કà«àª·àª¤àª¿àª¯à«àª•à«àª¤ વારà«àª¤àª¾àª²àª¾àªª (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s નિષà«àª«àª³: બહાર નીકળà«àª¯àª¾àª¨à«‹ કોડ %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s નિષà«àª«àª³: મળેલ સંકેત %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s નિષà«àª«àª³: અજà«àªžàª¾àª¤ પરિસà«àª¥àª¿àª¤àª¿ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u પà«àª°àªµà«‡àª¶à«‹ ને નિષà«àª«àª³ કરે છે તે દરમà«àª¯àª¾àª¨ ખાતાને તાળૠમારેલ છે"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -363,7 +307,7 @@ msgstr[1] "છેલà«àª²à«‡ સફળ પà«àª°àªµà«‡àª¶ સà«àª§à«€ પà«àª
msgid "There were %d failed login attempts since the last successful login."
msgstr "છેલà«àª²à«‡ સફળ પà«àª°àªµà«‡àª¶ સà«àª§à«€ પà«àª°àªµà«‡àª¶àª¨àª¾àª‚ પà«àª°àª¯àª¤à«àª¨à«‹ કરવામાં %d નિષà«àª«àª³ થયેલ હતà«."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' માટે ઘણા બધા પà«àª°àªµà«‡àª¶à«‹."
@@ -405,22 +349,22 @@ msgstr "તમારી પાસે ફોલà«àª¡àª° %s માં જૂનà«
msgid "You have mail in folder %s."
msgstr "તમારી પાસે ફોલà«àª¡àª° %s માં મેઈલ છે."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "ડિરેકà«àªŸàª°à«€ '%s' બનાવી રહà«àª¯àª¾ છીàª."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ડિરેકà«àªŸàª°à«€ '%s' ને શરૂ કરવામાં અને બનાવવામાં અસમરà«àª¥."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "પાસવરà«àª¡ પહેલાથી જ વપરાઈ ગયેલ છે. બીજો પસંદ કરો."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "પાસવરà«àª¡àª¨à«‡ વાપરી દેવામાં આવà«àª¯à«‹ છે."
@@ -456,12 +400,12 @@ msgstr "માનà«àª¯ સà«àª°àª•à«àª·àª¾ સંદરà«àª­ નથી"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "સà«àª°àª•à«àª·àª¾ સંદરà«àª­ %s સોંપાયેલ"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "કી બનાવટ સંદરà«àª­ %s સોંપાયેલ"
@@ -481,66 +425,7 @@ msgstr "pam_set_item() કરવામાં નિષà«àª«àª³\n"
msgid "login: failure forking: %m"
msgstr "પà«àª°àªµà«‡àª¶: ફોરà«àª•àª®àª¾àª‚ નિષà«àª«àª³: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ખાતૠથોડા વખત માટે તાળૠમારેલ છે (%ld સેકંડો ડાબે)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "સતà«àª¤àª¾àª§àª¿àª•àª°àª£ ભૂલ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "સેવા ભૂલ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "અજà«àªžàª¾àª¤ વપરાશકરà«àª¤àª¾"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "અજà«àªžàª¾àª¤ ભૂલ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= ને ખોટો નંબર અપાયેલ છે\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: નહિં ઓળખાતો વિકલà«àªª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: બધા વપરાશકરà«àª¤àª¾àª“ને બિન-શૂનà«àª¯àª®àª¾àª‚ પà«àª¨àªƒàª¸à«àª¯à«‹àªœàª¿àª¤ કરી શકતા નથી\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "પà«àª°àªµà«‡àª¶ ઠતે માંથી તાજેતરની નિષà«àª«àª³àª¤àª¾àª¨à«‡ નિષà«àª«àª³ કરે છે\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "પà«àª°àªµà«‡àª¶àª¨à«€ મંજૂરી આપેલ છે (છેલà«àª²à«‹ પà«àª°àªµà«‡àª¶ ઠ%ld સેકંડો પહેલા હતો)."
@@ -563,7 +448,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "તમારે તમારો પાસવરà«àª¡ તà«àª°àª‚ત જ બદલવાની જરૂર છે (પાસવરà«àª¡ વયમરà«àª¯àª¾àª¦àª¿àª¤ કરાયેલ)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -571,7 +456,7 @@ msgstr[0] "ચેતવણી: તમારો પાસવરà«àª¡ %d દિàª
msgstr[1] "ચેતવણી: તમારો પાસવરà«àª¡ %d દિવસોમાં નિવૃતà«àª¤ થઈ જશે"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "ચેતવણી: તમારો પાસવરà«àª¡ %d દિવસોમાં નિવૃતà«àª¤ થઈ જશે"
@@ -580,6 +465,16 @@ msgstr "ચેતવણી: તમારો પાસવરà«àª¡ %d દિવàª
msgid "NIS password could not be changed."
msgstr "NIS પાસવરà«àª¡ બદલી શકà«àª¯àª¾ નહિં."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "કોઈ પાસવરà«àª¡ પૂરો પડાયેલ નથી"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS પાસવરà«àª¡ બદલી શકà«àª¯àª¾ નહિં."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "તમારે ટૂંકા પાસવરà«àª¡àª¨à«‡ પસંદ કરવો આવશà«àª¯àª• છે."
@@ -598,3 +493,81 @@ msgstr "%s માટે પાસવરà«àª¡ બદલવાનà«àª‚."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "તમારો પાસવરà«àª¡ બદલવા માટે તમારે લાંબો સમય રાહ જોવી જ પડશે"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ઠજૂના જેવો જ છે"
+
+#~ msgid "memory allocation error"
+#~ msgstr "મેમરી ફાળવણી ભૂલ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ઠપેલીનà«àª¡à«àª°à«‹àª® છે"
+
+#~ msgid "case changes only"
+#~ msgstr "કેસ ફેરફાર માતà«àª°"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ઠજૂના સાથે àªàª•àª¦àª® સરખો છે"
+
+#~ msgid "is too simple"
+#~ msgstr "ઠખૂબ સાદો છે"
+
+#~ msgid "is rotated"
+#~ msgstr "ઠફેરવાયેલ છે"
+
+#~ msgid "not enough character classes"
+#~ msgstr "પૂરતા અકà«àª·àª° વરà«àª—à«‹ નથી"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "àªàª•àªªàª›à«€ àªàª• ઘણા બધા સરખા અકà«àª·àª°à«‹àª¨à«‡ સમાવે છે"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "મૉનોટોનિક અકà«àª·àª° કà«àª°àª® ઘણો લાંબો સમાવે છે"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "અમà«àª• ફોરà«àª®àª®àª¾àª‚ વપરાશકરà«àª¤àª¾ નામ ને સમાવે છે"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ખરાબ પાસવરà«àª¡: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ખાતૠથોડા વખત માટે તાળૠમારેલ છે (%ld સેકંડો ડાબે)"
+
+#~ msgid "Authentication error"
+#~ msgstr "સતà«àª¤àª¾àª§àª¿àª•àª°àª£ ભૂલ"
+
+#~ msgid "Service error"
+#~ msgstr "સેવા ભૂલ"
+
+#~ msgid "Unknown user"
+#~ msgstr "અજà«àªžàª¾àª¤ વપરાશકરà«àª¤àª¾"
+
+#~ msgid "Unknown error"
+#~ msgstr "અજà«àªžàª¾àª¤ ભૂલ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= ને ખોટો નંબર અપાયેલ છે\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: નહિં ઓળખાતો વિકલà«àªª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: બધા વપરાશકરà«àª¤àª¾àª“ને બિન-શૂનà«àª¯àª®àª¾àª‚ પà«àª¨àªƒàª¸à«àª¯à«‹àªœàª¿àª¤ કરી શકતા નથી\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "પà«àª°àªµà«‡àª¶ ઠતે માંથી તાજેતરની નિષà«àª«àª³àª¤àª¾àª¨à«‡ નિષà«àª«àª³ કરે છે\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/he.gmo b/po/he.gmo
index a1871312..58240d59 100644
--- a/po/he.gmo
+++ b/po/he.gmo
Binary files differ
diff --git a/po/he.po b/po/he.po
index 9fec5bca..d3a21438 100644
--- a/po/he.po
+++ b/po/he.po
@@ -4,68 +4,55 @@
#
# Translators:
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Yaron Shahrabani <sh.yaron@gmail.com>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2011-11-30 06:57-0500\n"
-"Last-Translator: Tomáš Mráz <tmraz@fedoraproject.org>\n"
-"Language-Team: Hebrew <he-users@lists.fedoraproject.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
+"Language-Team: Hebrew <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/he/>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-"X-Generator: Zanata 3.8.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...הזמן עומד להיגמר...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...מצטער, הזמן נגמר!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ססמה: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "ססמת יוניקס (נוכחית): "
+msgstr "ססמת %s נוכחית: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "ססמת יוניקס (נוכחית): "
+msgstr "ססמה נוכחית: "
#: libpam/pam_get_authtok.c:44
-#, fuzzy, c-format
+#, c-format
msgid "New %s password: "
-msgstr "ססמת יוניקס (נוכחית): "
+msgstr "ססמת %s חדשה: "
#: libpam/pam_get_authtok.c:45
-#, fuzzy
msgid "New password: "
-msgstr "ססמה: "
+msgstr "ססמה חדשה: "
#: libpam/pam_get_authtok.c:47
-#, fuzzy, c-format
+#, c-format
msgid "Retype new %s password: "
-msgstr "הקלד שוב ססמת STRESS חדשה:"
+msgstr "להקליד שוב ססמת %s חדשה: "
#: libpam/pam_get_authtok.c:48
-#, fuzzy
msgid "Retype new password: "
-msgstr "הקלד שוב ססמת STRESS חדשה:"
+msgstr "× × ×œ×”×§×œ×™×“ ססמה חדשה שוב: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
@@ -74,10 +61,9 @@ msgstr "סליחה, הססמ×ות ×œ× ×ª×•×מות."
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
msgid "Retype %s"
-msgstr ""
+msgstr "להקליד ×ת %s מחדש"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
msgstr "שינוי ססמה בוטל."
@@ -95,15 +81,15 @@ msgstr "שגי××” קריטית - ביטול מידי"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
-msgstr ""
+msgstr "טעינת המודול נכשלה"
#: libpam/pam_strerror.c:46
msgid "Symbol not found"
-msgstr ""
+msgstr "הסמל ×œ× × ×ž×¦×"
#: libpam/pam_strerror.c:48
msgid "Error in service module"
-msgstr ""
+msgstr "שגי××” במודול השירות"
#: libpam/pam_strerror.c:50
msgid "System error"
@@ -111,7 +97,7 @@ msgstr "שגי×ת מערכת"
#: libpam/pam_strerror.c:52
msgid "Memory buffer error"
-msgstr ""
+msgstr "שגי×ת ×ž×›×œ× ×–×™×›×¨×•×Ÿ"
#: libpam/pam_strerror.c:54
msgid "Permission denied"
@@ -123,23 +109,23 @@ msgstr "כשל ב×ימות"
#: libpam/pam_strerror.c:58
msgid "Insufficient credentials to access authentication data"
-msgstr ""
+msgstr "×ין מספיק הרש×ות כדי לגשת לנתוני ×”×ימות"
#: libpam/pam_strerror.c:60
msgid "Authentication service cannot retrieve authentication info"
-msgstr ""
+msgstr "שירות ×”×ימות ×œ× ×™×›×•×œ לקבל ×ת פרטי ×”×ימות"
#: libpam/pam_strerror.c:62
msgid "User not known to the underlying authentication module"
-msgstr ""
+msgstr "המשתמש ×œ× ×ž×•×›×¨ למודול ×”×ימות התומך"
#: libpam/pam_strerror.c:64
msgid "Have exhausted maximum number of retries for service"
-msgstr ""
+msgstr "מספר הניסיונות מחדש המרבי נוצל במלו×ו עבור השירות"
#: libpam/pam_strerror.c:66
msgid "Authentication token is no longer valid; new one required"
-msgstr ""
+msgstr "×סימון ×”×ימות ×ינו תקף עוד, נדרש ×חד חדש"
#: libpam/pam_strerror.c:68
msgid "User account has expired"
@@ -147,204 +133,162 @@ msgstr "חשבון משתמש פג"
#: libpam/pam_strerror.c:70
msgid "Cannot make/remove an entry for the specified session"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ ליצור/להסיר רשומה להפעלה שצוינה"
#: libpam/pam_strerror.c:72
msgid "Authentication service cannot retrieve user credentials"
-msgstr ""
+msgstr "שירות ×”×ימות ×œ× ×™×›×•×œ לקבל פרטי גישה של משתמשי×"
#: libpam/pam_strerror.c:74
msgid "User credentials expired"
-msgstr ""
+msgstr "תוקף פרטי הגישה של המשתמש פג"
#: libpam/pam_strerror.c:76
msgid "Failure setting user credentials"
-msgstr ""
+msgstr "הגדרת פרטי הגישה של המשתמש נכשלה"
#: libpam/pam_strerror.c:78
msgid "No module specific data is present"
-msgstr ""
+msgstr "×œ× ×§×™×™×ž×™× × ×ª×•× ×™× ×ž×¡×•×™×ž×™× ×œ×ž×•×“×•×œ"
#: libpam/pam_strerror.c:80
msgid "Bad item passed to pam_*_item()"
-msgstr ""
+msgstr "פריט פסול הועבר ×ל to pam_*_item()‎"
#: libpam/pam_strerror.c:82
msgid "Conversation error"
-msgstr ""
+msgstr "שגי×ת דיון"
#: libpam/pam_strerror.c:84
msgid "Authentication token manipulation error"
-msgstr ""
+msgstr "שגי×ת טיפול ב×סימון ×ימות"
#: libpam/pam_strerror.c:86
msgid "Authentication information cannot be recovered"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לשחזר ×ת פרטי ×”×ימות"
#: libpam/pam_strerror.c:88
msgid "Authentication token lock busy"
-msgstr ""
+msgstr "נעילת ×סימון ×”×ימות עסוקה"
#: libpam/pam_strerror.c:90
msgid "Authentication token aging disabled"
-msgstr ""
+msgstr "התיישנות ×סימון ×ימות מושבתת"
#: libpam/pam_strerror.c:92
msgid "Failed preliminary check by password service"
-msgstr ""
+msgstr "בדיקת ×”×§×“× × ×›×©×œ×” על ידי שירות הססמ×ות"
#: libpam/pam_strerror.c:94
msgid "The return value should be ignored by PAM dispatch"
-msgstr ""
+msgstr "הערך החוזר ×מור לזכות מהתעלמות על ידי שילוח ×”Ö¾PAM"
#: libpam/pam_strerror.c:96
msgid "Module is unknown"
-msgstr ""
+msgstr "המודול ×œ× ×™×“×•×¢"
#: libpam/pam_strerror.c:98
msgid "Authentication token expired"
-msgstr ""
+msgstr "תוקף ×סימון ×”×ימות פג"
#: libpam/pam_strerror.c:100
msgid "Conversation is waiting for event"
-msgstr ""
+msgstr "הדיון ממתין ל×ירוע"
#: libpam/pam_strerror.c:102
msgid "Application needs to call libpam again"
-msgstr ""
+msgstr "×”×™×™×©×•× ×¦×¨×™×š ×œ×§×¨×•× ×œÖ¾libpam שוב"
#: libpam/pam_strerror.c:105
msgid "Unknown PAM error"
msgstr "שגי×ת PAM ×œ× ×ž×•×›×¨×ª"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "זהה לישנה"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "פילנדרו×"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "יותר מדי דומה לישנה"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "פשוטה מדי."
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "×œ× ×¡×•×¤×§×” ססמה"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...הזמן עומד להיגמר...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "×œ× ×”×™×” ניתן לשנות ססמת NIS."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...סליחה, זמנך עבר!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ססמה ×œ× ×˜×•×‘×”: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "דיון שגוי (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
-msgstr ""
+msgstr "%s נכשל: קוד היצי××” %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
-msgstr ""
+msgstr "%s נכשל: נתפס ×”×ות %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
-msgstr ""
+msgstr "%s נכשל: מצב ×œ× ×™×“×•×¢ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
+"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "החשבון ננעל בעקבות %u ניסיונות התחברות שנכשלו"
+msgstr "החשבון ננעל בעקבות %u ניסיונות התחברות שנכשלו."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(נותרו %d דקה לשחרור)"
+msgstr[1] "(נותרו %d דקות לשחרור)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(נותרו %d דקות לשחרור)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
msgid " %a %b %e %H:%M:%S %Z %Y"
-msgstr ""
+msgstr " %a %b %e %H:%M:%S %Z %Y"
#. TRANSLATORS: " from <host>"
#: modules/pam_lastlog/pam_lastlog.c:327 modules/pam_lastlog/pam_lastlog.c:588
#, c-format
msgid " from %.*s"
-msgstr ""
+msgstr " מהמ×רח %.*s"
#. TRANSLATORS: " on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:339 modules/pam_lastlog/pam_lastlog.c:600
#, c-format
msgid " on %.*s"
-msgstr ""
+msgstr " על גבי %.*s"
#. TRANSLATORS: "Last login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:349
#, c-format
msgid "Last login:%s%s%s"
-msgstr ""
+msgstr "כניסה ×חרונה:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:355
msgid "Welcome to your new account!"
-msgstr "ברוך ×”×‘× ×œ×—×©×‘×•× ×š החדש!"
+msgstr "ברוך בו×ך לחשבונך החדש!"
#. TRANSLATORS: "Last failed login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:610
#, c-format
msgid "Last failed login:%s%s%s"
-msgstr ""
+msgstr "כניסה כושלת ×חרונה:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:619 modules/pam_lastlog/pam_lastlog.c:626
#, c-format
@@ -358,17 +302,16 @@ msgstr[1] "היו %d ניסיונות התחברות שנכשלו מ××– ההת×
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
-msgstr ""
+msgstr "היו %d ניסיונות התחברות שנכשלו מ××– ההתחברות ×”×חרונה שהצליחה."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
-msgstr ""
+msgstr "יותר מדי פעילויות כניסה עבור ‚%s’."
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "יש לך דו×ר חדש."
+msgstr "×ין לך דו×ר."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -385,60 +328,59 @@ msgstr "יש לך דו×ר."
#: modules/pam_mail/pam_mail.c:306
#, c-format
msgid "You have no mail in folder %s."
-msgstr ""
+msgstr "×ין לך דו×״ל בתיקייה %s."
#: modules/pam_mail/pam_mail.c:310
#, c-format
msgid "You have new mail in folder %s."
-msgstr ""
+msgstr "יש לך דו×״ל חדש בתיקייה %s."
#: modules/pam_mail/pam_mail.c:314
#, c-format
msgid "You have old mail in folder %s."
-msgstr ""
+msgstr "יש לך דו×״ל ישן בתיקייה %s."
#: modules/pam_mail/pam_mail.c:319
#, c-format
msgid "You have mail in folder %s."
-msgstr ""
+msgstr "יש לך דו×״ל בתיקייה %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr ""
+msgstr "התיקייה ‚%s’ נוצרת."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ ליצור ול×תחל ×ת התיקייה ‚%s’."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
-msgstr ""
+msgstr "כבר נעשה שימוש בססמה. × × ×œ×‘×—×•×¨ ב×חרת."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
-#, fuzzy
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
-msgstr "שינוי ססמה בוטל."
+msgstr "כבר נעשה שימוש בססמה ×”×–×ת."
#: modules/pam_selinux/pam_selinux.c:172
#, c-format
msgid "The default security context is %s."
-msgstr ""
+msgstr "הקשר ×”×בטחה כבררת מחדל ×”×•× %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
-msgstr ""
+msgstr "מעניין ×ותך ×œ×ž×œ× ×ª×¤×§×™×“ ×ו רמה שוני×?"
#: modules/pam_selinux/pam_selinux.c:189
msgid "role:"
-msgstr "תפקיד: "
+msgstr "תפקיד:"
#: modules/pam_selinux/pam_selinux.c:193
#, c-format
msgid "There is no default type for role %s."
-msgstr ""
+msgstr "×ין סוג בררת מחדל לתפקיד %s."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
@@ -446,148 +388,173 @@ msgstr "רמה:"
#: modules/pam_selinux/pam_selinux.c:259
msgid "This is not a valid security context."
-msgstr ""
+msgstr "×–×” ×œ× ×”×§×©×¨ ×בטחה תקני."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לקבל הקשר תקני עבור %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
-msgstr ""
+msgstr "הקשר ×”×בטחה %s הוקצה."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
-msgstr ""
+msgstr "הקשר יצירת המפתח %s הוקצה."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
msgid "failed to initialize PAM\n"
-msgstr ""
+msgstr "×”×תחול של PAM נכשל\n"
#: modules/pam_selinux/pam_selinux_check.c:105
#, c-format
msgid "failed to pam_set_item()\n"
-msgstr ""
+msgstr "pam_set_item()‎ נכשל\n"
#: modules/pam_selinux/pam_selinux_check.c:133
#, c-format
msgid "login: failure forking: %m"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "החשבון נעול זמנית (%ld שניות נותרו)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "שגי×ת ×ימות"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "שגי×ת שירות"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "משתמש ×œ× ×™×“×•×¢"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "שגי××” ×œ× ×ž×•×›×¨×ª"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
+msgstr "כניסה: פיצול נכשל: %m"
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr ""
+msgstr "הוענקה גישה (הכניסה ×”×חרונה הייתה לפני %ld שניות)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
-msgstr "פג תוקף חשבונך; ×× × ×¦×•×¨ קשר ×¢× ×ž× ×”×œ המערכת שלך"
+msgstr "תוקף חשבונך פג, × × ×œ×™×¦×•×¨ קשר ×¢× ×”× ×”×œ×ª המערכת שלך."
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "הנך מחויב לשנות ×ת ססמתך מידית (דרישת מנהל המערכת)"
+msgstr "עליך לשנות ×ת ססמתך מיידית (דרישת הנהלת המערכת)."
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "הנך מחויב לשנות ×ת ססמתך מידית (הססמה התיישנה)"
+msgstr "עליך לשנות ×ת ססמתך מיידית (תוקף הססמה פג)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "×זהרה: הססמה שלך תפוג תוך ×™×•× %d"
-msgstr[1] "×זהרה: הססמה שלך תפוג תוך %d ימי×"
+msgstr[0] "×זהרה: הססמה שלך תפוג מחר."
+msgstr[1] "×זהרה: הססמה שלך תפוג תוך %d ימי×."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "×זהרה: הססמה שלך תפוג תוך %d ימי×"
+msgstr "×זהרה: הססמה שלך תפוג תוך %d ימי×."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "×œ× ×”×™×” ניתן לשנות ססמת NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "×œ× ×¡×•×¤×§×” ססמה."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "הססמה ×œ× ×”×•×—×œ×¤×”."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "עליך לבחור סיסמה קצרה יותר."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "×תה חייב לבחור ססמה ×רוכה יותר"
+msgstr "עליך לבחור ססמה ×רוכה יותר."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
msgid "Changing password for %s."
-msgstr "משנה ססמה עבור %s.â€"
+msgstr "הססמה עבור %s מוחלפת."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "×תה חייב לחכות יותר כדי לשנות ×ת הססמה"
+msgstr "עליך להמתין זמן רב יותר כדי להחליף ×ת ססמתך."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "זהה לישנה"
+
+#~ msgid "memory allocation error"
+#~ msgstr "שגי×ת הקצ×ת זכרון"
+
+#~ msgid "is a palindrome"
+#~ msgstr "פילנדרו×"
+
+#~ msgid "case changes only"
+#~ msgstr "שינויי גודל ×ותיות בלבד"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "יותר מדי דומה לישנה"
+
+#~ msgid "is too simple"
+#~ msgstr "פשוטה מדי"
+
+#~ msgid "is rotated"
+#~ msgstr "×”×× ×©×•× ×” הסדר"
+
+#~ msgid "not enough character classes"
+#~ msgstr "×ין מספיק מחלקות תווי×"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "יותר מדי ×ª×•×•×™× ×–×”×™× ×‘×–×” ×חר ×–×”"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "מכיל רצף ×ª×•×•×™× ×ž×•× ×•×˜×•× ×™ ×רוך מדי"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "מכיל ×ת ×©× ×”×ž×©×ª×ž×© בצורה כלשהי"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ססמה ×œ× ×˜×•×‘×”: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "החשבון נעול זמנית (%ld שניות נותרו)."
+
+#~ msgid "Authentication error"
+#~ msgstr "שגי×ת ×ימות"
+
+#~ msgid "Service error"
+#~ msgstr "שגי×ת שירות"
+
+#~ msgid "Unknown user"
+#~ msgstr "משתמש ×œ× ×™×“×•×¢"
+
+#~ msgid "Unknown error"
+#~ msgstr "שגי××” ×œ× ×ž×•×›×¨×ª"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: המספר שהועבר ל־‎--reset=‎ שגוי\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: ×פשרות ×œ× ×ž×•×›×¨×ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ×ין ×פשרות ל×פס ×ת כל ×”×ž×©×ª×ž×©×™× ×œ×ž×¡×¤×¨ ש×ינו ×פס\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "כניסה ×›×©×œ×™× ×›×©×œ ×חרון מ×ת\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/hi.gmo b/po/hi.gmo
index 6fcd606a..e6cd05db 100644
--- a/po/hi.gmo
+++ b/po/hi.gmo
Binary files differ
diff --git a/po/hi.po b/po/hi.po
index 36a47382..10e8fbd7 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-06 23:59+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Hindi <https://translate.fedoraproject.org/projects/linux-pam/"
@@ -24,21 +24,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 3.11.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...समय समापà¥à¤¤ हो रहा है...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...कà¥à¤·à¤®à¤¾ करें, आपका समय समापà¥à¤¤ हो गया!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "अनियमित बातचीत (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "शबà¥à¤¦à¤•à¥‚ट: "
@@ -220,99 +207,56 @@ msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— के libpam फिर आहà¥à¤µà¤¾à¤¨ à
msgid "Unknown PAM error"
msgstr "अनजान PAM तà¥à¤°à¥à¤Ÿà¤¿"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "पà¥à¤°à¤¾à¤¨à¥‡ की तरह समान है"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "सà¥à¤®à¥ƒà¤¤à¤¿ आबंटन तà¥à¤°à¥à¤Ÿà¤¿"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "à¤à¤• पालिनडà¥à¤°à¥‹à¤® है"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "सà¥à¤¥à¤¿à¤¤à¤¿ परिवरà¥à¤¤à¤¨ सिरà¥à¤«"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "पà¥à¤°à¤¾à¤¨à¥‡ के बहà¥à¤¤ समान है"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "बहà¥à¤¤ सरल है"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "घà¥à¤®à¤¾à¤¯à¤¾ गया है"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "परà¥à¤¯à¤¾à¤ªà¥à¤¤ वरà¥à¤£ वरà¥à¤— नहीं"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "कई समान वरà¥à¤£ लगातार समाहित करता है"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "समान वरà¥à¤£ का लमà¥à¤¬à¤¾ अनà¥à¤•à¥à¤°à¤® समाहित करता है "
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "कà¥à¤› रूप में उपयोकà¥à¤¤à¤¾ नाम समाहित करता है"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "कोई कूटशबà¥à¤¦ नहीं दिया गया है"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...समय समापà¥à¤¤ हो रहा है...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS शबà¥à¤¦à¤•à¥‚ट बदला नहीं जा सका."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...कà¥à¤·à¤®à¤¾ करें, आपका समय समापà¥à¤¤ हो गया!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "खराब शबà¥à¤¦à¤•à¥‚ट: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "अनियमित बातचीत (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s विफल: निकास कोड %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s विफल: संकेत घेरा %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s विफल: अनजान सà¥à¤¥à¤¿à¤¤à¤¿ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "खाता %u विफल लॉगिन के कारण लॉक"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -364,7 +308,7 @@ msgstr[1] "%d विफल लॉगिन पà¥à¤°à¤¯à¤¾à¤¸ थे अंतà¤
msgid "There were %d failed login attempts since the last successful login."
msgstr "%d विफल लॉगिन पà¥à¤°à¤¯à¤¾à¤¸ थे अंतिम सफल लॉगिन के बाद."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' के लिठबहà¥à¤¤ लॉगिन."
@@ -406,22 +350,22 @@ msgstr "आपके लिठ%s फोलà¥à¤¡à¤° में पà¥à¤°à¤¾à¤¨à¤
msgid "You have mail in folder %s."
msgstr "आपके लिठ%s फोलà¥à¤¡à¤° में मेल है."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ '%s' बना रहा है."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾ '%s' बनाने और आरंभ करने में असमरà¥à¤¥."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "शबà¥à¤¦à¤•à¥‚ट को पहले ही बदला जा चà¥à¤•à¤¾ है. दूसरा चà¥à¤¨à¥‡à¤‚."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "शबà¥à¤¦à¤•à¥‚ट पà¥à¤°à¤¯à¥‹à¤— हो चूका है. दूसरा चà¥à¤¨à¥‡à¤‚ "
@@ -457,12 +401,12 @@ msgstr "à¤à¤• वैध सà¥à¤°à¤•à¥à¤·à¤¾ संदरà¥à¤­ नहीं"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "सà¥à¤°à¤•à¥à¤·à¤¾ संदरà¥à¤­ %s नियत"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "कà¥à¤‚जी निरà¥à¤®à¤¾à¤£ संदरà¥à¤­ %s नियत"
@@ -482,66 +426,7 @@ msgstr "pam_set_item() में विफल\n"
msgid "login: failure forking: %m"
msgstr "लॉगिन: विफल फोरà¥à¤•à¤¿à¤‚ग: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "खाता असà¥à¤¥à¤¾à¤¯à¥€ रूप से लॉक (%ld seconds left)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "सतà¥à¤¯à¤¾à¤ªà¤¨ तà¥à¤°à¥à¤Ÿà¤¿"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "सेवा तà¥à¤°à¥à¤Ÿà¤¿"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "अनजान उपयोकà¥à¤¤à¤¾"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "अनजान तà¥à¤°à¥à¤Ÿà¤¿"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: खराब संखà¥à¤¯à¤¾ को --reset= में दिया गया\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: अपरिचित विकलà¥à¤ª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: सभी उपयोकà¥à¤¤à¤¾ को गैर शूनà¥à¤¯ में फिर सेट नहीं कर सकता है\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Failures Latest failure From\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "पहà¥à¤à¤š दिया गया (last access was %ld seconds ago)."
@@ -564,7 +449,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "आपके लिठअपना शबà¥à¤¦à¤•à¥‚ट ततà¥à¤•à¤¾à¤² बदलना जरूरी है (शबà¥à¤¦à¤•à¥‚ट à¤à¤œà¥à¤¡)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -572,7 +457,7 @@ msgstr[0] "चेतावनी: आपका शबà¥à¤¦à¤•à¥‚ट %d दिà¤
msgstr[1] "चेतावनी: आपका शबà¥à¤¦à¤•à¥‚ट %d दिन में समापà¥à¤¤ हो जायेगा"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "चेतावनी: आपका शबà¥à¤¦à¤•à¥‚ट %d दिनों में समापà¥à¤¤ हो जायेगा"
@@ -581,6 +466,16 @@ msgstr "चेतावनी: आपका शबà¥à¤¦à¤•à¥‚ट %d दिनà¥
msgid "NIS password could not be changed."
msgstr "NIS शबà¥à¤¦à¤•à¥‚ट बदला नहीं जा सका."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "कोई कूटशबà¥à¤¦ नहीं दिया गया है"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS शबà¥à¤¦à¤•à¥‚ट बदला नहीं जा सका."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "आपको à¤à¤• छोटा पासवरà¥à¤¡ चà¥à¤¨à¤¨à¤¾ होगा।"
@@ -599,3 +494,81 @@ msgstr "%s के लिठकूटशबà¥à¤¦ बदल रहा है"
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "आपको अपना शबà¥à¤¦à¤•à¥‚ट बदलने के लिठलंबी पà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¾ करनी होगी"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "पà¥à¤°à¤¾à¤¨à¥‡ की तरह समान है"
+
+#~ msgid "memory allocation error"
+#~ msgstr "सà¥à¤®à¥ƒà¤¤à¤¿ आबंटन तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "is a palindrome"
+#~ msgstr "à¤à¤• पालिनडà¥à¤°à¥‹à¤® है"
+
+#~ msgid "case changes only"
+#~ msgstr "सà¥à¤¥à¤¿à¤¤à¤¿ परिवरà¥à¤¤à¤¨ सिरà¥à¤«"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "पà¥à¤°à¤¾à¤¨à¥‡ के बहà¥à¤¤ समान है"
+
+#~ msgid "is too simple"
+#~ msgstr "बहà¥à¤¤ सरल है"
+
+#~ msgid "is rotated"
+#~ msgstr "घà¥à¤®à¤¾à¤¯à¤¾ गया है"
+
+#~ msgid "not enough character classes"
+#~ msgstr "परà¥à¤¯à¤¾à¤ªà¥à¤¤ वरà¥à¤£ वरà¥à¤— नहीं"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "कई समान वरà¥à¤£ लगातार समाहित करता है"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "समान वरà¥à¤£ का लमà¥à¤¬à¤¾ अनà¥à¤•à¥à¤°à¤® समाहित करता है "
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "कà¥à¤› रूप में उपयोकà¥à¤¤à¤¾ नाम समाहित करता है"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "खराब शबà¥à¤¦à¤•à¥‚ट: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "खाता असà¥à¤¥à¤¾à¤¯à¥€ रूप से लॉक (%ld seconds left)"
+
+#~ msgid "Authentication error"
+#~ msgstr "सतà¥à¤¯à¤¾à¤ªà¤¨ तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "Service error"
+#~ msgstr "सेवा तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "Unknown user"
+#~ msgstr "अनजान उपयोकà¥à¤¤à¤¾"
+
+#~ msgid "Unknown error"
+#~ msgstr "अनजान तà¥à¤°à¥à¤Ÿà¤¿"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: खराब संखà¥à¤¯à¤¾ को --reset= में दिया गया\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: अपरिचित विकलà¥à¤ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: सभी उपयोकà¥à¤¤à¤¾ को गैर शूनà¥à¤¯ में फिर सेट नहीं कर सकता है\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Failures Latest failure From\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/hr.po b/po/hr.po
index 25aac718..575c0165 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Croatian (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,56 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +304,7 @@ msgstr[2] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +345,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +395,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +420,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,7 +440,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -557,7 +449,7 @@ msgstr[1] ""
msgstr[2] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -566,6 +458,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/hu.gmo b/po/hu.gmo
index 00faeebf..16ea34cb 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 017c6aec..c04e34e4 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,13 +9,14 @@
# Zoltan Hoppár <hopparz@gmail.com>, 2012-2013
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Balázs Meskó <meskobalazs@mailbox.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-06 23:59+0000\n"
-"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-02-10 19:40+0000\n"
+"Last-Translator: Balázs Meskó <meskobalazs@mailbox.org>\n"
"Language-Team: Hungarian <https://translate.fedoraproject.org/projects/linux-"
"pam/master/hu/>\n"
"Language: hu\n"
@@ -23,35 +24,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.11.2\n"
+"X-Generator: Weblate 4.4.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Fogy az idő...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Sajnos lejárt az idő!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "hibás beszélgetés (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Jelszó: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "Új %s jelszó: "
+msgstr "Jelenlegi %s jelszó: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "Új jelszó: "
+msgstr "Jelenlegi jelszó: "
#: libpam/pam_get_authtok.c:44
#, c-format
@@ -223,99 +210,56 @@ msgstr "Az alkalmazásnak újra meg kell hívnia a libpam modult"
msgid "Unknown PAM error"
msgstr "Ismeretlen PAM hiba"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ugyanaz, mint a régi"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "memória allokációs hiba"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "palindrom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "csak a kis/nagybetűkben változott"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "túl hasonló a régihez"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "túl egyszerű"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "forgatva"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "elégtelen betűcsoport"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "túl sok egymást követő betű egyezik meg"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "túl hosszú monoton karaktersorozatot tartalmaz"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "valahogy tartalmazza a felhasználó nevét"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Nincs jelszó megadva"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Fogy az idő...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS jelszót nem sikerült módosítani."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Sajnos lejárt az idő!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ROSSZ JELSZÓ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "hibás beszélgetés (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s hiba: kilépő kód %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s hiba: %d%s jelzés érzékelve"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s hiba: 0x%x ismeretlen állapot"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-fájlnév] [--user használó] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Felhasználói azonosító zárolva, többszöri, %u sikertelen belépés miatt"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -367,7 +311,7 @@ msgstr[1] "%d sikertelen belépés kísérlet volt az utolsó sikeres belépés
msgid "There were %d failed login attempts since the last successful login."
msgstr "%d sikertelen belépés kísérlet volt az utolsó sikeres belépés óta."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Túl sok bejelentkezés \"%s\" részéről."
@@ -409,22 +353,22 @@ msgstr "%s mappában régi levél van."
msgid "You have mail in folder %s."
msgstr "%s mappában levelek vannak."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "\"%s\" mappa létrehozása."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "„%s†mappa nem hozható létre és állítható be."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "A jelszót már használta. Válasszon másikat."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "A jelszót már használta. Válasszon másikat."
@@ -460,12 +404,12 @@ msgstr "Nem érvényes biztonsági környezet"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "%s biztonsági környezet hozzárendelve"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "%s kulcskészítő környezet hozzárendelve"
@@ -485,66 +429,7 @@ msgstr "pam_set_item() meghiúsult\n"
msgid "login: failure forking: %m"
msgstr "bejelentkezés: elágazás hiba: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Felhasználói azonosító átmenetileg zárolt (még %ld másodpercig)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Hitelesítési hiba"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Szolgáltatás hiba"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ismeretlen felhasználó"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ismeretlen hiba"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Rossz szám a --reset= opcióban\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: %s ismeretlen opció\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-fájlnév] [--user használó] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Nem állítható vissza minden felhasználó nem-nullára\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Belépés Hibák Utolsó hibák Innen\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-fájlnév] [--file rooted-fájlnév]\n"
-" [-u használó] [--user használó]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Hozzáférés megadva (utolsó hozzáférés %ld másodperce volt)."
@@ -570,7 +455,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Azonnal meg kell változtatnia a jelszavát (a jelszó elévült)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -578,7 +463,7 @@ msgstr[0] "Figyelmeztetés: a jelszava %d nap múlva lejár"
msgstr[1] "Figyelmeztetés: a jelszava %d nap múlva lejár"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Figyelmeztetés: a jelszava %d nap múlva lejár"
@@ -587,6 +472,16 @@ msgstr "Figyelmeztetés: a jelszava %d nap múlva lejár"
msgid "NIS password could not be changed."
msgstr "NIS jelszót nem sikerült módosítani."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Nincs jelszó megadva"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS jelszót nem sikerült módosítani."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Egy rövidebb jelszót kell választania."
@@ -605,3 +500,81 @@ msgstr "%s jelszavának megváltoztatása."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Tovább kell várnia míg megváltoztathatja a jelszavát"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ugyanaz, mint a régi"
+
+#~ msgid "memory allocation error"
+#~ msgstr "memória allokációs hiba"
+
+#~ msgid "is a palindrome"
+#~ msgstr "palindrom"
+
+#~ msgid "case changes only"
+#~ msgstr "csak a kis/nagybetűkben változott"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "túl hasonló a régihez"
+
+#~ msgid "is too simple"
+#~ msgstr "túl egyszerű"
+
+#~ msgid "is rotated"
+#~ msgstr "forgatva"
+
+#~ msgid "not enough character classes"
+#~ msgstr "elégtelen betűcsoport"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "túl sok egymást követő betű egyezik meg"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "túl hosszú monoton karaktersorozatot tartalmaz"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "valahogy tartalmazza a felhasználó nevét"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ROSSZ JELSZÓ: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Felhasználói azonosító átmenetileg zárolt (még %ld másodpercig)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Hitelesítési hiba"
+
+#~ msgid "Service error"
+#~ msgstr "Szolgáltatás hiba"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ismeretlen felhasználó"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ismeretlen hiba"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Rossz szám a --reset= opcióban\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: %s ismeretlen opció\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-fájlnév] [--user használó] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Nem állítható vissza minden felhasználó nem-nullára\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Belépés Hibák Utolsó hibák Innen\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-fájlnév] [--file rooted-fájlnév]\n"
+#~ " [-u használó] [--user használó]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ia.gmo b/po/ia.gmo
index 88bbb382..9246e2e7 100644
--- a/po/ia.gmo
+++ b/po/ia.gmo
Binary files differ
diff --git a/po/ia.po b/po/ia.po
index feea5e3e..d985f46e 100644
--- a/po/ia.po
+++ b/po/ia.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-12-17 05:00-0500\n"
"Last-Translator: Nik Kalach <nik.kalach@inbox.ru>\n"
"Language-Team: Interlingua <trans-ia@lists.fedoraproject.org>\n"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Le tempore es perimente...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Le tempore ha perimite!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversation erronee (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Contrasigno: "
@@ -221,99 +208,56 @@ msgstr "Le application debe appellar a libpam de nove"
msgid "Unknown PAM error"
msgstr "Error incognite de PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "nove contrasigno es equl al previe"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "error al allocation de memoria"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "nove contrasigno es un polindromo"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "nove contrasigno cambia solo le registro de litteras"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "nove contrasigno es troppo simile al previe"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "nove contrasigno es troppo simple"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "nove contrasigno es un rotation del previe"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "nove contrasigno non ha satis de classes de character"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "nove contrasigno contine troppo de characteres identic consequente"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "nove contrasigno contine tro de characteres monotone in un sequentia"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "nove contrasigno contine le nomine de usator in alicun forma"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Necun contrasigno fornite"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Le tempore es perimente...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "Le contrasigno NIS non pote esser cambiate."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Le tempore ha perimite!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "CONTRASIGNO MALFORMATE: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversation erronee (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s fallite: codice de exito %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s fallite: signal capturate %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s fallite: stato incognite 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file percurso-integre] [--user usator] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Le conto es blocate a causa de %u insuccessos al authentication"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -368,7 +312,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Il esseva %d insuccessos a initiar le session desde le ultime connexion."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Troppo de connexiones pro '%s'."
@@ -410,22 +354,22 @@ msgstr "Il ha currero vetule in le dossier %s."
msgid "You have mail in folder %s."
msgstr "Il ha currero in le dossier %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Creation del directorio '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Impossibile de crear e de initiar le directorio '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Le contrasigno jam se ha utilisate. Selige un altere."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Le contrasigno se ha jam usate."
@@ -461,12 +405,12 @@ msgstr "Contexto de securitate incorrecte"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Contexto de securitate %s attribuite"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Contexto de creation de clave %s attribuite"
@@ -486,66 +430,7 @@ msgstr "error in pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "apertura de session: insuccesso de autoclonage: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Le conto es blocate temporarimente (%ld secundas remanente)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Error de authentication"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Error de servicio"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Usator incognite"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Error incognite"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Numero incorrecte fornite a --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Option non recognoscite %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file percurso-integre] [--user usator] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Impossibile de reinitiar tote le usatores a non-zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Conto Fallimentos Ultime fallimento De\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f percurso-integre] [--file percurso-integre]\n"
-" [-u usator] [--user usator]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Accesso permittite (le ultime accesso eveniva ante %ld secundas)."
@@ -568,7 +453,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Le contrasigno es troppo vetule e debe esser cambiate immediatemente."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -576,7 +461,7 @@ msgstr[0] "Advertimento: le contrasigno perimera in %d die"
msgstr[1] "Advertimento: le contrasigno perimera in %d dies"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Advertimento: le contrasigno perimera in %d dies"
@@ -585,6 +470,16 @@ msgstr "Advertimento: le contrasigno perimera in %d dies"
msgid "NIS password could not be changed."
msgstr "Le contrasigno NIS non pote esser cambiate."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Necun contrasigno fornite"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "Le contrasigno NIS non pote esser cambiate."
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -604,3 +499,82 @@ msgstr "Cambiamento del contrasigno pro %s."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Attende ancora pro cambiar le contrasigno"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "nove contrasigno es equl al previe"
+
+#~ msgid "memory allocation error"
+#~ msgstr "error al allocation de memoria"
+
+#~ msgid "is a palindrome"
+#~ msgstr "nove contrasigno es un polindromo"
+
+#~ msgid "case changes only"
+#~ msgstr "nove contrasigno cambia solo le registro de litteras"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "nove contrasigno es troppo simile al previe"
+
+#~ msgid "is too simple"
+#~ msgstr "nove contrasigno es troppo simple"
+
+#~ msgid "is rotated"
+#~ msgstr "nove contrasigno es un rotation del previe"
+
+#~ msgid "not enough character classes"
+#~ msgstr "nove contrasigno non ha satis de classes de character"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "nove contrasigno contine troppo de characteres identic consequente"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr ""
+#~ "nove contrasigno contine tro de characteres monotone in un sequentia"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "nove contrasigno contine le nomine de usator in alicun forma"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "CONTRASIGNO MALFORMATE: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Le conto es blocate temporarimente (%ld secundas remanente)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Error de authentication"
+
+#~ msgid "Service error"
+#~ msgstr "Error de servicio"
+
+#~ msgid "Unknown user"
+#~ msgstr "Usator incognite"
+
+#~ msgid "Unknown error"
+#~ msgstr "Error incognite"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Numero incorrecte fornite a --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Option non recognoscite %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file percurso-integre] [--user usator] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Impossibile de reinitiar tote le usatores a non-zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Conto Fallimentos Ultime fallimento De\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f percurso-integre] [--file percurso-integre]\n"
+#~ " [-u usator] [--user usator]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/id.gmo b/po/id.gmo
index 2be89f82..3c09a45f 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 2062fab9..824d6b36 100644
--- a/po/id.po
+++ b/po/id.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-22 01:07-0400\n"
"Last-Translator: sentabi\n"
"Language-Team: Indonesian <trans-id@lists.fedoraproject.org>\n"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Sandi:"
@@ -217,98 +204,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "terlalu panjang karakter berurutan"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Sandi sudah digunakan."
-
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "Sandi sudah digunakan."
-
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -359,7 +302,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -401,22 +344,22 @@ msgstr "Anda memiliki email lama di folder %s."
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Membuat direktori '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Tidak dapat membuat direktori '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Sandi sudah digunakan sebelumnya. Pilih sandi yang lain."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Sandi sudah digunakan."
@@ -452,12 +395,12 @@ msgstr "Konteks sekuriti tidak benar."
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -477,62 +420,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -552,14 +440,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -568,6 +456,16 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Sandi sudah digunakan."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "Sandi sudah digunakan."
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -587,3 +485,6 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Anda harus memilih kata sandi yang lebih pendek."
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "terlalu panjang karakter berurutan"
diff --git a/po/is.po b/po/is.po
index 0c146147..93c4e5c8 100644
--- a/po/is.po
+++ b/po/is.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Icelandic (http://www.transifex.com/projects/p/fedora/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/it.gmo b/po/it.gmo
index cd68dbe0..c9451815 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 9f65835e..456fd6fb 100644
--- a/po/it.po
+++ b/po/it.po
@@ -10,13 +10,14 @@
# Novell Language <language@novell.com>, 2007
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Milo Casagrande <milo@milo.name>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-06 23:59+0000\n"
-"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Italian <https://translate.fedoraproject.org/projects/linux-"
"pam/master/it/>\n"
"Language: it\n"
@@ -24,23 +25,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.11.2\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Il tempo sta per scadere...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Tempo scaduto!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversazione errata (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Password: "
@@ -224,100 +212,59 @@ msgstr "L'applicazione richiede una nuova chiamata a libpam"
msgid "Unknown PAM error"
msgstr "Errore PAM sconosciuto"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "è la stessa di quella precedente"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "errore allocazione memoria"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "è un palindromo"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "cambiano solo le maiuscole/minuscole"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "è troppo simile alla precedente"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "è troppo semplice"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "è una rotazione della precedente"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "non ha abbastanza classi di caratteri"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "contiene troppi caratteri simili consecutivi"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "contiene una sequenza troppo lunga di caratteri simili"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "contiene il nome utente in alcune forme"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Nessuna password fornita."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Il tempo sta per scadere...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "La password non è stata modificata."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Tempo scaduto!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "Password errata: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversazione errata (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s non riuscita: codice d'uscita %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s non riuscita: intercettato il segnale %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s non riuscita: stato sconosciuto 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file rooted-filename] [--user nomeutente] [--reset[=N]] [--quiet]\n"
+"Uso: %s [--dir /path/to/tally-directory] [--user nomeutente] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Account bloccato a causa di %u accessi non riusciti."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minuto rimanenti per sbloccare)"
+msgstr[1] "(%d minuti rimanenti per sbloccare)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d minuti rimanenti per sbloccare)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -369,7 +316,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Dall'ultimo accesso si sono verificati %d tentativi non riusciti di accesso."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Sono stati effettuati troppi accessi per «%s»."
@@ -410,22 +357,22 @@ msgstr "La cartella %s contiene vecchie email."
msgid "You have mail in folder %s."
msgstr "La cartella %s contiene email."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Creazione della directory «%s»."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Impossibile creare e inizializzare la directory «%s»."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Password già utilizzata, sceglierne un'altra."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "La password è stata già utilizzata."
@@ -460,12 +407,12 @@ msgstr "Non è un contesto di sicurezza valido."
msgid "A valid context for %s could not be obtained."
msgstr "Impossibile ottenere un contesto valido per %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Contesto di sicurezza %s assegnato."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Contesto di creazione chiave %s assegnato."
@@ -485,67 +432,7 @@ msgstr "Impossibile eseguire pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: fork non riuscita: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Account momentaneamente bloccato (%ld secondi rimanenti)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Errore di autenticazione"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Errore del servizio"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Utente sconosciuto"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Errore sconosciuto"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Numero errato fornito a --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Opzione non riconosciuta %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user nomeutente] [--reset[=N]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: impossibile ripristinare tutti gli utenti a valori diversi da zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Accesso Errori Ultimi errori Da\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u nomeutente] [--user nomeutente]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Accesso permesso (l'ultimo accesso risale a %ld secondi fa)."
@@ -567,7 +454,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "È richiesta la modifica immediata della password (password scaduta)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -575,7 +462,7 @@ msgstr[0] "Avviso: la password scadrà tra %d giorno."
msgstr[1] "Avviso: la password scadrà tra %d giorni."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Avviso: la password scadrà tra %d giorni."
@@ -584,6 +471,14 @@ msgstr "Avviso: la password scadrà tra %d giorni."
msgid "NIS password could not be changed."
msgstr "Impossibile modificare la password NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Nessuna password fornita."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "La password non è stata modificata."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Scegliere una password più corta."
@@ -600,3 +495,81 @@ msgstr "Cambio password per %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Attendere ancora per cambiare la password."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "è la stessa di quella precedente"
+
+#~ msgid "memory allocation error"
+#~ msgstr "errore allocazione memoria"
+
+#~ msgid "is a palindrome"
+#~ msgstr "è un palindromo"
+
+#~ msgid "case changes only"
+#~ msgstr "cambiano solo le maiuscole/minuscole"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "è troppo simile alla precedente"
+
+#~ msgid "is too simple"
+#~ msgstr "è troppo semplice"
+
+#~ msgid "is rotated"
+#~ msgstr "è una rotazione della precedente"
+
+#~ msgid "not enough character classes"
+#~ msgstr "non ha abbastanza classi di caratteri"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "contiene troppi caratteri simili consecutivi"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "contiene una sequenza troppo lunga di caratteri simili"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "contiene il nome utente in alcune forme"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "Password scadente: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Account momentaneamente bloccato (%ld secondi rimanenti)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Errore di autenticazione"
+
+#~ msgid "Service error"
+#~ msgstr "Errore del servizio"
+
+#~ msgid "Unknown user"
+#~ msgstr "Utente sconosciuto"
+
+#~ msgid "Unknown error"
+#~ msgstr "Errore sconosciuto"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Numero errato fornito a --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: opzione non riconosciuta %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user nomeutente] [--reset[=N]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: impossibile ripristinare tutti gli utenti a valori diversi da zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Accesso Errori Ultimi errori Da\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u nomeutente] [--user nomeutente]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ja.gmo b/po/ja.gmo
index 8891d91e..bcd952a5 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index f081e2ce..519a61ce 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-06 23:59+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Japanese <https://translate.fedoraproject.org/projects/linux-"
@@ -25,21 +25,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.11.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...時間ãŒåˆ‡ã‚Œã‹ã‹ã£ã¦ã„ã¾ã™...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...時間切れã§ã™ã€‚\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "誤ã£ãŸä¼šè©±(%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "パスワード:"
@@ -221,99 +208,55 @@ msgstr "アプリケーションã¯libpamã‚’å†ã³å‘¼ã³å‡ºã™å¿…è¦ãŒã‚ã‚Šã¾
msgid "Unknown PAM error"
msgstr "ä¸æ˜Žãª PAM エラー"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "パスワードãŒå¤ã„ã‚‚ã®ã¨åŒã˜ã§ã™ã€‚"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "メモリー割り当ã¦ã‚¨ãƒ©ãƒ¼"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "å‰å¾Œã©ã¡ã‚‰ã‹ã‚‰èª­ã‚“ã§ã‚‚åŒã˜ãƒ‘スワードã§ã™ã€‚"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "大文字å°æ–‡å­—を変ãˆãŸã ã‘ã®ãƒ‘スワード"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "å¤ã„ã‚‚ã®ã¨ä¼¼ã¦ã„ã¾ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ç°¡å˜ã™ãŽã¾ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "回転ã—ã¦ã„ã¾ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "文字クラスãŒä¸å分ã§ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "連続的ãªåŒä¸€æ–‡å­—ãŒå¤šãå«ã¾ã‚ŒéŽãŽã§ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "å˜èª¿ãªæ–‡å­—列ãŒæ•°å¤šãå«ã¾ã‚Œã¦ã„ã¾ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ãªã‚“らã‹ã®å½¢å¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’å«ã¿ã¾ã™"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "パスワードãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...時間ãŒåˆ‡ã‚Œã‹ã‹ã£ã¦ã„ã¾ã™...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS パスワードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...時間切れã§ã™ã€‚\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "よããªã„パスワード: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "誤ã£ãŸä¼šè©±(%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s 失敗: 終了コード %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s 失敗: シグナルをキャッム%d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s 失敗: ä¸æ˜ŽãªçŠ¶æ…‹ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u ã®ãƒ­ã‚°ã‚¤ãƒ³å¤±æ•—ã®ç†ç”±ã§ アカウントã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¾ã—ãŸ"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -364,7 +307,7 @@ msgstr[0] "最後ã®æ­£ã—ã„ログインã®å¾Œã« %d 回ã®å¤±æ•—ログインã
msgid "There were %d failed login attempts since the last successful login."
msgstr "最後ã®æ­£ã—ã„ログインã®å¾Œã« %d 回ã®å¤±æ•—ログインã®è©¦è¡ŒãŒã‚ã‚Šã¾ã™ã€‚"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'ã®ãƒ­ã‚°ã‚¤ãƒ³æ•°ãŒå¤šã™ãŽã¾ã™ã€‚"
@@ -406,23 +349,23 @@ msgstr "フォルダ%sã«å¤ã„メールãŒã‚ã‚Šã¾ã™ã€‚"
msgid "You have mail in folder %s."
msgstr "フォルダ%sã«ãƒ¡ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã™ã€‚"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "ディレクトリ '%s' を作æˆä¸­"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ディレクトリ %s を作æˆã—ã¦åˆæœŸåŒ–ã§ãã¾ã›ã‚“。"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
"パスワードã¯ã™ã§ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚ 別ã®ãƒ‘スワードをé¸æŠžã—ã¦ãã ã•ã„。"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "パスワードã¯ã™ã§ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚"
@@ -458,12 +401,12 @@ msgstr "有効ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã‚ã‚Šã¾ã›ã‚“"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "割り当ã¦ã‚‰ã‚ŒãŸã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ%s"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "キー作æˆã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ %s ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã—ãŸ"
@@ -483,66 +426,7 @@ msgstr "pam_set_item()ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
msgid "login: failure forking: %m"
msgstr "ログイン: ã„ã¾ã„ã¾ã—ã„失敗: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "アカウントã¯ä¸€æ™‚çš„ã«ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ (残り %ld 秒)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "サービスエラー"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ä¸æ˜Žãªãƒ¦ãƒ¼ã‚¶ãƒ¼"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: ä¸æ­£ç•ªå·ãŒ--reset=ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: 未èªè­˜ã‚ªãƒ—ション%s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’éžã‚¼ãƒ­ã«ãƒªã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "ログイン 失敗。最後ã®å¤±æ•—㯠以下ã§ç™ºç”Ÿ\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "ã‚¢ã‚¯ã‚»ã‚¹ã‚’è¨±å¯ ï¼ˆæœ€å¾Œã®ã‚¢ã‚¯ã‚»ã‚¹ã¯ %ld 秒å‰ã§ã—ãŸï¼‰"
@@ -566,14 +450,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "パスワードを直ã¡ã«å¤‰æ›´ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™(å¤ã„パスワード)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] "警告: パスワードã¯%dæ—¥ã§æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¾ã™ã€‚"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "警告: パスワード㯠%d æ—¥ã§æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¾ã™ã€‚"
@@ -582,6 +466,16 @@ msgstr "警告: パスワード㯠%d æ—¥ã§æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¾ã™ã€‚"
msgid "NIS password could not be changed."
msgstr "NIS パスワードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "パスワードãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS パスワードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ã‚‚ã£ã¨çŸ­ã„パスワードをé¸æŠžã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
@@ -600,3 +494,81 @@ msgstr "%s 用ã«ãƒ‘スワードを変更中"
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "パスワードを変更ã™ã‚‹ã«ã¯é•·ãå¾…ã¤å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "パスワードãŒå¤ã„ã‚‚ã®ã¨åŒã˜ã§ã™ã€‚"
+
+#~ msgid "memory allocation error"
+#~ msgstr "メモリー割り当ã¦ã‚¨ãƒ©ãƒ¼"
+
+#~ msgid "is a palindrome"
+#~ msgstr "å‰å¾Œã©ã¡ã‚‰ã‹ã‚‰èª­ã‚“ã§ã‚‚åŒã˜ãƒ‘スワードã§ã™ã€‚"
+
+#~ msgid "case changes only"
+#~ msgstr "大文字å°æ–‡å­—を変ãˆãŸã ã‘ã®ãƒ‘スワード"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "å¤ã„ã‚‚ã®ã¨ä¼¼ã¦ã„ã¾ã™"
+
+#~ msgid "is too simple"
+#~ msgstr "ç°¡å˜ã™ãŽã¾ã™"
+
+#~ msgid "is rotated"
+#~ msgstr "回転ã—ã¦ã„ã¾ã™"
+
+#~ msgid "not enough character classes"
+#~ msgstr "文字クラスãŒä¸å分ã§ã™"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "連続的ãªåŒä¸€æ–‡å­—ãŒå¤šãå«ã¾ã‚ŒéŽãŽã§ã™"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "å˜èª¿ãªæ–‡å­—列ãŒæ•°å¤šãå«ã¾ã‚Œã¦ã„ã¾ã™"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ãªã‚“らã‹ã®å½¢å¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’å«ã¿ã¾ã™"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "よããªã„パスワード: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "アカウントã¯ä¸€æ™‚çš„ã«ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ (残り %ld 秒)"
+
+#~ msgid "Authentication error"
+#~ msgstr "èªè¨¼ã‚¨ãƒ©ãƒ¼"
+
+#~ msgid "Service error"
+#~ msgstr "サービスエラー"
+
+#~ msgid "Unknown user"
+#~ msgstr "ä¸æ˜Žãªãƒ¦ãƒ¼ã‚¶ãƒ¼"
+
+#~ msgid "Unknown error"
+#~ msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: ä¸æ­£ç•ªå·ãŒ--reset=ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: 未èªè­˜ã‚ªãƒ—ション%s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’éžã‚¼ãƒ­ã«ãƒªã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ログイン 失敗。最後ã®å¤±æ•—㯠以下ã§ç™ºç”Ÿ\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ka.gmo b/po/ka.gmo
index a015a0d8..f07f3347 100644
--- a/po/ka.gmo
+++ b/po/ka.gmo
Binary files differ
diff --git a/po/ka.po b/po/ka.po
index 3325be1e..8a30db24 100644
--- a/po/ka.po
+++ b/po/ka.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-01-26 10:08-0500\n"
"Last-Translator: George Machitidze <giomac@gmail.com>\n"
"Language-Team: Georgian (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...დრრგáƒáƒ“ის...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "პáƒáƒ áƒáƒšáƒ˜:"
@@ -217,98 +204,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr "PAM-ის უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ძáƒáƒšáƒ˜áƒáƒœ გáƒáƒ•áƒ¡ ძველს"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ძáƒáƒšáƒ˜áƒáƒœ მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜áƒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "შებრუნებულიáƒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...დრრგáƒáƒ“ის...\n"
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "რáƒáƒ¦áƒáƒª ფáƒáƒ áƒ›áƒ˜áƒ— გáƒáƒ•áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლს"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "პáƒáƒ áƒáƒšáƒ˜ áƒáƒ  იქნრმითითებული"
-
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "პáƒáƒ áƒáƒšáƒ˜ უკვე იყრგáƒáƒ›áƒáƒ§áƒ”ნებული."
-
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ცუდი პáƒáƒ áƒáƒšáƒ˜: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -359,7 +302,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -401,22 +344,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' დირექტáƒáƒ áƒ˜áƒ˜áƒ¡ შექმნáƒ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "პáƒáƒ áƒáƒšáƒ˜ უკვე იყრგáƒáƒ›áƒáƒ§áƒ”ნებული."
@@ -451,12 +394,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -476,62 +419,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "სერვისის შეცდáƒáƒ›áƒ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "უცნáƒáƒ‘ი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -551,14 +439,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -567,6 +455,16 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "პáƒáƒ áƒáƒšáƒ˜ áƒáƒ  იქნრმითითებული"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "პáƒáƒ áƒáƒšáƒ˜ უკვე იყრგáƒáƒ›áƒáƒ§áƒ”ნებული."
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -586,3 +484,27 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "თქვენ უნდრáƒáƒ˜áƒ áƒ©áƒ˜áƒáƒ— მáƒáƒ™áƒšáƒ” პáƒáƒ áƒáƒšáƒ˜."
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ძáƒáƒšáƒ˜áƒáƒœ გáƒáƒ•áƒ¡ ძველს"
+
+#~ msgid "is too simple"
+#~ msgstr "ძáƒáƒšáƒ˜áƒáƒœ მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜áƒ"
+
+#~ msgid "is rotated"
+#~ msgstr "შებრუნებულიáƒ"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "რáƒáƒ¦áƒáƒª ფáƒáƒ áƒ›áƒ˜áƒ— გáƒáƒ•áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლს"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ცუდი პáƒáƒ áƒáƒšáƒ˜: %s"
+
+#~ msgid "Service error"
+#~ msgstr "სერვისის შეცდáƒáƒ›áƒ"
+
+#~ msgid "Unknown user"
+#~ msgstr "უცნáƒáƒ‘ი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი"
+
+#~ msgid "Unknown error"
+#~ msgstr "უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ"
diff --git a/po/kk.gmo b/po/kk.gmo
index c3a492d1..1fab8163 100644
--- a/po/kk.gmo
+++ b/po/kk.gmo
Binary files differ
diff --git a/po/kk.po b/po/kk.po
index b745315c..816c617f 100644
--- a/po/kk.po
+++ b/po/kk.po
@@ -3,16 +3,16 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2012
+# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2012, 2020.
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Dmitry V. Levin <ldv@altlinux.org>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-06 23:59+0000\n"
-"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-06-24 09:40+0000\n"
+"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <https://translate.fedoraproject.org/projects/linux-"
"pam/master/kk/>\n"
"Language: kk\n"
@@ -20,35 +20,21 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.11.2\n"
+"X-Generator: Weblate 4.1.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Уақытыңыз бітіп барады...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Кешіріңіз, Ñіздің уақытыңыз бітті!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "қате Ñұхбат (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr "Пароль:"
+msgstr "Пароль: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "%s үшін жаңа пароль: "
+msgstr "%s үшін ағымдағы пароль: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "үшін жаңа пароль: "
+msgstr "Ðғымдағы пароль: "
#: libpam/pam_get_authtok.c:44
#, c-format
@@ -78,7 +64,6 @@ msgid "Retype %s"
msgstr "%s қайта енгізіңіз"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
msgstr "Парольді өзгертуден Ð±Ð°Ñ Ñ‚Ð°Ñ€Ñ‚Ñ‹Ð»Ð´Ñ‹."
@@ -220,102 +205,59 @@ msgstr "Бағдарлама libpam-ды қайтадан шақыруы керÐ
msgid "Unknown PAM error"
msgstr "БелгіÑіз PAM қатеÑÑ–"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "алдыңғыÑына ÑÓ™Ð¹ÐºÐµÑ Ð±Ð¾Ð»Ñ‹Ð¿ тұр"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "жадыны бөлу қатеÑÑ–"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "палиндром болып тұр"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "өзгеріÑтер таңбалардың региÑтрінде ғана"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "еÑкі парольге өте Ò±Ò›ÑаÑ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "өте оңай болып тұр"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "аударылған еÑкі пароль"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "керек таңбалар клаÑтары жоқ"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "құрамында бірдей таңбалардың тізбегі бар"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "құрамында біркелкі таңбалардың тым ұзын тізбегі бар"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "құрамында пайдаланушы аты бар"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Пароль көрÑетілмеді"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Уақытыңыз бітіп барады...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS паролін өзгерту мүмкін емеÑ."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Кешіріңіз, Ñіздің уақытыңыз бітті!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ÒšÐТЕ ПÐРОЛЬ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "қате Ñұхбат (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s қатеÑÑ–: шығу коды %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s қатеÑÑ–: алынған Ñигнал %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s қатеÑÑ–: белгіÑіз қалып-күйі 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file түбірлік_файл_аты] [--user пайдаланушы] [--reset[=n]] [--quiet]\n"
+"Қолданылуы: %s: [--dir /tally-бумаÑына/дейінгі/жол] [--user пайдаланушы] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "Тіркелгі %u рет қате кіру талабы еÑебінен оқшауланды"
+msgstr "Тіркелгі %u рет қате кіру талабы Ñалдарынан бұғатталды."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(бұғатты шешуге дейін %d минут қалды)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(бұғатты шешуге дейін %d минут қалды)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -363,15 +305,14 @@ msgstr[0] "Соңғы Ñәтті жүйеге кіру реттен кейін %
msgid "There were %d failed login attempts since the last successful login."
msgstr "Соңғы Ñәтті жүйеге кіру реттен кейін %d қате талап болған."
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
-msgstr "'%s' үшін жүйеге кіру талап Ñаны тым көп."
+msgstr "\"%s\" үшін жүйеге кіру талап Ñаны тым көп."
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "Сізде жаңа поштаңыз бар."
+msgstr "Сізде жаңа пошта жоқ."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -405,29 +346,29 @@ msgstr "Сізде %s бумаÑында еÑкі поштаңыз бар."
msgid "You have mail in folder %s."
msgstr "Сізде %s бумаÑында поштаңыз бар."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' бумаÑын жаÑау."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "'%s' бумаÑын жаÑау мүмкін емеÑ."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Пароль оÑыған дейін қолданған. БаÑқаÑын таңдаңыз."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Пароль оÑыған дейін қолданылған."
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "БаÑтапқы қауіпÑіздік контекÑÑ‚Ñ– %s\n"
+msgstr "БаÑтапқы қауіпÑіздік контекÑÑ‚Ñ– %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
@@ -438,33 +379,32 @@ msgid "role:"
msgstr "ролі:"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "%s ролі үшін баÑтапқы түрі көрÑетілмеген\n"
+msgstr "%s ролі үшін баÑтапқы түрі көрÑетілмеген."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
msgstr "деңгейі:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "Ð”Ò±Ñ€Ñ‹Ñ Ò›Ð°ÑƒÑ–Ð¿Ñіздік контекÑÑ‚Ñ– емеÑ"
+msgstr "Ð”Ò±Ñ€Ñ‹Ñ Ò›Ð°ÑƒÑ–Ð¿Ñіздік контекÑÑ‚Ñ– емеÑ."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "%s үшін жарамды контекÑÑ‚Ñ‚Ñ– алу мүмкін емеÑ."
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "%s қауіпÑіздік контекÑÑ‚Ñ– орнатылды"
+msgstr "%s қауіпÑіздік контекÑÑ‚Ñ– тағайындалды."
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "%s кілттерді жаÑау қауіпÑіздік контекÑÑ‚Ñ– орнатылды"
+msgstr "%s кілттерді жаÑау қауіпÑіздік контекÑÑ‚Ñ– тағайындалды."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -481,113 +421,57 @@ msgstr "pam_set_item() орындау мүмкін емеÑ\n"
msgid "login: failure forking: %m"
msgstr "login: үрдіÑÑ‚Ñ– баÑтау мүмкін емеÑ: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Тіркелгі уақытша оқшауланған (%ld Ñекунд қалды)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Шындылықты анықтау қатеÑÑ–"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Қызмет қатеÑÑ–"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "БелгіÑіз пайдаланушы"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "БелгіÑіз қате"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= үшін қате Ñан берілді\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: %s опциÑÑÑ‹ белгіÑіз\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file түбірлік_файл_аты] [--user пайдаланушы] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Барлық пайдаланушыларды нөлдік ÐµÐ¼ÐµÑ Ð¼Ó™Ð½Ð³Ðµ таÑтау мүмкін емеÑ\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Пайдаланушы аты СәтÑіз кіру Ñаны Соңғы қате Қайдан\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f түбірлік_файл_аты] [--file түбірлік_файл_аты]\n"
-" [-u пайдаланушы_аты] [--user пайдаланушы_аты]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
-#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr "РұқÑат раÑталған (Ñоңғы рет %ld Ñекунд бұрын болған)."
+msgstr "РұқÑат раÑталған (Ñоңғы қатынау %ld Ñекунд бұрын болған)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
-msgstr ""
-"Тіркелгіңіздің мерзімі аÑқталған; жүйелік админиÑтраторыңызға хабарлаÑыңыз"
+msgstr "Тіркелгіңіздің мерзімі аÑқталған; жүйелік әкімшіңізге хабарлаÑыңыз."
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "Сізге пароліңізді қазір ауыÑтыру керек (root мәжбүрлеген)"
+msgstr "Сізге пароліңізді қазір ауыÑтыру керек (әкімші мәжбүрлеген)."
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "Сізге пароліңізді қазір ауыÑтыру керек (парольдің мерзімі аÑқталған)"
+msgstr "Сізге пароліңізді қазір ауыÑтыру керек (парольдің мерзімі аÑқталған)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "ЕÑкерту: Ñіздің пароліңіздің мерзімі %d күнде бітеді"
+msgstr[0] "ЕÑкерту: Ñіздің пароліңіздің мерзімі %d күнде бітеді."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "ЕÑкерту: Ñіздің пароліңіздің мерзімі %d күнде бітеді"
+msgstr "ЕÑкерту: Ñіздің пароліңіздің мерзімі %d күнде бітеді."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "NIS паролін өзгерту мүмкін емеÑ."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Пароль көрÑетілмеді."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Пароль өзгертілмеді."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Сіз қыÑқа парольді таңдауыңыз керек."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "Сізге ұзынырақ парольді таңдау керек"
+msgstr "Сізге ұзынырақ парольді таңдау керек."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
@@ -595,6 +479,83 @@ msgid "Changing password for %s."
msgstr "%s үшін парольді өзгерту."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "Пароліңізді өзгерті үшін біраз күтуіңіз керек"
+msgstr "Пароліңізді өзгерті үшін біраз күтуіңіз керек."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "алдыңғыÑына ÑÓ™Ð¹ÐºÐµÑ Ð±Ð¾Ð»Ñ‹Ð¿ тұр"
+
+#~ msgid "memory allocation error"
+#~ msgstr "жадыны бөлу қатеÑÑ–"
+
+#~ msgid "is a palindrome"
+#~ msgstr "палиндром болып тұр"
+
+#~ msgid "case changes only"
+#~ msgstr "өзгеріÑтер таңбалардың региÑтрінде ғана"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "еÑкі парольге өте Ò±Ò›ÑаÑ"
+
+#~ msgid "is too simple"
+#~ msgstr "өте оңай болып тұр"
+
+#~ msgid "is rotated"
+#~ msgstr "аударылған еÑкі пароль"
+
+#~ msgid "not enough character classes"
+#~ msgstr "керек таңбалар клаÑтары жоқ"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "құрамында бірдей таңбалардың тізбегі бар"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "құрамында біркелкі таңбалардың тым ұзын тізбегі бар"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "құрамында пайдаланушы аты бар"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ÒšÐТЕ ПÐРОЛЬ: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Тіркелгі уақытша бұғатталған (%ld Ñекунд қалды)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Шындылықты анықтау қатеÑÑ–"
+
+#~ msgid "Service error"
+#~ msgstr "Қызмет қатеÑÑ–"
+
+#~ msgid "Unknown user"
+#~ msgstr "БелгіÑіз пайдаланушы"
+
+#~ msgid "Unknown error"
+#~ msgstr "БелгіÑіз қате"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= үшін қате Ñан берілді\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: %s опциÑÑÑ‹ белгіÑіз\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file түбірлік_файл_аты] [--user пайдаланушы] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Барлық пайдаланушыларды нөлдік ÐµÐ¼ÐµÑ Ð¼Ó™Ð½Ð³Ðµ таÑтау мүмкін емеÑ\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Пайдаланушы аты СәтÑіз кіру Ñаны Соңғы қате Қайдан\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f түбірлік_файл_аты] [--file түбірлік_файл_аты]\n"
+#~ " [-u пайдаланушы_аты] [--user пайдаланушы_аты]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/km.gmo b/po/km.gmo
index 19d03f92..ee7497e8 100644
--- a/po/km.gmo
+++ b/po/km.gmo
Binary files differ
diff --git a/po/km.po b/po/km.po
index faaca0ee..4561f654 100644
--- a/po/km.po
+++ b/po/km.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-29 07:00-0500\n"
"Last-Translator: Tomáš Mráz <tmraz@fedoraproject.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...អស់​ពáŸáž›...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...សូម​ទោស អ្នក​អស់​ពáŸáž›â€‹áž áž¾áž™Â !\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "សន្ទនាច្រឡំ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ពាក្យសម្ងាážáŸ‹Â áŸ– "
@@ -217,99 +204,55 @@ msgstr "កម្មវិធី​ážáŸ’រូវ​ážáŸ‚​ហៅ libpam មá
msgid "Unknown PAM error"
msgstr "មិន​ស្គាល់​កំហុស PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ដូច​គ្នា​នឹង​ពាក្យ​សម្ងាážáŸ‹â€‹áž…ាស់"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ážáŸ’រឡប់​ចុះ​ឡើង"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "គ្រាន់​ážáŸ‚​ផ្លាស់ប្ដូរ​លក្ážážŽáŸˆâ€‹áž¢áž€áŸ’សរ​ប៉ុណ្ណោះ​"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ស្រដៀង​គ្នា​ណាស់​នឹង​ពាក្យ​សម្ងាážáŸ‹â€‹áž…ាស់"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "សាមញ្ញ​ពáŸáž€"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "បាន​បង្វិល"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "មិន​បាន​ផ្ដល់​ពាក្យសម្ងាážáŸ‹"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...អស់​ពáŸáž›...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យសម្ងាážáŸ‹ NIS បាន​ឡើយ ។"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...សូម​ទោស អ្នក​អស់​ពáŸáž›â€‹áž áž¾áž™Â !\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ពាក្យ​សម្ងាážáŸ‹â€‹áž˜áž·áž“​ល្អ ៖ %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "សន្ទនាច្រឡំ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s ៖ [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -360,7 +303,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "មាន​ការ​ចូល​ច្រើន​ពáŸáž€â€‹ážŸáž˜áŸ’រាប់ '%s' ។"
@@ -402,22 +345,22 @@ msgstr "អ្នក​មាន​សំបុážáŸ’រ​ចាស់​នៅ
msgid "You have mail in folder %s."
msgstr "អ្នក​មាន​សំបុážáŸ’រ​នៅ​ក្នុង​ážáž %s ។"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "ពាក្យសម្ងាážáŸ‹â€‹ážáŸ’រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀážÂ áŸ”"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "ពាក្យសម្ងាážáŸ‹â€‹ážáŸ’រូវ​បាន​ប្រើ​រួច​ហើយ ។ សូម​ជ្រើស​មួយ​ទៀážÂ áŸ”"
@@ -454,12 +397,12 @@ msgstr "មិន​មែន​ជា​បរិបទ​សុវážáŸ’ážáž·
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "បរិបទ​សុវážáŸ’ážáž·áž—ាព %s បាន​ផ្ដល់​ážáž˜áŸ’លៃ​"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "បរិបទ​សុវážáŸ’ážáž·áž—ាព %s បាន​ផ្ដល់​ážáž˜áŸ’លៃ​"
@@ -479,63 +422,7 @@ msgstr "បាន​បរាជáŸáž™ pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "ចូល ៖ ចម្លង​ážáŸ’លួន​ឯង​មិន​បាន​ជោគជáŸáž™Â áŸ– %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "កំហុស​ក្នុង​ការ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "កំហុស​សáŸážœáž¶"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "មិន​ស្គាល់​អ្នក​ប្រើ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "មិន​ស្គាល់​កំហុស"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s ៖ áž›áŸážâ€‹áž˜áž·áž“​ល្អ​បាន​ផ្ដល់​ទៅ --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s ៖ ជម្រើស​ដែល​មិន​ស្គាល់ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s ៖ [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s ៖ មិន​អាច​កំណážáŸ‹â€‹áž¢áŸ’នក​ប្រើ​ទាំងអស់​ទៅ​មិនមែន​សូន្យ​ឡើងវិញ​បានទáŸ\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -558,14 +445,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "អ្នក​ážáŸ’រូវ​ážáŸ‚​ផ្លាស់ប្ដូរ​ពាក្យសម្ងាážáŸ‹â€‹ážšáž”ស់​អ្នក​ឥឡូវ​នáŸáŸ‡ (ពាក្យសម្ងាážáŸ‹â€‹áž…ាស់​ហើយ)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -574,6 +461,16 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យសម្ងាážáŸ‹ NIS បាន​ឡើយ ។"
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "មិន​បាន​ផ្ដល់​ពាក្យសម្ងាážáŸ‹"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យសម្ងាážáŸ‹ NIS បាន​ឡើយ ។"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "អ្នកážáŸ’រូវážáŸ‚ជ្រើសរើសពាក្យសម្ងាážáŸ‹ážáŸ’លី។"
@@ -592,3 +489,50 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "អ្នក​ážáŸ’រូវ​ážáŸ‚​រង់ចាំ​បន្ážáž·áž… ដើម្បី​ផ្លាស់ប្ដូរ​ពាក្យសម្ងាážáŸ‹â€‹ážšáž”ស់​អ្នក"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ដូច​គ្នា​នឹង​ពាក្យ​សម្ងាážáŸ‹â€‹áž…ាស់"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ážáŸ’រឡប់​ចុះ​ឡើង"
+
+#~ msgid "case changes only"
+#~ msgstr "គ្រាន់​ážáŸ‚​ផ្លាស់ប្ដូរ​លក្ážážŽáŸˆâ€‹áž¢áž€áŸ’សរ​ប៉ុណ្ណោះ​"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ស្រដៀង​គ្នា​ណាស់​នឹង​ពាក្យ​សម្ងាážáŸ‹â€‹áž…ាស់"
+
+#~ msgid "is too simple"
+#~ msgstr "សាមញ្ញ​ពáŸáž€"
+
+#~ msgid "is rotated"
+#~ msgstr "បាន​បង្វិល"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ពាក្យ​សម្ងាážáŸ‹â€‹áž˜áž·áž“​ល្អ ៖ %s"
+
+#~ msgid "Authentication error"
+#~ msgstr "កំហុស​ក្នុង​ការ​ផ្ទៀងផ្ទាážáŸ‹â€‹áž—ាព​ážáŸ’រឹមážáŸ’រូវ"
+
+#~ msgid "Service error"
+#~ msgstr "កំហុស​សáŸážœáž¶"
+
+#~ msgid "Unknown user"
+#~ msgstr "មិន​ស្គាល់​អ្នក​ប្រើ"
+
+#~ msgid "Unknown error"
+#~ msgstr "មិន​ស្គាល់​កំហុស"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s ៖ áž›áŸážâ€‹áž˜áž·áž“​ល្អ​បាន​ផ្ដល់​ទៅ --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s ៖ ជម្រើស​ដែល​មិន​ស្គាល់ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s ៖ [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s ៖ មិន​អាច​កំណážáŸ‹â€‹áž¢áŸ’នក​ប្រើ​ទាំងអស់​ទៅ​មិនមែន​សូន្យ​ឡើងវិញ​បានទáŸ\n"
diff --git a/po/kn.gmo b/po/kn.gmo
index 771f3b8b..a1022d3e 100644
--- a/po/kn.gmo
+++ b/po/kn.gmo
Binary files differ
diff --git a/po/kn.po b/po/kn.po
index f89f742c..03422c9e 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-15 04:49-0400\n"
"Last-Translator: shanky <prasad.mvs@gmail.com>\n"
"Language-Team: Kannada (http://www.transifex.com/projects/p/fedora/language/"
@@ -23,21 +23,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...ಸಮಯ ಸರಿಯà³à²¤à³à²¤à²¿à²¦à³†...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...ಕà³à²·à²®à²¿à²¸à²¿, ನಿಮà³à²® ಸಮಯ ಮà³à²—ಿಯಿತà³!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ದೋಷಪೂರಿತ ಸಂವಾದ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ಗà³à²ªà³à²¤à²ªà²¦: "
@@ -219,99 +206,55 @@ msgstr "ಅನà³à²µà²¯à²µà³ libpam ಅನà³à²¨à³ ಪà³à²¨à²ƒ ಕರೆಯà²
msgid "Unknown PAM error"
msgstr "ಗೊತà³à²¤à²¿à²°à²¦ PAM ದೋಷ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ಇದೠಹಳೆಯದರ ಹಾಗೆಯೇ ಇದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "ಮೆಮೊರಿ ನಿಯೋಜನಾ ದೋಷ"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ಇದೠಒಂದೠಸಮಾನ ಪೂರà³à²µà²¾à²ªà²°à²µà²¾à²—ಿದೆ (palindrome)"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "ಕೇವಲ ಕೇಸೠಗಳ ಬದಲಾವಣೆಯಾಗಿದೆ ಅಷà³à²Ÿà³†"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ಇದೠಹಳೆಯದಕà³à²•à³† ಬಹಳಷà³à²Ÿà³ ಹೋಲà³à²¤à³à²¤à²¦à³†"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ಇದೠಬಹಳ ಸರಳವಾಗಿದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ಇದೠತಿರà³à²—ಿಸಲಾಗಿದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ಸಾಕಷà³à²Ÿà³ ಕà³à²¯à²¾à²°à³†à²•à³à²Ÿà²°à³ ವರà³à²—ಗಳೠಇಲà³à²²"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "ಇದೠಒಂದೇ ಬಗೆಯ ಬಹಳಷà³à²Ÿà³ ಕà³à²¯à²¾à²°à³†à²•à³à²Ÿà²°à³à²—ಳನà³à²¨à³ ಅನà³à²•à³à²°à²®à²µà²¾à²—ಿ ಹೊಂದಿದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "ಇದೠಒಂದೇ ಬಗೆಯ ಉದà³à²¦à²¨à³†à²¯ ಅಕà³à²·à²°à²—ಳ ಅನà³à²•à³à²°à²®à²µà²¨à³à²¨à³ ಹೊಂದಿದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ಇದೠಯಾವà³à²¦à³Š ಒಂದೠಬಗೆಯಲà³à²²à²¿ ಬಳಕೆದಾರ ಹೆಸರನà³à²¨à³ ಒಳಗೊಂಡಿದೆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "ಯಾವà³à²¦à³‡ ಗà³à²ªà³à²¤à²ªà²¦ ನೀಡಲಾಗಿಲà³à²²"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...ಸಮಯ ಸರಿಯà³à²¤à³à²¤à²¿à²¦à³†...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²²à³à²²."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...ಕà³à²·à²®à²¿à²¸à²¿, ನಿಮà³à²® ಸಮಯ ಮà³à²—ಿಯಿತà³!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ಕೆಟà³à²Ÿ ಗà³à²ªà³à²¤à²ªà²¦: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ದೋಷಪೂರಿತ ಸಂವಾದ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s ವಿಫಲಗೊಂಡಿದೆ: ನಿರà³à²—ಮಿಸಲೠಸಂಜà³à²žà³† %d "
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s ವಿಫಲಗೊಂಡಿದೆ: ಹಿಡಿಯಲಾದ ಸೂಚನೆ %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s ವಿಫಲಗೊಂಡಿದೆ: ಗೊತà³à²¤à²¿à²°à²¦ ಸà³à²¥à²¿à²¤à²¿ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "ವಿಫಲಗೊಂಡ %u ಪà³à²°à²µà³‡à²¶à²—ಳಿಂದಾಗಿ ಖಾತೆಯನà³à²¨à³ ಲಾಕೠಮಾಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -362,7 +305,7 @@ msgstr[0] "ಕೊನೆಯ ಬಾರಿಯ ಯಶಸà³à²µà²¿ ಪà³à²°à²µà³‡à²¶
msgid "There were %d failed login attempts since the last successful login."
msgstr "ಕೊನೆಯ ಬಾರಿಯ ಯಶಸà³à²µà²¿ ಪà³à²°à²µà³‡à²¶à²¦ ನಂತರ %d ಪà³à²°à²µà³‡à²¶à²¦ ಪà³à²°à²¯à²¤à³à²¨à²—ಳೠವಿಫಲಗೊಂಡಿದೆ."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'ಗಾಗಿ ಬಹಳಷà³à²Ÿà³ ಲಾಗಿನà³à²¨à³à²—ಳà³."
@@ -404,22 +347,22 @@ msgstr "%s ಫೋಲà³à²¡à²°à²¿à²¨à²²à³à²²à²¿ ನಿಮಗಾಗಿ ಹಳೆ
msgid "You have mail in folder %s."
msgstr "%s ಫೋಲà³à²¡à²°à²¿à²¨à²²à³à²²à²¿ ನಿಮಗಾಗಿ ಮೈಲೠಇದೆ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "ಕೋಶ '%s' ಅನà³à²¨à³ ರಚಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ಕೋಶ '%s' ಅನà³à²¨à³ ರಚಿಸಲೠಹಾಗೠಆರಂಭಿಸಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "ಗà³à²ªà³à²¤à²ªà²¦à²µà³ ಈಗಾಗಲೆ ಬಳಸಲà³à²ªà²Ÿà³à²Ÿà²¿à²¦à³†. ಬೇರೊಂದನà³à²¨à³ ಬಳಸಿ."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಈಗಾಗಲೆ ಬಳಸಲಾಗಿದೆ."
@@ -455,12 +398,12 @@ msgstr "ಸಮಂಜಸವಾದ ಸà³à²°à²•à³à²·à²¤à²¾ ಸನà³à²¨à²¿à²µà³‡à
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "ಸà³à²°à²•à³à²·à²¤à²¾ ಸನà³à²¨à²¿à²µà³‡à²¶ %s ವನà³à²¨à³ ನಿಯೋಜಿಸಲಾಗಿದೆ"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "ಕೀಲಿ ನಿರà³à²®à²¾à²£ ಸನà³à²¨à²¿à²µà³‡à²¶ %s ವನà³à²¨à³ ನಿಯೋಜಿಸಲಾಗಿದೆ"
@@ -480,66 +423,7 @@ msgstr "pam_set_item() ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲತೆ\n"
msgid "login: failure forking: %m"
msgstr "ಲಾಗಿನà³: ಫೋರà³à²•à²¿à²‚ಗೠಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲತೆ:%m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ಖಾತೆಯನà³à²¨à³ ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ಲಾಕೠಮಾಡಲಾಗಿದೆ (%ld ಸೆಕೆಂಡà³à²—ಳೠಉಳಿದಿವೆ)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "ದೃಢೀಕರಣ ದೋಷ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "ಸೇವಾ ದೋಷ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ಗೊತà³à²¤à²¿à²°à²¦ ಬಳಕೆದಾರ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "ಗೊತà³à²¤à²¿à²°à²¦ ದೋಷ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= ಗೆ ಕೊಡಲಾದ ಕೆಟà³à²Ÿ ಸಂಖà³à²¯à³†\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: ಗà³à²°à³à²¤à²¿à²¸à²²à²¾à²—ದ ಆಯà³à²•à³† %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: ಎಲà³à²²à²¾ ಬಳಕೆದಾರರನà³à²¨à³ ಶೂನà³à²¯à²µà²²à³à²²à²¦à³à²¦à²•à³à²•à³† ಪà³à²¨à²°à³ ಸಂಯೋಜಿಸಲೠಆಗà³à²µà³à²¦à²¿à²²à³à²²\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "ಪà³à²°à²µà³‡à²¶ ವಿಫಲತೆಗಳೠಇತà³à²¤à³€à²šà²¿à²¨ ವಿಫಲತೆ ಇಂದ\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -564,14 +448,14 @@ msgid ""
msgstr ""
"ನೀವೠಈ ಕೂಡಲೆ ನಿಮà³à²® ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಿಸà³à²µ ಅಗತà³à²¯à²µà²¿à²¦à³† (ಗà³à²ªà³à²¤à²ªà²¦à²µà³ ಬಹಳ ಹಳೆಯದಾಗಿದೆ)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] "ಎಚà³à²šà²°à²¿à²•à³†: ನಿಮà³à²® ಗà³à²ªà³à²¤à²ªà²¦à²¦ ವಾಯಿದೆಯೠ%d ದಿನಗಳ ನಂತರ ತೀರಿಹೋಗà³à²¤à³à²¤à²¦à³†"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "ಎಚà³à²šà²°à²¿à²•à³†: %d ದಿನಗಳಲà³à²²à²¿ ನಿಮà³à²® ಗà³à²ªà³à²¤à²ªà²¦à²¦ ಅವಧಿ ಅಂತà³à²¯à²—ೊಳà³à²³à³à²¤à³à²¤à²¦à³†"
@@ -580,6 +464,16 @@ msgstr "ಎಚà³à²šà²°à²¿à²•à³†: %d ದಿನಗಳಲà³à²²à²¿ ನಿಮà³à²®
msgid "NIS password could not be changed."
msgstr "NIS ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²²à³à²²."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "ಯಾವà³à²¦à³‡ ಗà³à²ªà³à²¤à²ªà²¦ ನೀಡಲಾಗಿಲà³à²²"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿಸಲಾಗà³à²µà³à²¦à²¿à²²à³à²²à³à²²."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ನೀವೠಕಡಿಮೆ ಪಾಸà³â€Œà²µà²°à³à²¡à³ ಅನà³à²¨à³ ಆರಿಸಬೇಕà³."
@@ -598,3 +492,81 @@ msgstr "%s ಗಾಗಿ ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿà
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "ನಿಮà³à²® ಗà³à²ªà³à²¤à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠನೀವೠಬಹಳ ಸಮಯ ಕಾಯಬೇಕà³"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ಇದೠಹಳೆಯದರ ಹಾಗೆಯೇ ಇದೆ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "ಮೆಮೊರಿ ನಿಯೋಜನಾ ದೋಷ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ಇದೠಒಂದೠಸಮಾನ ಪೂರà³à²µà²¾à²ªà²°à²µà²¾à²—ಿದೆ (palindrome)"
+
+#~ msgid "case changes only"
+#~ msgstr "ಕೇವಲ ಕೇಸೠಗಳ ಬದಲಾವಣೆಯಾಗಿದೆ ಅಷà³à²Ÿà³†"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ಇದೠಹಳೆಯದಕà³à²•à³† ಬಹಳಷà³à²Ÿà³ ಹೋಲà³à²¤à³à²¤à²¦à³†"
+
+#~ msgid "is too simple"
+#~ msgstr "ಇದೠಬಹಳ ಸರಳವಾಗಿದೆ"
+
+#~ msgid "is rotated"
+#~ msgstr "ಇದೠತಿರà³à²—ಿಸಲಾಗಿದೆ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ಸಾಕಷà³à²Ÿà³ ಕà³à²¯à²¾à²°à³†à²•à³à²Ÿà²°à³ ವರà³à²—ಗಳೠಇಲà³à²²"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "ಇದೠಒಂದೇ ಬಗೆಯ ಬಹಳಷà³à²Ÿà³ ಕà³à²¯à²¾à²°à³†à²•à³à²Ÿà²°à³à²—ಳನà³à²¨à³ ಅನà³à²•à³à²°à²®à²µà²¾à²—ಿ ಹೊಂದಿದೆ"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "ಇದೠಒಂದೇ ಬಗೆಯ ಉದà³à²¦à²¨à³†à²¯ ಅಕà³à²·à²°à²—ಳ ಅನà³à²•à³à²°à²®à²µà²¨à³à²¨à³ ಹೊಂದಿದೆ"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ಇದೠಯಾವà³à²¦à³Š ಒಂದೠಬಗೆಯಲà³à²²à²¿ ಬಳಕೆದಾರ ಹೆಸರನà³à²¨à³ ಒಳಗೊಂಡಿದೆ"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ಕೆಟà³à²Ÿ ಗà³à²ªà³à²¤à²ªà²¦: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ಖಾತೆಯನà³à²¨à³ ತಾತà³à²•à²¾à²²à²¿à²•à²µà²¾à²—ಿ ಲಾಕೠಮಾಡಲಾಗಿದೆ (%ld ಸೆಕೆಂಡà³à²—ಳೠಉಳಿದಿವೆ)"
+
+#~ msgid "Authentication error"
+#~ msgstr "ದೃಢೀಕರಣ ದೋಷ"
+
+#~ msgid "Service error"
+#~ msgstr "ಸೇವಾ ದೋಷ"
+
+#~ msgid "Unknown user"
+#~ msgstr "ಗೊತà³à²¤à²¿à²°à²¦ ಬಳಕೆದಾರ"
+
+#~ msgid "Unknown error"
+#~ msgstr "ಗೊತà³à²¤à²¿à²°à²¦ ದೋಷ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= ಗೆ ಕೊಡಲಾದ ಕೆಟà³à²Ÿ ಸಂಖà³à²¯à³†\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: ಗà³à²°à³à²¤à²¿à²¸à²²à²¾à²—ದ ಆಯà³à²•à³† %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ಎಲà³à²²à²¾ ಬಳಕೆದಾರರನà³à²¨à³ ಶೂನà³à²¯à²µà²²à³à²²à²¦à³à²¦à²•à³à²•à³† ಪà³à²¨à²°à³ ಸಂಯೋಜಿಸಲೠಆಗà³à²µà³à²¦à²¿à²²à³à²²\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ಪà³à²°à²µà³‡à²¶ ವಿಫಲತೆಗಳೠಇತà³à²¤à³€à²šà²¿à²¨ ವಿಫಲತೆ ಇಂದ\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ko.gmo b/po/ko.gmo
index 2945f324..ef20d46d 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 2d045e8d..ffb77f86 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -7,67 +7,55 @@
# eukim <eukim@redhat.com>, 2007,2009
# eukim <eukim@redhat.com>, 2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# simmon <simmon@nplob.com>, 2021.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2013-04-16 09:34-0400\n"
-"Last-Translator: eukim <eukim@redhat.com>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/fedora/language/"
-"ko/)\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-24 10:04+0000\n"
+"Last-Translator: simmon <simmon@nplob.com>\n"
+"Language-Team: Korean <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/ko/>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Zanata 3.8.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "..시간 초과...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...죄송합니다. ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ìž˜ëª»ëœ ì¸ì¦ 대화 (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr "암호:"
+msgstr "암호: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "새 %s 암호:"
+msgstr "현재 %s 암호: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "새 암호:"
+msgstr "현재 암호: "
#: libpam/pam_get_authtok.c:44
#, c-format
msgid "New %s password: "
-msgstr "새 %s 암호:"
+msgstr "새 %s 암호: "
#: libpam/pam_get_authtok.c:45
msgid "New password: "
-msgstr "새 암호:"
+msgstr "새 암호: "
#: libpam/pam_get_authtok.c:47
#, c-format
msgid "Retype new %s password: "
-msgstr "새 %s 암호 재입력:"
+msgstr "새 %s 암호 다시 입력: "
#: libpam/pam_get_authtok.c:48
msgid "Retype new password: "
-msgstr "새 암호 재입력:"
+msgstr "새 암호 다시 입력: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
@@ -76,12 +64,11 @@ msgstr "죄송합니다. 암호가 ì¼ì¹˜í•˜ì§€ 않습니다."
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
msgid "Retype %s"
-msgstr "다시 입력 %s "
+msgstr "%s 다시 입력"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
-msgstr "암호가 변경ë˜ì§€ 않습니다. "
+msgstr "암호 ë³€ê²½ì„ ì·¨ì†Œí–ˆìŠµë‹ˆë‹¤."
#: libpam/pam_item.c:311
msgid "login:"
@@ -97,7 +84,7 @@ msgstr "치명ì ì¸ 오류 - 즉시 중지"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
-msgstr "모듈 가져오기 실패"
+msgstr "모듈 불러오기 실패"
#: libpam/pam_strerror.c:46
msgid "Symbol not found"
@@ -125,11 +112,11 @@ msgstr "ì¸ì¦ 실패"
#: libpam/pam_strerror.c:58
msgid "Insufficient credentials to access authentication data"
-msgstr "ì¸ì¦ ë°ì´í„°ì— ì•¡ì„¸ìŠ¤í•˜ê¸°ì— ì¸ì¦ì´ 불충분함"
+msgstr "ì¸ì¦ ë°ì´í„° ì ‘ê·¼ì— ë¶ˆì¶©ë¶„í•œ ì¸ì¦ ì •ë³´"
#: libpam/pam_strerror.c:60
msgid "Authentication service cannot retrieve authentication info"
-msgstr "ì¸ì¦ 서비스가 ì¸ì¦ 정보를 ì½ì„ 수 ì—†ìŒ"
+msgstr "ì¸ì¦ 서비스ì—ì„œ ì¸ì¦ 정보를 가져올 수 없습니다"
#: libpam/pam_strerror.c:62
msgid "User not known to the underlying authentication module"
@@ -141,7 +128,7 @@ msgstr "서비스를 최대로 재시ë„함"
#: libpam/pam_strerror.c:66
msgid "Authentication token is no longer valid; new one required"
-msgstr "ë”ì´ìƒ ì¸ì¦ 토í°ì´ 유효하지 ì•ŠìŒ: 새로운 ì¸ì¦ í† í° í•„ìš”"
+msgstr "ë” ì´ìƒ ì¸ì¦ 토í°ì´ 유효하지 않습니다. 새로운 ì¸ì¦ 토í°ì´ 필요합니다"
#: libpam/pam_strerror.c:68
msgid "User account has expired"
@@ -169,7 +156,7 @@ msgstr "특정 모듈 ë°ì´í„°ê°€ ì—†ìŒ"
#: libpam/pam_strerror.c:80
msgid "Bad item passed to pam_*_item()"
-msgstr "pam_*_item()ì— ìž˜ëª»ëœ í•­ëª©ì´ ì „ë‹¬ë¨"
+msgstr "pam_*_item()ì— ìž˜ëª»ëœ í•­ëª© 전달"
#: libpam/pam_strerror.c:82
msgid "Conversation error"
@@ -189,15 +176,15 @@ msgstr "ì¸ì¦ í† í° ìž ê¸ˆ 장치 사용중"
#: libpam/pam_strerror.c:90
msgid "Authentication token aging disabled"
-msgstr "ì¸ì¦ í† í° ê¸°í•œì´ ë¹„í™œì„±í™”ë¨"
+msgstr "ì¸ì¦ í† í° ê¸°í•œì´ ë¹„í™œì„±í™”ë©ë‹ˆë‹¤"
#: libpam/pam_strerror.c:92
msgid "Failed preliminary check by password service"
-msgstr "암호 서비스로 사전 í™•ì¸ ì‹¤íŒ¨"
+msgstr "암호 서비스ì—ì„œ 사전 í™•ì¸ ì‹¤íŒ¨"
#: libpam/pam_strerror.c:94
msgid "The return value should be ignored by PAM dispatch"
-msgstr "복귀 ê°’ì€ PAM ë””ìŠ¤íŒ¨ì¹˜ì— ì˜í•´ 무시ë¨"
+msgstr "복귀 ê°’ì€ PAM ë””ìŠ¤íŒ¨ì¹˜ì— ì˜í•´ 무시ë©ë‹ˆë‹¤"
#: libpam/pam_strerror.c:96
msgid "Module is unknown"
@@ -219,102 +206,58 @@ msgstr "libpamì„ ë‹¤ì‹œ 불러오려면 ì‘ìš© í”„ë¡œê·¸ëž¨ì´ í•„ìš”í•¨"
msgid "Unknown PAM error"
msgstr "알 수 없는 PAM 오류"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ì´ì „ 암호와 ê°™ìŒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "메모리 할당 오류 "
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ì•žë’¤ ì–´ëŠìª½ì—ì„œ ì½ì–´ë„ ê°™ì€ ë¬¸ë§¥ìž„"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "대소문ìžë§Œ 변경"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ì´ì „ 암호와 유사함"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "너무 간단함"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "êµì²´ë¨"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ë¬¸ìž í´ëž˜ìŠ¤ê°€ 부족합니다 "
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "너무 ë§Žì€ ë™ì¼í•œ 문ìžê°€ ì—°ì†ì ìœ¼ë¡œ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤ "
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "너무 길게 단순한 문ìžê°€ ì—°ì†ì ìœ¼ë¡œ í¬í•¨ë˜ì–´ 있습니다 "
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ì–´ë– í•œ 형ì‹ìœ¼ë¡œ ì‚¬ìš©ìž ì´ë¦„ì„ í¬í•¨í•©ë‹ˆë‹¤. "
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "암호가 ì—†ìŒ"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "..시간 초과...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS 암호는 변경할 수 없습니다."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...죄송합니다. ì‹œê°„ì´ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ìž˜ëª»ëœ ì•”í˜¸: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ìž˜ëª»ëœ ì¸ì¦ 대화 (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s 실패: 종료 코드 %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s 실패: 신호 발견 %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s 실패: ì•Œ 수 없는 ìƒíƒœ 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+"사용법: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "%u ë¡œê·¸ì¸ ì‹¤íŒ¨ë¡œ ì¸í•´ ê³„ì •ì´ ìž ê¹€ "
+msgstr "ê³„ì •ì´ %u ë¡œê·¸ì¸ ì‹¤íŒ¨ë¡œ ì¸í•´ ê³„ì •ì´ ìž ê¹€ ìƒíƒœê°€ ë©ë‹ˆë‹¤."
+
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(해제시까지 %d 분 남았습니다)"
-#: modules/pam_faillock/pam_faillock.c:650
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(해제시까지 %d 분 남았습니다)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -347,30 +290,29 @@ msgstr "새로운 ê³„ì •ì„ ì‚¬ìš©í•´ 주셔서 ê°ì‚¬í•©ë‹ˆë‹¤!"
#: modules/pam_lastlog/pam_lastlog.c:610
#, c-format
msgid "Last failed login:%s%s%s"
-msgstr "마지막 ë¡œê·¸ì¸ ì‹¤íŒ¨:%s%s%s "
+msgstr "마지막 실패한 로그ì¸:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:619 modules/pam_lastlog/pam_lastlog.c:626
#, c-format
msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
-msgstr[0] "마지막 ë¡œê·¸ì¸ í›„ %d ë²ˆì˜ ë¡œê·¸ì¸ ì‹œë„ê°€ 실패하였습니다. "
+msgstr[0] "마지막 ë¡œê·¸ì¸ í›„ %d ë²ˆì˜ ë¡œê·¸ì¸ ì‹œë„ê°€ 실패하였습니다."
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
-msgstr "마지막 ë¡œê·¸ì¸ í›„ %d ë²ˆì˜ ë¡œê·¸ì¸ ì‹œë„ê°€ 실패하였습니다. "
+msgstr "마지막 성공ì ì¸ ë¡œê·¸ì¸ ì´í›„ì— %dë²ˆì˜ ì‹¤íŒ¨í•œ ë¡œê·¸ì¸ ì‹œë„ê°€ 있었습니다."
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
-msgstr "'%s' 대해 너무 ë§Žì´ ë¡œê·¸ì¸í•¨."
+msgstr "'%s' 대해 너무 ë§Žì€ ë¡œê·¸ì¸ ì‹œë„ê°€ 있었습니다."
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "새로운 ë©”ì¼ì´ 있습니다."
+msgstr "새로운 ì „ìžìš°íŽ¸ì´ 없습니다."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -404,66 +346,65 @@ msgstr "%s í´ë”ì— ì˜¤ëž˜ëœ ë©”ì¼ì´ 있습니다."
msgid "You have mail in folder %s."
msgstr "%s í´ë”ì— ë©”ì¼ì´ 있습니다."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr "'%s' 디렉토리 ìƒì„± 중. "
+msgstr "'%s' 디렉토리 ìƒì„± 중."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
-msgstr "'%s' 디렉토리를 ìƒì„± ë° ì´ˆê¸°í™”í•  수 없습니다. "
+msgstr "'%s' 디렉토리를 ìƒì„± ë° ì´ˆê¸°í™” í•  수 없습니다."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "ì´ë¯¸ 사용ë˜ê³  있는 암호입니다. 다른 암호를 ì„ íƒí•´ 주십시오."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "ì´ë¯¸ 사용ë˜ê³  있는 암호입니다."
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "기본값 보안 문맥 %s\n"
+msgstr "기본 보안 ë‚´ìš©ì€ %s 입니다."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
-msgstr "다른 ì—­í•  ë˜ëŠ” ë ˆë²¨ì„ ìž…ë ¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ? "
+msgstr "다른 ì—­í•  ë˜ëŠ” ë ˆë²¨ì„ ìž…ë ¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: modules/pam_selinux/pam_selinux.c:189
msgid "role:"
-msgstr "ì—­í• : "
+msgstr "ì—­í• :"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "%s ì—­í• ì— ëŒ€í•œ 기본값 ìœ í˜•ì´ ì—†ìŒ \n"
+msgstr "ì—­í•  %s ì— ëŒ€í•œ 기본값 ìœ í˜•ì´ ì—†ìŠµë‹ˆë‹¤."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
-msgstr "레벨: "
+msgstr "수준:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "유효한 보안 ë¬¸ë§¥ì´ ì—†ìŒ"
+msgstr "유효한 보안 ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "%s를 위한 유효한 ë‚´ìš©ì„ ê°€ì ¸ì˜¬ 수 없습니다."
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "보안 문맥 %s 할당"
+msgstr "보안 ë‚´ìš© %sì´ í• ë‹¹ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "키 ìƒì„± 문맥 %s 할당 "
+msgstr "키 ìƒì„± ë‚´ìš© %s 할당ë˜ì—ˆìŠµë‹ˆë‹¤."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -480,119 +421,141 @@ msgstr "pam_set_item() 실패\n"
msgid "login: failure forking: %m"
msgstr "로그ì¸: í¬í¬ ìž‘ì—…(forking) 실패: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ì¼ì‹œì ìœ¼ë¡œ ê³„ì •ì´ ìž ê¸ˆë˜ì—ˆìŠµë‹ˆë‹¤ (%ld ì´ˆ 남ìŒ) "
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "ì¸ì¦ 오류"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "서비스 오류"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ì•Œ 수 없는 사용ìž"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "알 수 없는 오류"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: ìž˜ëª»ëœ ìˆ«ìžê°€ --reset=ì— ì„¤ì •ë¨\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: 알려지지 ì•Šì€ ì˜µì…˜ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: 모든 사용ìžë¥¼ ì˜ì´ ì•„ë‹Œ 값으로 설정할 수 ì—†ìŒ\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "ë¡œê·¸ì¸ ì‹¤íŒ¨ 마지막 실패 다ìŒì—ì„œ ë°œìƒ\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
-#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr "액세스 허용 (%ld ì´ˆ ì „ 마지막으로 액세스ë˜ì—ˆìŠµë‹ˆë‹¤) "
+msgstr "ì ‘ê·¼ì´ í—ˆìš©ë˜ì—ˆìŠµë‹ˆë‹¤ (마지막 ì ‘ê·¼ì´ %ld ì´ˆ ì „ ì´ì—ˆìŠµë‹ˆë‹¤)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
-msgstr "ê³„ì •ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤: 시스템 관리ìžì—게 알려 주십시오"
+msgstr "ê³„ì •ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤; 시스템 관리ìžì—게 알려 주십시오."
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "암호를 즉시 변경해 주십시오 (root가 강제 설정함)"
+msgstr "암호를 빨리 변경해 주십시오 (관리ìžê°€ 강제합니다)."
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "암호를 즉시 변경해 주십시오 (ì˜¤ëž˜ëœ ì•”í˜¸)"
+msgstr "암호를 긴급히 변경해 주십시오 (암호 ê¸°í•œì´ ë났습니다)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "경고: %dì¼ ë‚´ë¡œ 암호가 만료ë©ë‹ˆë‹¤"
+msgstr[0] "경고: 암호 ê¸°í•œì´ %d ì¼ ì´ë‚´ë¡œ ë납니다."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "경고: %dì¼ ë‚´ë¡œ 암호가 만료ë©ë‹ˆë‹¤"
+msgstr "경고: 암호 ê¸°í•œì´ %d ì¼ ì´ë‚´ë¡œ ë납니다."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "NIS 암호는 변경할 수 없습니다."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "암호를 입력하지 않았습니다."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "암호를 바꾸지 않았습니다."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
-msgstr "ë” ì§§ì€ ì•”í˜¸ë¥¼ ì„ íƒí•´ì•¼í•©ë‹ˆë‹¤."
+msgstr "ë” ì§§ì€ ì•”í˜¸ë¥¼ 입력해야합니다."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "ë” ê¸´ 암호를 ì„ íƒí•´ 주십시오"
+msgstr "ë” ê¸´ 비밀번호를 ì„ íƒí•´ 주세요."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
msgid "Changing password for %s."
-msgstr "%sì— ëŒ€í•œ 암호 변경 중 "
+msgstr "%sì˜ ì•”í˜¸ë¥¼ 바꿉니다."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "암호 ë³€ê²½ì„ ìœ„í•´ ì¡°ê¸ˆë” ê¸°ë‹¤ë ¤ 주십시오."
+msgstr "암호를 바꾸려면 ë” ì˜¤ëž˜ 기다려야합니다."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ì´ì „ 암호와 ê°™ìŒ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "메모리 할당 오류 "
+
+#~ msgid "is a palindrome"
+#~ msgstr "ì•žë’¤ ì–´ëŠìª½ì—ì„œ ì½ì–´ë„ ê°™ì€ ë¬¸ë§¥ìž„"
+
+#~ msgid "case changes only"
+#~ msgstr "대소문ìžë§Œ 변경"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ì´ì „ 암호와 유사함"
+
+#~ msgid "is too simple"
+#~ msgstr "너무 간단함"
+
+#~ msgid "is rotated"
+#~ msgstr "êµì²´ë¨"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ë¬¸ìž í´ëž˜ìŠ¤ê°€ 부족합니다 "
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "너무 ë§Žì€ ë™ì¼í•œ 문ìžê°€ ì—°ì†ì ìœ¼ë¡œ í¬í•¨ë˜ì–´ìžˆìŠµë‹ˆë‹¤ "
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "너무 길게 단순한 문ìžê°€ ì—°ì†ì ìœ¼ë¡œ í¬í•¨ë˜ì–´ 있습니다 "
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ì–´ë– í•œ 형ì‹ìœ¼ë¡œ ì‚¬ìš©ìž ì´ë¦„ì„ í¬í•¨í•©ë‹ˆë‹¤. "
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ìž˜ëª»ëœ ì•”í˜¸: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ì¼ì‹œì ìœ¼ë¡œ ê³„ì •ì´ ìž ê¸ˆë˜ì—ˆìŠµë‹ˆë‹¤ (%ld ì´ˆ 남ìŒ) "
+
+#~ msgid "Authentication error"
+#~ msgstr "ì¸ì¦ 오류"
+
+#~ msgid "Service error"
+#~ msgstr "서비스 오류"
+
+#~ msgid "Unknown user"
+#~ msgstr "ì•Œ 수 없는 사용ìž"
+
+#~ msgid "Unknown error"
+#~ msgstr "알 수 없는 오류"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: ìž˜ëª»ëœ ìˆ«ìžê°€ --reset=ì— ì„¤ì •ë¨\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: 알려지지 ì•Šì€ ì˜µì…˜ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: 모든 사용ìžë¥¼ ì˜ì´ ì•„ë‹Œ 값으로 설정할 수 ì—†ìŒ\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ë¡œê·¸ì¸ ì‹¤íŒ¨ 마지막 실패 다ìŒì—ì„œ ë°œìƒ\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/kw_GB.po b/po/kw_GB.po
index 6591c585..dadd947b 100644
--- a/po/kw_GB.po
+++ b/po/kw_GB.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM 1.2.1\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Cornish (United Kingdom)\n"
@@ -19,21 +19,8 @@ msgstr ""
"3\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -213,96 +200,57 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -353,7 +301,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -394,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -444,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -469,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -544,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +447,7 @@ msgstr[2] ""
msgstr[3] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +456,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr ""
diff --git a/po/ky.po b/po/ky.po
index ec16f1f9..ed8ee848 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Kirgyz (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +299,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +340,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +390,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +415,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,14 +435,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -561,6 +451,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/lt.po b/po/lt.po
index bf1b3eef..1d021983 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian (http://www.transifex.com/projects/p/fedora/"
@@ -21,21 +21,8 @@ msgstr ""
"%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,56 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +304,7 @@ msgstr[2] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +345,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +395,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +420,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,7 +440,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -557,7 +449,7 @@ msgstr[1] ""
msgstr[2] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -566,6 +458,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/lv.po b/po/lv.po
index c3da9d75..16d8add1 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian (http://www.transifex.com/projects/p/fedora/language/"
@@ -21,21 +21,8 @@ msgstr ""
"2);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,56 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +304,7 @@ msgstr[2] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +345,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +395,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +420,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,7 +440,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -557,7 +449,7 @@ msgstr[1] ""
msgstr[2] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -566,6 +458,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/mk.po b/po/mk.po
index 429e9a74..8b195b78 100644
--- a/po/mk.po
+++ b/po/mk.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Macedonian (http://www.transifex.com/projects/p/fedora/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/ml.gmo b/po/ml.gmo
index a0a0b06f..ca5e541d 100644
--- a/po/ml.gmo
+++ b/po/ml.gmo
Binary files differ
diff --git a/po/ml.po b/po/ml.po
index 3b3843d5..b7f4d877 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-15 01:55-0400\n"
"Last-Translator: Ani Peter <apeter@redhat.com>\n"
"Language-Team: Malayalam <discuss@lists.smc.org.in>\n"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...സമയപരിധി അവസാനികàµà´•àµà´¨àµà´¨àµ...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...à´•àµà´·à´®à´¿à´•àµà´•à´£à´‚, നിങàµà´™à´³àµà´Ÿàµ† സമയം à´•à´´à´¿à´žàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "തെറàµà´±à´¾à´¯ സംവാദം (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "അടയാളവാകàµà´•àµ: "
@@ -216,99 +203,56 @@ msgstr "à´ªàµà´°à´¯àµ‹à´—à´™àµà´™à´³àµâ€à´•àµà´•àµ വീണàµà´Ÿàµà´‚ l
msgid "Unknown PAM error"
msgstr "അപരിചിതമായ PAM പിശകàµ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "പഴയതൠപോലെ തനàµà´¨àµ†à´¯à´¾à´•àµà´¨àµà´¨à´¤àµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "മെമàµà´®à´±à´¿ à´…à´¨àµà´µà´¦à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിശകàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ഒരൠപാലിനàµâ€à´¡àµà´°àµ‹à´‚ ആണàµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "à´…à´•àµà´·à´°à´™àµà´™à´³àµà´Ÿàµ† വലിപàµà´ªà´‚ മാതàµà´°à´‚ മാറàµà´¨àµà´¨à´¤àµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "പഴയതിനൠസാമàµà´¯à´®àµà´³àµà´³à´¤àµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "സാധാരണയàµà´³àµà´³à´¤àµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "is rotated"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "മതിയായ à´•àµà´¯à´¾à´°à´•àµà´Ÿà´°àµâ€ à´•àµà´²à´¾à´¸àµà´¸àµà´•à´³àµâ€ ലഭàµà´¯à´®à´²àµà´²"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "à´…à´Ÿàµà´¤àµà´¤à´Ÿàµà´¤àµà´¤àµ ഒരേപോലàµà´³àµà´³ അനവധി à´…à´•àµà´·à´°à´™àµà´™à´³àµà´£àµà´Ÿàµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "വളരെയധികം ഒരേ തരതàµà´¤à´¿à´²àµà´³àµà´³ à´…à´•àµà´·à´°à´™àµà´™à´³à´Ÿà´™àµà´™àµà´¨àµà´¨àµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† നാമം à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ ഒരൠതരതàµà´¤à´¿à´²àµà´£àµà´Ÿàµàµ"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "അടയാളവാകàµà´•àµ നലàµâ€à´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...സമയപരിധി അവസാനികàµà´•àµà´¨àµà´¨àµ...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS അടയാളവാകàµà´•àµ മാറàµà´±àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´¾à´•àµà´¨àµà´¨à´¿à´²àµà´²."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...à´•àµà´·à´®à´¿à´•àµà´•à´£à´‚, നിങàµà´™à´³àµà´Ÿàµ† സമയം à´•à´´à´¿à´žàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "തെറàµà´±à´¾à´¯ അടയാളവാകàµà´•àµ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "തെറàµà´±à´¾à´¯ സംവാദം (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s പരാâ€à´œà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿàµ: %d à´Žà´¨àµà´¨ കോഡിലàµâ€ നിനàµà´¨àµà´‚ à´ªàµà´±à´¤àµà´¤àµ à´•à´Ÿà´•àµà´•àµà´•"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s പരാâ€à´œà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿàµ: %d%s സിഗàµà´¨à´²àµâ€ ലഭàµà´¯à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s പരാâ€à´œà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿàµ: അപരിചിതമായ 0x%x നിലവാരം"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿ ലോഗിനàµà´•à´³àµâ€ കാരണം à´…à´•àµà´•àµŒà´£àµà´Ÿàµ താലàµâ€à´•àµà´•à´¾à´²à´¿à´•à´®à´¾à´¯à´¿ പൂടàµà´Ÿà´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -360,7 +304,7 @@ msgstr[1] "ശരിയായി അവസാനം ലോഗിനàµâ€ ചെ
msgid "There were %d failed login attempts since the last successful login."
msgstr "ശരിയായി അവസാനം ലോഗിനàµâ€ ചെയàµà´¤ ശേഷം %d തവണ ലോഗിനàµâ€ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'-നൠഅനവധി ലോഗിനàµà´•à´³àµâ€."
@@ -402,22 +346,22 @@ msgstr "%s ഫോളàµâ€à´¡à´±à´¿à´²àµâ€ നിങàµà´™à´³àµâ€à´•àµà´•àµ
msgid "You have mail in folder %s."
msgstr "%s ഫോളàµâ€à´¡à´±à´¿à´²àµâ€ നിങàµà´™à´³àµâ€à´•àµà´•àµ മെയിലàµâ€ ഉണàµà´Ÿàµ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "'%s' ഡയറകàµà´Ÿà´±à´¿ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨àµ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "%s ഡയറകàµà´Ÿà´±à´¿ ഉണàµà´Ÿà´¾à´•àµà´•àµà´µà´¾à´¨àµà´‚ ആരംഭികàµà´•àµà´µà´¾à´¨àµà´‚ സാധàµà´¯à´®à´¾à´¯à´¿à´²àµà´²."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "അടയാളവാകàµà´•àµ നിലവിലàµâ€ ഉപയോഗിതàµà´¤à´¿à´²àµà´³àµà´³à´¤à´¾à´£àµ. മറàµà´±àµŠà´¨àµà´¨àµ നലàµâ€à´•àµà´•."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "രഹസàµà´¯à´µà´¾à´•àµà´•àµ നിലവിലàµâ€ ഉപയോഗിചàµà´šà´¿à´°à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨àµ."
@@ -453,12 +397,12 @@ msgstr "ശരിയായ സെകàµà´¯àµ‚à´°à´¿à´±àµà´±à´¿ കോണàµâ€à
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "%s à´Žà´¨àµà´¨ സെകàµà´¯àµ‚à´°à´¿à´±àµà´±à´¿ കോണàµâ€à´Ÿàµ†à´•àµà´¸àµà´±àµà´±àµ നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "കീ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ കോണàµâ€à´Ÿàµ†à´•àµà´¸àµà´±àµà´±àµ ആയ %s നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
@@ -478,66 +422,7 @@ msgstr "pam_set_item() ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജà´
msgid "login: failure forking: %m"
msgstr "login: ഫോരàµâ€à´•àµà´•àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പരാജയം: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "à´…à´•àµà´•àµŒà´£àµà´Ÿàµ താലàµâ€à´•àµà´•à´¾à´²à´¿à´•à´®à´¾à´¯à´¿ പൂടàµà´Ÿà´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ (%ld നിമിഷങàµà´™à´³àµâ€ ബാകàµà´•à´¿)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "ആധികാരികത ഉറപàµà´ªà´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിശകàµ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "സരàµâ€à´µàµ€à´¸àµ പിശകàµ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "അപരിചിതമായ ഉപയോകàµà´¤à´¾à´µàµàµ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "അപരിചിതമായ പിശകàµ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s:നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ നംബരàµâ€ തെറàµà´±à´¾à´£àµ, --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Unrecognised ഉപാധി %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: à´Žà´²àµà´²à´¾ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµâ€à´•àµà´•àµà´‚ പൂജàµà´¯à´‚ à´…à´²àµà´²à´¾à´¤àµ† à´•àµà´°à´®à´¿à´•à´°à´¿à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Failures Latest failure From\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "à´…à´¨àµà´µà´¾à´¦à´‚ നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ (à´’à´Ÿàµà´µà´¿à´²àµâ€ à´ªàµà´°à´µàµ‡à´¶à´¿à´šàµà´šà´¤àµàµ %ld സെകàµà´•à´¨àµâ€à´¡àµà´•à´³àµâ€à´•àµà´•àµàµ à´®àµà´®àµà´ªà´¾à´£àµàµ)."
@@ -562,7 +447,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "നിങàµà´™à´³àµà´Ÿàµ† അടയാളവാകàµà´•àµ ഉടനെ മാറàµà´±àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ (അടയാളവാകàµà´•àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨àµ സമയമായി)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -570,7 +455,7 @@ msgstr[0] "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ: നിങàµà´™à´³àµà´Ÿàµ†
msgstr[1] "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ: നിങàµà´™à´³àµà´Ÿàµ† അടയാളവാകàµà´•à´¿à´¨àµà´±àµ† കാലാവധി %d ദിവസതàµà´¤à´¿à´¨àµà´³àµà´³à´¿à´²àµâ€ അവസാനികàµà´•àµà´¨àµà´¨àµ"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ: നിങàµà´™à´³àµà´Ÿàµ† അടയാളവാകàµà´•à´¿à´¨àµà´±àµ† കാലാവധി %d ദിവസതàµà´¤à´¿à´¨àµà´³àµà´³à´¿à´²àµâ€ അവസാനികàµà´•àµà´¨àµà´¨àµ"
@@ -579,6 +464,16 @@ msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ: നിങàµà´™à´³àµà´Ÿàµ† à´…
msgid "NIS password could not be changed."
msgstr "NIS അടയാളവാകàµà´•àµ മാറàµà´±àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´¾à´•àµà´¨àµà´¨à´¿à´²àµà´²."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "അടയാളവാകàµà´•àµ നലàµâ€à´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS അടയാളവാകàµà´•àµ മാറàµà´±àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´¾à´•àµà´¨àµà´¨à´¿à´²àµà´²."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "നിങàµà´™àµ¾ ഒരൠഹàµà´°à´¸àµà´µ പാസàµâ€Œà´µàµ‡à´¡àµ തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•à´£à´‚."
@@ -597,3 +492,81 @@ msgstr "%s-à´¨àµà´³à´³ അടയാളവാകàµà´•àµ മാറàµà´±àµà´¨à
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "നിങàµà´™à´³àµà´Ÿàµ† അടയാളവാകàµà´•àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ ഇനിയàµà´‚ കാതàµà´¤à´¿à´°à´¿à´•àµà´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµ."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "പഴയതൠപോലെ തനàµà´¨àµ†à´¯à´¾à´•àµà´¨àµà´¨à´¤àµàµ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "മെമàµà´®à´±à´¿ à´…à´¨àµà´µà´¦à´¿à´¯àµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിശകàµ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ഒരൠപാലിനàµâ€à´¡àµà´°àµ‹à´‚ ആണàµàµ"
+
+#~ msgid "case changes only"
+#~ msgstr "à´…à´•àµà´·à´°à´™àµà´™à´³àµà´Ÿàµ† വലിപàµà´ªà´‚ മാതàµà´°à´‚ മാറàµà´¨àµà´¨à´¤àµàµ"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "പഴയതിനൠസാമàµà´¯à´®àµà´³àµà´³à´¤àµàµ"
+
+#~ msgid "is too simple"
+#~ msgstr "സാധാരണയàµà´³àµà´³à´¤àµàµ"
+
+#~ msgid "is rotated"
+#~ msgstr "is rotated"
+
+#~ msgid "not enough character classes"
+#~ msgstr "മതിയായ à´•àµà´¯à´¾à´°à´•àµà´Ÿà´°àµâ€ à´•àµà´²à´¾à´¸àµà´¸àµà´•à´³àµâ€ ലഭàµà´¯à´®à´²àµà´²"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "à´…à´Ÿàµà´¤àµà´¤à´Ÿàµà´¤àµà´¤àµ ഒരേപോലàµà´³àµà´³ അനവധി à´…à´•àµà´·à´°à´™àµà´™à´³àµà´£àµà´Ÿàµàµ"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "വളരെയധികം ഒരേ തരതàµà´¤à´¿à´²àµà´³àµà´³ à´…à´•àµà´·à´°à´™àµà´™à´³à´Ÿà´™àµà´™àµà´¨àµà´¨àµ"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† നാമം à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ ഒരൠതരതàµà´¤à´¿à´²àµà´£àµà´Ÿàµàµ"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "തെറàµà´±à´¾à´¯ അടയാളവാകàµà´•àµ: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "à´…à´•àµà´•àµŒà´£àµà´Ÿàµ താലàµâ€à´•àµà´•à´¾à´²à´¿à´•à´®à´¾à´¯à´¿ പൂടàµà´Ÿà´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ (%ld നിമിഷങàµà´™à´³àµâ€ ബാകàµà´•à´¿)"
+
+#~ msgid "Authentication error"
+#~ msgstr "ആധികാരികത ഉറപàµà´ªà´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിശകàµ"
+
+#~ msgid "Service error"
+#~ msgstr "സരàµâ€à´µàµ€à´¸àµ പിശകàµ"
+
+#~ msgid "Unknown user"
+#~ msgstr "അപരിചിതമായ ഉപയോകàµà´¤à´¾à´µàµàµ"
+
+#~ msgid "Unknown error"
+#~ msgstr "അപരിചിതമായ പിശകàµ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s:നലàµâ€à´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ നംബരàµâ€ തെറàµà´±à´¾à´£àµ, --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Unrecognised ഉപാധി %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: à´Žà´²àµà´²à´¾ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµâ€à´•àµà´•àµà´‚ പൂജàµà´¯à´‚ à´…à´²àµà´²à´¾à´¤àµ† à´•àµà´°à´®à´¿à´•à´°à´¿à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Failures Latest failure From\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/mn.po b/po/mn.po
index 136e2b73..9cd6e7a2 100644
--- a/po/mn.po
+++ b/po/mn.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian (http://www.transifex.com/projects/p/fedora/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/mr.gmo b/po/mr.gmo
index 41579e9b..8fa51112 100644
--- a/po/mr.gmo
+++ b/po/mr.gmo
Binary files differ
diff --git a/po/mr.po b/po/mr.po
index a6432e07..bfd9845a 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-05-03 03:46-0400\n"
"Last-Translator: sandeeps <sshedmak@redhat.com>\n"
"Language-Team: Marathi (http://www.transifex.com/projects/p/fedora/language/"
@@ -22,21 +22,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...वेळ फारच कमी आहे...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...माफ करा, तà¥à¤®à¤šà¥€ वेळ समापà¥à¤¤ à¤à¤¾à¤²à¥€ आहे!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "सदोषीत संवाद (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦: "
@@ -218,99 +205,56 @@ msgstr "अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—ास libpam ची आवशà¥à¤šà¤•à¤¤à¤¾
msgid "Unknown PAM error"
msgstr "अपरिचीत PAM तà¥à¤°à¥à¤Ÿà¥€"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ केलेले जà¥à¤£à¥à¤¯à¤¾ पà¥à¤°à¤®à¤¾à¤£à¥‡à¤š आहे"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "मेमरि वाटपवेळी तà¥à¤°à¥à¤Ÿà¥€"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "पॅलींडà¥à¤°à¥‹à¤® आहे"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "फकà¥à¤¤ आकार बदलाव"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ केलेले जà¥à¤£à¥à¤¯à¤¾ नà¥à¤°à¥‚पच आहे"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "खूपच सोपे आहे"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "सà¥à¤¤à¤° बदलविले गेले"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "अतिरिकà¥à¤¤ अकà¥à¤·à¤° गट उपलबà¥à¤§ नाही"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "पाठोपाठ खूप जासà¥à¤¤ समान अकà¥à¤·à¤° आढळले"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "मोनोटोनिक अकà¥à¤·à¤° शà¥à¤°à¥ƒà¤‚खला खूपच लांब आहे"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "कà¥à¤ à¤²à¥à¤¯à¤¾à¤¤à¤°à¥€ सà¥à¤µà¤°à¥‚पात वापरकरà¥à¤¤à¤¾ नाव आढळले"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ दिलेला नाही"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...वेळ फारच कमी आहे...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ बदलविले जाऊ शकत नाही."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...माफ करा, तà¥à¤®à¤šà¥€ वेळ समापà¥à¤¤ à¤à¤¾à¤²à¥€ आहे!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "अयोगà¥à¤¯ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "सदोषीत संवाद (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s अपयशी: à¤à¤•à¥à¤œà¥€à¤Ÿ कोड %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s अपयशी: संकेत %d%s पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s अपयशी: अपरिचीत सà¥à¤¥à¤¿à¤¤à¥€ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file रूटेड-फाइलनाव] [--user वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥‡ नाव] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u अपयशी पà¥à¤°à¤µà¥‡à¤¶ मà¥à¤³à¥‡ खाते कà¥à¤²à¥‚पबंद केले"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -362,7 +306,7 @@ msgstr[1] "शेवटचे यशसà¥à¤µà¥€ पà¥à¤°à¤µà¥‡à¤¶ पासू
msgid "There were %d failed login attempts since the last successful login."
msgstr "शेवटचे यशसà¥à¤µà¥€ पà¥à¤°à¤µà¥‡à¤¶ पासून %d अपयशी पà¥à¤°à¤µà¥‡à¤¶ पà¥à¤°à¤¯à¤¤à¥à¤¨ आढळले."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' करीता à¤à¤•à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ पà¥à¤°à¤µà¥‡à¤¶."
@@ -404,22 +348,22 @@ msgstr "संचयीका %s अंतरà¥à¤—त जà¥à¤£à¥‡ मेल à¤
msgid "You have mail in folder %s."
msgstr "संचयीका %s अंतरà¥à¤—त मेल आढळले गेले."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "संचयीका '%s' बनवित आहे."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "डिरेकà¥à¤Ÿà¥à¤°à¥€ '%s' बनवणà¥à¤¯à¤¾à¤¸ व पà¥à¤°à¤¾à¤°à¤‚भ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "हà¥à¤¯à¤¾ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦à¤šà¤¾ आधीच वापर à¤à¤¾à¤²à¤¾ आहे. दà¥à¤¸à¤°à¤¾ निवडा."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "पासवरà¥à¤¡ आधिपासूनच वापरले आहे."
@@ -455,12 +399,12 @@ msgstr "वैध सà¥à¤°à¤•à¥à¤·à¤¾ संदरà¥à¤­ नाही"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "सà¥à¤°à¤•à¥à¤·à¤¾ संदरà¥à¤­ %s लागू केले गेले"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "कि निरà¥à¤®à¤¾à¤£ संदरà¥à¤­ %s लागू केले गेले"
@@ -480,66 +424,7 @@ msgstr "pam_set_item() कारà¥à¤¯à¤¾à¤¨à¥à¤µà¥€à¤¤ करणà¥à¤¯à¤¾à¤¸ à
msgid "login: failure forking: %m"
msgstr "दाखलन: विभाजन अपयशी: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "खातं तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ कà¥à¤²à¥‚पबंद केले (%ld सेकंद शिलà¥à¤²à¤•)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "अधिपà¥à¤°à¤®à¤¾à¤£à¤¨ तà¥à¤°à¥à¤Ÿà¥€"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "सेवा तà¥à¤°à¥à¤Ÿà¥€"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "अपरिचीत वापरकरà¥à¤¤à¤¾"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "अपरिचित चूक"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= करीता अयोगà¥à¤¯ संखà¥à¤¯à¤¾ पà¥à¤°à¤µà¤¿à¤²à¥€ गेली\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: अपरिचीत परà¥à¤¯à¤¾à¤¯ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file रूटेड-फाइलनाव] [--user वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥‡ नाव] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: सरà¥à¤µ वापरकरà¥à¤¤à¤¾ विना-शूनà¥à¤¯ असे पà¥à¤¨à¥à¤¹à¤¸à¥à¤¥à¤¾à¤ªà¤¨ करू शकत नाही\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "पà¥à¤°à¤µà¥‡à¤¶ अपयशी अलिकडील अपयश पासून\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "पà¥à¤°à¤µà¥‡à¤¶ सà¥à¤µà¥€à¤•à¤¾à¤°à¤²à¥‡ (शेवटचा पà¥à¤°à¤µà¥‡à¤¶ %ld सेकंद पूरà¥à¤µà¥€ आढळला)."
@@ -562,7 +447,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "तà¥à¤®à¤šà¤¾ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ ततà¥à¤•à¤¾à¤³ बदलणà¥à¤¯à¤¾à¤šà¥€ आवशà¥à¤¯à¤•à¤¤à¤¾ आहे (गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ जà¥à¤¨à¤¾ आहे)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -570,7 +455,7 @@ msgstr[0] "सावधानता: तà¥à¤®à¤šà¥‡ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦
msgstr[1] "सावधानता: तà¥à¤®à¤šà¥‡ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ %d दिवस अंतरà¥à¤—त कालबाहà¥à¤¯ होईल"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "सावधानता: तà¥à¤®à¤šà¥‡ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ %d दिवसात कालबाहà¥à¤¯ होईल"
@@ -579,6 +464,16 @@ msgstr "सावधानता: तà¥à¤®à¤šà¥‡ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ %d
msgid "NIS password could not be changed."
msgstr "NIS गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ बदलविले जाऊ शकत नाही."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ दिलेला नाही"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ बदलविले जाऊ शकत नाही."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "आपण लहान संकेतशबà¥à¤¦ निवडणे आवशà¥à¤¯à¤• आहे."
@@ -597,3 +492,81 @@ msgstr "%s करीता गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ बदलवित आह
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "तà¥à¤®à¤šà¤¾ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦ बदलणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ बराच वेळ वाट पहावी लागेल"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ केलेले जà¥à¤£à¥à¤¯à¤¾ पà¥à¤°à¤®à¤¾à¤£à¥‡à¤š आहे"
+
+#~ msgid "memory allocation error"
+#~ msgstr "मेमरि वाटपवेळी तà¥à¤°à¥à¤Ÿà¥€"
+
+#~ msgid "is a palindrome"
+#~ msgstr "पॅलींडà¥à¤°à¥‹à¤® आहे"
+
+#~ msgid "case changes only"
+#~ msgstr "फकà¥à¤¤ आकार बदलाव"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ केलेले जà¥à¤£à¥à¤¯à¤¾ नà¥à¤°à¥‚पच आहे"
+
+#~ msgid "is too simple"
+#~ msgstr "खूपच सोपे आहे"
+
+#~ msgid "is rotated"
+#~ msgstr "सà¥à¤¤à¤° बदलविले गेले"
+
+#~ msgid "not enough character classes"
+#~ msgstr "अतिरिकà¥à¤¤ अकà¥à¤·à¤° गट उपलबà¥à¤§ नाही"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "पाठोपाठ खूप जासà¥à¤¤ समान अकà¥à¤·à¤° आढळले"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "मोनोटोनिक अकà¥à¤·à¤° शà¥à¤°à¥ƒà¤‚खला खूपच लांब आहे"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "कà¥à¤ à¤²à¥à¤¯à¤¾à¤¤à¤°à¥€ सà¥à¤µà¤°à¥‚पात वापरकरà¥à¤¤à¤¾ नाव आढळले"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "अयोगà¥à¤¯ गà¥à¤ªà¥à¤¤à¤¶à¤¬à¥à¤¦: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "खातं तातà¥à¤ªà¥‚रà¥à¤¤à¥‡ कà¥à¤²à¥‚पबंद केले (%ld सेकंद शिलà¥à¤²à¤•)"
+
+#~ msgid "Authentication error"
+#~ msgstr "अधिपà¥à¤°à¤®à¤¾à¤£à¤¨ तà¥à¤°à¥à¤Ÿà¥€"
+
+#~ msgid "Service error"
+#~ msgstr "सेवा तà¥à¤°à¥à¤Ÿà¥€"
+
+#~ msgid "Unknown user"
+#~ msgstr "अपरिचीत वापरकरà¥à¤¤à¤¾"
+
+#~ msgid "Unknown error"
+#~ msgstr "अपरिचित चूक"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= करीता अयोगà¥à¤¯ संखà¥à¤¯à¤¾ पà¥à¤°à¤µà¤¿à¤²à¥€ गेली\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: अपरिचीत परà¥à¤¯à¤¾à¤¯ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file रूटेड-फाइलनाव] [--user वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥‡ नाव] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: सरà¥à¤µ वापरकरà¥à¤¤à¤¾ विना-शूनà¥à¤¯ असे पà¥à¤¨à¥à¤¹à¤¸à¥à¤¥à¤¾à¤ªà¤¨ करू शकत नाही\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "पà¥à¤°à¤µà¥‡à¤¶ अपयशी अलिकडील अपयश पासून\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ms.po b/po/ms.po
index 0f965429..12be3f01 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-29 07:01-0500\n"
"Last-Translator: Tomáš Mráz <tmraz@fedoraproject.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -217,96 +204,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -357,7 +302,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -398,22 +343,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -448,12 +393,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -473,62 +418,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -548,14 +438,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -564,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/my.po b/po/my.po
index 91a627c2..c43e4cc1 100644
--- a/po/my.po
+++ b/po/my.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Burmese (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +299,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +340,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +390,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +415,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,14 +435,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -561,6 +451,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/nb.gmo b/po/nb.gmo
index 0ff85cfe..352b336a 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index c52adeb7..960f0a9c 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-05-17 18:48+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Norwegian Bokmål <https://translate.fedoraproject.org/"
@@ -24,21 +24,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.0.4\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Tiden er i ferd med utløpe..\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Beklager, tiden er utløpt!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "mislykket dialog (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Passord: "
@@ -218,96 +205,55 @@ msgstr "Programmet må spørre libpam på nytt"
msgid "Unknown PAM error"
msgstr "Ukjent PAM-feil"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "er det samme som det gamle"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "feil med minneallokering"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "er et palindrom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "kun endring av små/store bokstaver"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "er for likt det gamle"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "er for enkelt"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "er rotert"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ikke nok tegnklasser"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "inneholder for mange like tegn etter hverandre"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "inneholder for lang monoton tegnsekvens"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "inneholder brukernavnet i en eller annen form"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Inget passord har blitt angitt."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Tiden er i ferd med utløpe..\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Passordet kunne ikke endres."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Beklager, tiden er utløpt!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "SVAKT PASSORD: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "mislykket dialog (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s feilet: sluttkode %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s feilet: fikk signal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s feilet: ukjent status 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr "Bruk: %s [--dir /sti/til/tally-mappe] [--user brukernavn] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Konto låst som følge av %u mislykkede innlogginger."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minutter igjen til å låse opp)"
+msgstr[1] "(%d minutter igjen til å låse opp)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d minutter igjen til å låse opp)"
@@ -362,7 +308,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Det har vært %d feilede innloggingsforsøk siden siste innlogging uten feil."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "For mange innlogginger for «%s»."
@@ -403,22 +349,22 @@ msgstr "Du har ulest e-post i mappen %s."
msgid "You have mail in folder %s."
msgstr "Du har e-post i mappen %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Oppretter katalog «%s»."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Kan ikke lage og initiere katalog «%s»."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Passordet er allerede benyttet. Velg et annet."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Passordet har allerede vært brukt."
@@ -453,12 +399,12 @@ msgstr "Dette er ikke en gyldig sikkerhetskontekst."
msgid "A valid context for %s could not be obtained."
msgstr "Kunne ikke innhente gyldig kontekst for %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Sikkerhetskontekst «%s» tilordnet."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Kontekst «%s» for oppretting av nøkkel tilordnet."
@@ -478,66 +424,7 @@ msgstr "kunne ikke pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: feil under forgrening: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Konto midlertidig låst (%ld sekunder igjen)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Autentiseringsfeil"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Tjenestefeil"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ukjent bruker"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ukjent feil"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Ugyldig tall angitt for --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Ukjent valg %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filnavn] [--user brukernavn] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Kan ikke tilbakestille alle brukere til non-zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Brukernavn Feil Siste feil Fra\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filnavn] [--file rooted-filnavn]\n"
-"[-u brukernavn] [--user brukernavn]\n"
-"[-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Tilgang innvilget (siste tilgang var for %ld sekunder siden)."
@@ -557,7 +444,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Du må straks endre passordet ditt (passordet har utløpt)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -565,7 +452,7 @@ msgstr[0] "Advarsel: Passordet ditt utløper om %d dag."
msgstr[1] "Advarsel: Passordet ditt utløper om %d dager."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Advarsel: Passordet ditt utløper om %d dager."
@@ -574,6 +461,14 @@ msgstr "Advarsel: Passordet ditt utløper om %d dager."
msgid "NIS password could not be changed."
msgstr "NIS-passord kunne ikke endres."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Inget passord har blitt angitt."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Passordet kunne ikke endres."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Du må velge et kortere passord."
@@ -590,3 +485,80 @@ msgstr "Endrer passord for %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Du må vente lenger før du kan endre passordet ditt."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "er det samme som det gamle"
+
+#~ msgid "memory allocation error"
+#~ msgstr "feil med minneallokering"
+
+#~ msgid "is a palindrome"
+#~ msgstr "er et palindrom"
+
+#~ msgid "case changes only"
+#~ msgstr "kun endring av små/store bokstaver"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "er for likt det gamle"
+
+#~ msgid "is too simple"
+#~ msgstr "er for enkelt"
+
+#~ msgid "is rotated"
+#~ msgstr "er rotert"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ikke nok tegnklasser"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "inneholder for mange like tegn etter hverandre"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "inneholder for lang monoton tegnsekvens"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "inneholder brukernavnet i en eller annen form"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "SVAKT PASSORD: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Konto midlertidig låst (%ld sekunder igjen)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Autentiseringsfeil"
+
+#~ msgid "Service error"
+#~ msgstr "Tjenestefeil"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ukjent bruker"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ukjent feil"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Ugyldig tall angitt for --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Ukjent valg %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filnavn] [--user brukernavn] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Kan ikke tilbakestille alle brukere til non-zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Brukernavn Feil Siste feil Fra\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filnavn] [--file rooted-filnavn]\n"
+#~ "[-u brukernavn] [--user brukernavn]\n"
+#~ "[-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ne.po b/po/ne.po
index 0ee068d0..d51c49e4 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Nepali (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/nl.gmo b/po/nl.gmo
index bcece567..74968c62 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index f887e781..9e5f0aee 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -11,13 +11,14 @@
# R.F. Pels <ruurd@tiscali.nl>, 2005
# Rinse de Vries <rinsedevries@kde.nl>, 2005-2006
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-15 23:38+0000\n"
-"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Dutch <https://translate.fedoraproject.org/projects/linux-pam/"
"master/nl/>\n"
"Language: nl\n"
@@ -25,23 +26,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.11.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "…De tijd raakt op…\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "…Sorry, uw tijd is verlopen!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "foutieve conversatie (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Wachtwoord: "
@@ -222,101 +210,60 @@ msgstr "Toepassing moet libpam nogmaals aanroepen"
msgid "Unknown PAM error"
msgstr "Onbekende PAM-fout"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "is hetzelfde als het oude"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "geheugentoekenningsfout"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "is een palindroom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "alleen veranderingen in hoofd-/kleine letters"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "lijkt te veel op het oude"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "is te eenvoudig"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "is omgedraaid"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "onvoldoende tekensoorten"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "bevat teveel dezelfde opeenvolgende karakters"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "bevat een te lange monotone tekenreeks"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "bevat de gebruikersnaam in een of andere vorm"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Geen wachtwoord opgegeven."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "…De tijd raakt op…\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Het wachtwoord is niet gewijzigd."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "…Sorry, uw tijd is verlopen!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "SLECHT WACHTWOORD: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "foutieve conversatie (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s is mislukt: afsluitcode %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s is mislukt: signaal %d%s ontvangen"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s is mislukt: onbekende status 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s [--file rooted-bestandsnaam] [--user gebruikersnaam] [--reset[=n]] [--"
-"quiet]\n"
+"Gebruik: %s [--dir /pad/naar/tally-directory] [--user gebruikersnaam] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Het account is vergrendeld wegens %u mislukte aanmeldingen."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(nog %d minuut om te ontgrendelen)"
+msgstr[1] "(nog %d minuten om te ontgrendelen)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(nog %d minuten om te ontgrendelen)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -368,7 +315,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Er waren %d mislukte aanmeldpogingen sinds de laatste succesvolle aanmelding."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Te veel aanmeldingen voor '%s'."
@@ -409,22 +356,22 @@ msgstr "Je hebt oude e-mail in map %s."
msgid "You have mail in folder %s."
msgstr "Je hebt e-mail in map %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Aanmaken van map '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Niet in staat om map '%s' aan te maken."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Wachtwoord is al eens gebruikt. Kies een ander wachtwoord."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Wachtwoord is al eens gebruikt."
@@ -459,12 +406,12 @@ msgstr "Dit is geen geldige beveiligingscontext."
msgid "A valid context for %s could not be obtained."
msgstr "Een geldige context voor %s kon niet worden verkregen."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Beveiligingscontext %s is toegewezen."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Sleutelaanmaakcontext %s is toegewezen."
@@ -484,67 +431,7 @@ msgstr "pam_set_item() is mislukt\n"
msgid "login: failure forking: %m"
msgstr "aanmelding: beginnen van nieuw proces mislukt: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Het account is tijdelijk vergrendeld (%ld seconden resterend)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Authenticatiefout"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Servicefout"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Onbekende gebruiker"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Onbekende fout"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Onjuist getal gegeven aan --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Onbekende optie %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s [--file rooted-bestandsnaam] [--user gebruikersnaam] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: kan niet alle gebruikers terugzetten naar non-zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Aanmelding Mislukte Laatst mislukte Van\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-bestandsnaam] [--file rooted-bestandsnaam]\n"
-" [-u gebruikersnaam] [--user gebruikersnaam]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Toegang is verleend (laatste toegang was %ld seconden geleden)."
@@ -565,7 +452,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Je moet onmiddellijk je wachtwoord wijzigen (wachtwoord is verouderd)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -573,7 +460,7 @@ msgstr[0] "Waarschuwing: je wachtwoord zal binnen %d dag verlopen."
msgstr[1] "Waarschuwing: je wachtwoord zal binnen %d dagen verlopen."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Waarschuwing: je wachtwoord zal binnen %d dagen verlopen."
@@ -582,6 +469,14 @@ msgstr "Waarschuwing: je wachtwoord zal binnen %d dagen verlopen."
msgid "NIS password could not be changed."
msgstr "NIS-wachtwoord kon niet worden gewijzigd."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Geen wachtwoord opgegeven."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Het wachtwoord is niet gewijzigd."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Je moet een korter wachtwoord kiezen."
@@ -598,3 +493,81 @@ msgstr "Veranderen van wachtwoord voor %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Je moet langer wachten om je wachtwoord te wijzigen."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "is hetzelfde als het oude"
+
+#~ msgid "memory allocation error"
+#~ msgstr "geheugentoekenningsfout"
+
+#~ msgid "is a palindrome"
+#~ msgstr "is een palindroom"
+
+#~ msgid "case changes only"
+#~ msgstr "alleen veranderingen in hoofd-/kleine letters"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "lijkt te veel op het oude"
+
+#~ msgid "is too simple"
+#~ msgstr "is te eenvoudig"
+
+#~ msgid "is rotated"
+#~ msgstr "is omgedraaid"
+
+#~ msgid "not enough character classes"
+#~ msgstr "onvoldoende tekensoorten"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "bevat teveel dezelfde opeenvolgende karakters"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "bevat een te lange monotone tekenreeks"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "bevat de gebruikersnaam in een of andere vorm"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "SLECHT WACHTWOORD: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Het account is tijdelijk vergrendeld (%ld seconden resterend)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Authenticatiefout"
+
+#~ msgid "Service error"
+#~ msgstr "Servicefout"
+
+#~ msgid "Unknown user"
+#~ msgstr "Onbekende gebruiker"
+
+#~ msgid "Unknown error"
+#~ msgstr "Onbekende fout"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Onjuist getal gegeven aan --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Onbekende optie %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s [--file rooted-bestandsnaam] [--user gebruikersnaam] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: kan niet alle gebruikers terugzetten naar non-zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Aanmelding Mislukte Laatst mislukte Van\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-bestandsnaam] [--file rooted-bestandsnaam]\n"
+#~ " [-u gebruikersnaam] [--user gebruikersnaam]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/nn.gmo b/po/nn.gmo
index 6f71dec3..1ae25512 100644
--- a/po/nn.gmo
+++ b/po/nn.gmo
Binary files differ
diff --git a/po/nn.po b/po/nn.po
index 60062265..1302c3a7 100644
--- a/po/nn.po
+++ b/po/nn.po
@@ -4,341 +4,289 @@
#
# Translators:
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Andreas-Johann Ø Ulvestad <aj@aju.no>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2011-11-30 06:56-0500\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Norwegian Nynorsk <i18n-nn@lister.ping.uio.no>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-01-18 22:36+0000\n"
+"Last-Translator: Andreas-Johann Ø Ulvestad <aj@aju.no>\n"
+"Language-Team: Norwegian Nynorsk <https://translate.fedoraproject.org/"
+"projects/linux-pam/master/nn/>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Zanata 3.8.3\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.4.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr ""
+msgstr "Passord: "
#: libpam/pam_get_authtok.c:41
#, c-format
msgid "Current %s password: "
-msgstr ""
+msgstr "Noverande %s-passord: "
#: libpam/pam_get_authtok.c:42
msgid "Current password: "
-msgstr ""
+msgstr "Noverande passord: "
#: libpam/pam_get_authtok.c:44
#, c-format
msgid "New %s password: "
-msgstr ""
+msgstr "Nytt %s-passord: "
#: libpam/pam_get_authtok.c:45
msgid "New password: "
-msgstr ""
+msgstr "Nytt passord: "
#: libpam/pam_get_authtok.c:47
#, c-format
msgid "Retype new %s password: "
-msgstr ""
+msgstr "Stadfest nytt %s-passord: "
#: libpam/pam_get_authtok.c:48
msgid "Retype new password: "
-msgstr ""
+msgstr "Stadfest nytt passord: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
-msgstr ""
+msgstr "Beklagar, passorda er ikkje like."
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
msgid "Retype %s"
-msgstr ""
+msgstr "Skriv %s på nytt"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
msgid "Password change has been aborted."
-msgstr ""
+msgstr "Skifte av passord vart avbrote."
#: libpam/pam_item.c:311
msgid "login:"
-msgstr ""
+msgstr "logg inn:"
#: libpam/pam_strerror.c:40
msgid "Success"
-msgstr ""
+msgstr "Utføyrd"
#: libpam/pam_strerror.c:42
msgid "Critical error - immediate abort"
-msgstr ""
+msgstr "Kristisk feil - avbryt med ein gong"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
-msgstr ""
+msgstr "Klarte ikkje å laste modul"
#: libpam/pam_strerror.c:46
msgid "Symbol not found"
-msgstr ""
+msgstr "Fann ikkje symbol"
#: libpam/pam_strerror.c:48
msgid "Error in service module"
-msgstr ""
+msgstr "Feil i tenestemodul"
#: libpam/pam_strerror.c:50
msgid "System error"
-msgstr ""
+msgstr "Systemfeil"
#: libpam/pam_strerror.c:52
msgid "Memory buffer error"
-msgstr ""
+msgstr "Minnebufferfeil"
#: libpam/pam_strerror.c:54
msgid "Permission denied"
-msgstr ""
+msgstr "Nekta tilgang"
#: libpam/pam_strerror.c:56
msgid "Authentication failure"
-msgstr ""
+msgstr "Autentiseringsfeil"
#: libpam/pam_strerror.c:58
msgid "Insufficient credentials to access authentication data"
-msgstr ""
+msgstr "Utilstrekkelege rettar for tilgang til informasjon om autentisering"
#: libpam/pam_strerror.c:60
msgid "Authentication service cannot retrieve authentication info"
-msgstr ""
+msgstr "Teneste for autentisering kan ikkje hente informasjon om autentisering"
#: libpam/pam_strerror.c:62
msgid "User not known to the underlying authentication module"
-msgstr ""
+msgstr "Brukar udkjend for autentiseringsmodul"
#: libpam/pam_strerror.c:64
msgid "Have exhausted maximum number of retries for service"
-msgstr ""
+msgstr "Maks tal på forsøk er overskride for tenesta"
#: libpam/pam_strerror.c:66
msgid "Authentication token is no longer valid; new one required"
-msgstr ""
+msgstr "Autentiseringspollett er ikkje lenger gyldig; ny kode kravd"
#: libpam/pam_strerror.c:68
msgid "User account has expired"
-msgstr ""
+msgstr "Brukarkonto er utgått"
#: libpam/pam_strerror.c:70
msgid "Cannot make/remove an entry for the specified session"
-msgstr ""
+msgstr "Kan ikkje opprette/fjerne oppføring for vald økt"
#: libpam/pam_strerror.c:72
msgid "Authentication service cannot retrieve user credentials"
-msgstr ""
+msgstr "Autentiseringsteneste kan ikkje hente brukarrettar"
#: libpam/pam_strerror.c:74
msgid "User credentials expired"
-msgstr ""
+msgstr "Brukarrettar er utløpt"
#: libpam/pam_strerror.c:76
msgid "Failure setting user credentials"
-msgstr ""
+msgstr "Feil under definering av brukarrettar"
#: libpam/pam_strerror.c:78
msgid "No module specific data is present"
-msgstr ""
+msgstr "Ingen modulspesifikk data finst"
#: libpam/pam_strerror.c:80
msgid "Bad item passed to pam_*_item()"
-msgstr ""
+msgstr "Ugyldig oppføring spesifisert for pam_*_item()"
#: libpam/pam_strerror.c:82
msgid "Conversation error"
-msgstr ""
+msgstr "Dialogfeil"
#: libpam/pam_strerror.c:84
msgid "Authentication token manipulation error"
-msgstr ""
+msgstr "Manipulasjonsfeil for autentiseringspollett"
#: libpam/pam_strerror.c:86
msgid "Authentication information cannot be recovered"
-msgstr ""
+msgstr "Autentiseringsinformasjon kan ikkje bli gjenoppretta"
#: libpam/pam_strerror.c:88
msgid "Authentication token lock busy"
-msgstr ""
+msgstr "LÃ¥sing av autentiseringskode er oppteken"
#: libpam/pam_strerror.c:90
msgid "Authentication token aging disabled"
-msgstr ""
+msgstr "Tidsavgrensing for autentiseringspollett er deaktivert"
#: libpam/pam_strerror.c:92
msgid "Failed preliminary check by password service"
-msgstr ""
+msgstr "Posstordtenesta sin innledande kontroll feila"
#: libpam/pam_strerror.c:94
msgid "The return value should be ignored by PAM dispatch"
-msgstr ""
+msgstr "Resultatverdien bør bli ignorert av PAM"
#: libpam/pam_strerror.c:96
msgid "Module is unknown"
-msgstr ""
+msgstr "Modulen er ukjend"
#: libpam/pam_strerror.c:98
msgid "Authentication token expired"
-msgstr ""
+msgstr "Autentiseringspollett er utgått"
#: libpam/pam_strerror.c:100
msgid "Conversation is waiting for event"
-msgstr ""
+msgstr "Dialogen ventar på hending"
#: libpam/pam_strerror.c:102
msgid "Application needs to call libpam again"
-msgstr ""
+msgstr "Programmet må spørre libpam på ny"
#: libpam/pam_strerror.c:105
msgid "Unknown PAM error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
+msgstr "Ukjend PAM-feil"
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr ""
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Tida held på å gå ut...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr ""
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Beklagar, tida er gått ut\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr ""
+msgid "erroneous conversation (%d)\n"
+msgstr "mislykka dialog (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
-msgstr ""
+msgstr "%s feila: sluttkode %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
-msgstr ""
+msgstr "%s feila: fekk signal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
-msgstr ""
+msgstr "%s feila: ukjend status 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-msgstr ""
+msgstr "Bruk: %s [--dir /sti/til/tally-mappe] [--user brukarnamn] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr ""
+msgstr "Konto er låst som følgje av %u mislukka innloggingar."
+
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minutt står att for å låse opp)"
+msgstr[1] "(%d minutt står att for å låse opp)"
-#: modules/pam_faillock/pam_faillock.c:650
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d minutt står att for å låse opp)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
msgid " %a %b %e %H:%M:%S %Z %Y"
-msgstr ""
+msgstr " %a %b %e %H:%M:%S %Z %Y"
#. TRANSLATORS: " from <host>"
#: modules/pam_lastlog/pam_lastlog.c:327 modules/pam_lastlog/pam_lastlog.c:588
#, c-format
msgid " from %.*s"
-msgstr ""
+msgstr " frå %.*s"
#. TRANSLATORS: " on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:339 modules/pam_lastlog/pam_lastlog.c:600
#, c-format
msgid " on %.*s"
-msgstr ""
+msgstr " på %.*s"
#. TRANSLATORS: "Last login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:349
#, c-format
msgid "Last login:%s%s%s"
-msgstr ""
+msgstr "Siste innlogging:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:355
msgid "Welcome to your new account!"
-msgstr ""
+msgstr "Velkommen til din nye konto!"
#. TRANSLATORS: "Last failed login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:610
#, c-format
msgid "Last failed login:%s%s%s"
-msgstr ""
+msgstr "Siste feila innlogging:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:619 modules/pam_lastlog/pam_lastlog.c:626
#, c-format
@@ -346,238 +294,191 @@ msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
msgstr[0] ""
+"Det har vore %d feila innloggingsforsøk utan feil sidan førre innlogging."
msgstr[1] ""
+"Det har vore %d feila innloggingsforsøk utan feil sidan førre innlogging."
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
+"Det har vore %d feila innloggingsforsøk sidan sist innlogging utan feil."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
-msgstr ""
+msgstr "For mange innlogginga for «%s»."
#: modules/pam_mail/pam_mail.c:289
msgid "You have no mail."
-msgstr ""
+msgstr "Du har ikkje fått nokon e-post."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
-msgstr ""
+msgstr "Du har fått ny e-post."
#: modules/pam_mail/pam_mail.c:295
msgid "You have old mail."
-msgstr ""
+msgstr "Du har ulest e-post."
#: modules/pam_mail/pam_mail.c:299
msgid "You have mail."
-msgstr ""
+msgstr "Du har fått e-post."
#: modules/pam_mail/pam_mail.c:306
#, c-format
msgid "You have no mail in folder %s."
-msgstr ""
+msgstr "Du har ingan e-post i mappen %s."
#: modules/pam_mail/pam_mail.c:310
#, c-format
msgid "You have new mail in folder %s."
-msgstr ""
+msgstr "Du har ny e-post i mappa %s."
#: modules/pam_mail/pam_mail.c:314
#, c-format
msgid "You have old mail in folder %s."
-msgstr ""
+msgstr "Du har ulest e-post i mappa %s."
#: modules/pam_mail/pam_mail.c:319
#, c-format
msgid "You have mail in folder %s."
-msgstr ""
+msgstr "Du har e-post i mappa %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr ""
+msgstr "Opprettar kataloge «%s»."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
-msgstr ""
+msgstr "Kan ikkje lage og initiere katalog «%s»."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
-msgstr ""
+msgstr "Passord er allereie nytta. Vel eit anna."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
-msgstr ""
+msgstr "Passordet har allereie vore brukt."
#: modules/pam_selinux/pam_selinux.c:172
#, c-format
msgid "The default security context is %s."
-msgstr ""
+msgstr "Forehandvald sikkerheitskontekst er %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
-msgstr ""
+msgstr "Vil du angje ei anna rolle eller nivå?"
#: modules/pam_selinux/pam_selinux.c:189
msgid "role:"
-msgstr ""
+msgstr "rolle:"
#: modules/pam_selinux/pam_selinux.c:193
#, c-format
msgid "There is no default type for role %s."
-msgstr ""
+msgstr "Inga førehandvald type for rolla %s."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
-msgstr ""
+msgstr "nivå:"
#: modules/pam_selinux/pam_selinux.c:259
msgid "This is not a valid security context."
-msgstr ""
+msgstr "Dette er ikkje gyldig sikkerheitskontekst."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "Kunne ikkje innhente gyldig kontekst for %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
-msgstr ""
+msgstr "Sikkerheitskontekst «%s» tilordna."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
-msgstr ""
+msgstr "Kontekst «%s» for oppretting av nøkkel er tilordna."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
msgid "failed to initialize PAM\n"
-msgstr ""
+msgstr "Kunne ikkje initiere PAM\n"
#: modules/pam_selinux/pam_selinux_check.c:105
#, c-format
msgid "failed to pam_set_item()\n"
-msgstr ""
+msgstr "kunne ikkje pam_set_item()\n"
#: modules/pam_selinux/pam_selinux_check.c:133
#, c-format
msgid "login: failure forking: %m"
-msgstr ""
+msgstr "login: feil under forgreining: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr ""
+msgstr "Tilgang innvilga (siste tilgang var for %ld sekund sidan)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
msgid "Your account has expired; please contact your system administrator."
-msgstr ""
+msgstr "Kontoen din er utløpt; kontakt systemadministratoren din."
#: modules/pam_unix/pam_unix_acct.c:238
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr ""
+msgstr "Du må straks endre passordet ditt (kravd av administrator)."
#: modules/pam_unix/pam_unix_acct.c:244
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr ""
+msgstr "Du må straks endre passordet ditt (passordet har utløpt)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Advarsel: Passordet ditt utløper om %d dag."
+msgstr[1] "Advarsel: Passordet ditt utløper om %d dagar."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr ""
+msgstr "Varsel: Passordet ditt går ut om %d dagar."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
-msgstr ""
+msgstr "NIS-passord kunne ikkje bli endra."
+
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Inga passord er blitt angjeve."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Passordet kunne ikkje bli endra."
#: modules/pam_unix/pam_unix_passwd.c:581
-#, fuzzy
msgid "You must choose a shorter password."
-msgstr "Du må velge et kortere passord."
+msgstr "Du må velje eit kortare passord."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "Du må velge et kortere passord."
+msgstr "Du må velje eit kortare passord."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
msgid "Changing password for %s."
-msgstr ""
+msgstr "Skiftar passord for %s."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "Du må velge et kortere passord."
+msgstr "Du må vente lengre før du kan skifte passordet ditt."
diff --git a/po/or.gmo b/po/or.gmo
index 59cd6d5d..d5ff1f18 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 2d337e03..5a408f73 100644
--- a/po/or.po
+++ b/po/or.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-04-13 22:40+0000\n"
"Last-Translator: Ankit Behera <proneon267@gmail.com>\n"
"Language-Team: Odia <https://translate.fedoraproject.org/projects/linux-pam/"
@@ -24,21 +24,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...ସମୟ ସମାପà­à¬¤ ହେଉଛି...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...କà­à¬·à¬®à¬¾ କରିବେ, ଆପଣଙà­à¬• ସମୟ ସମାପà­à¬¤ ହୋଇଯାଇଛି!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ତୃଟିପୂରà­à¬£à­à¬£ କଥୋପକଥନ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤: "
@@ -218,97 +205,56 @@ msgstr "ପà­à¬°à­Ÿà­‹à¬— libpam କୠପà­à¬¨à¬°à­à¬¬à¬¾à¬° ଆହà­à¬¬à¬
msgid "Unknown PAM error"
msgstr "ଅଜଣା PAM ତୃଟି"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ପà­à¬°à­à¬£à¬¾ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ସହିତ à¬à¬¹à¬¾ ସମାନ ଅଟେ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "ସà­à¬®à­ƒà¬¤à¬¿à¬¸à­à¬¥à¬¾à¬¨ ବଣà­à¬Ÿà¬¨ ତà­à¬°à­à¬Ÿà¬¿"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬Ÿà¬¿ ଗୋଟିଠପାଲିନଡà­à¬°à­‹à¬® ଅଟେ"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "କେବଳ ଅକà­à¬·à¬° ପà­à¬°à¬•à¬¾à¬° ପରିବରà­à¬¤à­à¬¤à¬¿à¬¤ ହୋଇଥାà¬"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "à¬à¬¹à¬¾ ପୂରà­à¬¬ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ସହିତ ବହà­à¬¤ ସମାନ ଅଟେ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "à¬à¬¹à¬¾ ଅତି ସହଜ ଅଟେ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "à¬à¬¹à¬¾ ଘୂରà­à¬£à­à¬£à­Ÿà¬®à¬¾à¬¨ ଅଟେ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ଯଥେଷà­à¬Ÿ ବରà­à¬£à­à¬£ ଶà­à¬°à­‡à¬£à­€ ନାହିà¬"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସମାନ ଅକà­à¬·à¬°à¬•à­ ଲଗାତାର ଧାରଣ କରିଥାà¬"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "ନିରସ ବରà­à¬£à­à¬£à¬° ବଡ଼ କà­à¬°à¬® ଧାରଣ କରିଅଛି"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ଚାଳକ ନାମକୠକୌଣସି ଉପାୟରେ ଧାରଣ କରିଥାà¬"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "କୌଣସି ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ପà­à¬°à¬¦à¬¾à¬¨ କରାଯାଇ ନାହିà¬à¥¤"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...ସମୟ ସମାପà­à¬¤ ହେଉଛି...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ପରିବରà­à¬¤à­à¬¤à¬¨ କରା ଯାଇ ନାହିà¬à¥¤"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...କà­à¬·à¬®à¬¾ କରିବେ, ଆପଣଙà­à¬• ସମୟ ସମାପà­à¬¤ ହୋଇଯାଇଛି!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ଖରାପ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ତୃଟିପୂରà­à¬£à­à¬£ କଥୋପକଥନ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s ବିଫଳ: %d ସଙà­à¬•à­‡à¬¤à¬°à­ ପà­à¬°à¬¸à­à¬¥à¬¾à¬¨ କରà­à¬…ଛି"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s ବିଫଳ: %d%s ସଙà­à¬•à­‡à¬¤ ପାଇଲା"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s ବିଫଳ: ଅଜଣା ଅବସà­à¬¥à¬¿à¬¤à¬¿ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u ବିଫଳତା ଲଗଇନ କାରଣରୠଖାତା ଅପରିବରà­à¬¤à­à¬¤à¬¨à¬¶à­€à¬³ ହୋଇଯାଇଛି।"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -360,7 +306,7 @@ msgstr[1] "ଅନà­à¬¤à¬¿à¬® ସଫଳ ଲଗଇନ ପରଠାରୠ%d ଟà¬
msgid "There were %d failed login attempts since the last successful login."
msgstr "ଅନà­à¬¤à¬¿à¬® ସଫଳ ଲଗଇନ ପରଠାରୠ%d ଟି ବିଫଳ ଲଗଇନ ପà­à¬°à¬šà­‡à¬·à­à¬Ÿà¬¾ କରାଯାଇଛି।"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' ପାଇଠଅତà­à¬¯à¬§à¬¿à¬• ସଂଖà­à¬¯à¬• ଲଗଇନ ହୋଇଛି।"
@@ -401,22 +347,22 @@ msgstr "ଆପଣଙà­à¬• ନିକଟରେ %s ଫୋଲଡରରେ ପà­à¬°
msgid "You have mail in folder %s."
msgstr "ଆପଣଙà­à¬• ନିକଟରେ %s ଫୋଲଡରରେ ଚିଠି ଅଛି।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "ଡ଼ିରେକà­à¬Ÿà­‹à¬°à­€ '%s' ନିରà­à¬®à¬¾à¬£ କରà­à¬…ଛି."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ଡ଼ିରେକà­à¬Ÿà­‹à¬°à­€ '%s'କୠନିରà­à¬®à¬¾à¬£ à¬à¬¬à¬‚ ପà­à¬°à¬¾à¬°à¬®à­à¬­ କରିବାରେ ଅସମରà­à¬¥à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬Ÿà¬¿ ପୂରà­à¬¬à¬°à­ ବà­à¬¯à¬¬à¬¹à­ƒà¬¤ ହେଉଛି। ଅନà­à¬¯ ଗୋଟିଠପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ଚୟନ କରନà­à¬¤à­à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ପୂରà­à¬¬à¬°à­ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଇଛି।"
@@ -451,12 +397,12 @@ msgstr "à¬à¬¹à¬¾ ଗୋଟିଠବୈଧ ସà­à¬°à¬•à­à¬·à¬¾ ପà­à¬°à¬¸à¬
msgid "A valid context for %s could not be obtained."
msgstr "%s ପାଇଠà¬à¬• ବୈଧ ପà­à¬°à¬¸à¬™à­à¬— ହାସଲ ହୋଇ ପାରିଲା ନାହିà¬à¥¤"
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "%s ସà­à¬°à¬•à­à¬·à¬¾ ପà­à¬°à¬¸à¬™à­à¬— ନà­à¬¯à¬¸à­à¬¤ କରାଯାଇଛି।"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "କୀ ନିରà­à¬®à¬¾à¬£ ପà­à¬°à¬¸à¬™à­à¬— %s ନà­à¬¯à¬¸à­à¬¤ କରାଯାଇଛି।"
@@ -476,66 +422,7 @@ msgstr "pam_set_item() କରିବାରେ ବିଫଳ\n"
msgid "login: failure forking: %m"
msgstr "ଲଗଇନ: fork କରିବାରେ ବିଫଳ: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ଖାତା ଅସà­à¬¥à­Ÿà­€ ଭାବରେ ଅପରିବରà­à¬¤à­à¬¤à¬¨à¬¶à­€à¬³ ହୋଇଯାଇଛି (%ld ସେକେଣà­à¬¡à¬¸à­ ବଳିଛି)।"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "ବୈଧିକରଣ ତୃଟି"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "ସେବା ତୃଟି"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ଅଜଣା ଚାଳକ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "ଅଜଣା ତୃଟି"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= ପାଇଠଖରାପ ସଂଖà­à¬¯à¬¾ ଦିଆଯାଇଛି\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: ଅଚିହà­à¬¨à¬¿à¬¤ ବିକଳà­à¬ª %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: ସମସà­à¬¤ ଚାଳକ ମାନଙà­à¬•à­ ଶୂନà­à¬¯ ବିହୀନ ଭାବରେ ପà­à¬¨à¬°à­à¬¬à¬¾à¬° ବିନà­à¬¯à¬¾à¬¸ କରିପାରିବ ନାହିà¬\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "ଲଗଇନ ବିଫଳତାର ନୂତନତମ ବିଫଳତା ରà­\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "ପà­à¬°à¬¬à­‡à¬¶ ଗà­à¬°à¬¹à¬£à­€à­Ÿ ହୋଇଛି (ପୂରà­à¬¬ ପà­à¬°à¬¬à­‡à¬¶ ହୋଇଥିଲା %ld ସେକଣà­à¬¡ ପୂରà­à¬¬à¬°à­)।"
@@ -556,7 +443,7 @@ msgid ""
msgstr ""
"ଆପଣ ଆପଣଙà­à¬•à¬° ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ଯଥାଶୀଘà­à¬° ବଦଳାଇବା ଆବଶà­à¬¯à¬• (ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬° ବୈଧତା ସରି ଯାଇଛି)।"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -564,7 +451,7 @@ msgstr[0] "ଚେତାବନୀ: ଆପଣଙà­à¬• ପà­à¬°à¬¬à­‡à¬¶ ସଙà­
msgstr[1] "ଚେତାବନୀ: ଆପଣଙà­à¬• ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ %d ଦିନରେ ଅକାମି ହୋଇଯିବ।"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "ଚେତାବନୀ: ଆପଣଙà­à¬• ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ %d ଦିନରେ ଅକାମି ହୋଇଯିବ।"
@@ -573,6 +460,14 @@ msgstr "ଚେତାବନୀ: ଆପଣଙà­à¬• ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬
msgid "NIS password could not be changed."
msgstr "NIS ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ବଦଳାଇ ହେଲା ନାହିà¬à¥¤"
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "କୌଣସି ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ପà­à¬°à¬¦à¬¾à¬¨ କରାଯାଇ ନାହିà¬à¥¤"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ପରିବରà­à¬¤à­à¬¤à¬¨ କରା ଯାଇ ନାହିà¬à¥¤"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ଆପଣ ଗୋଟିଠଛୋଟ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ଚୟନ କରିବା ଉଚିତ।"
@@ -589,3 +484,80 @@ msgstr "%s ପାଇଠପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ବଦଳା
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬•à­ ବଦଳାଇବା ପାଇଠଆପଣ ଅଧିକ ସମୟ ଅପେକà­à¬·à¬¾ କରିବା ଉଚିତ।"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ପà­à¬°à­à¬£à¬¾ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ସହିତ à¬à¬¹à¬¾ ସମାନ ଅଟେ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "ସà­à¬®à­ƒà¬¤à¬¿à¬¸à­à¬¥à¬¾à¬¨ ବଣà­à¬Ÿà¬¨ ତà­à¬°à­à¬Ÿà¬¿"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤à¬Ÿà¬¿ ଗୋଟିଠପାଲିନଡà­à¬°à­‹à¬® ଅଟେ"
+
+#~ msgid "case changes only"
+#~ msgstr "କେବଳ ଅକà­à¬·à¬° ପà­à¬°à¬•à¬¾à¬° ପରିବରà­à¬¤à­à¬¤à¬¿à¬¤ ହୋଇଥାà¬"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "à¬à¬¹à¬¾ ପୂରà­à¬¬ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤ ସହିତ ବହà­à¬¤ ସମାନ ଅଟେ"
+
+#~ msgid "is too simple"
+#~ msgstr "à¬à¬¹à¬¾ ଅତି ସହଜ ଅଟେ"
+
+#~ msgid "is rotated"
+#~ msgstr "à¬à¬¹à¬¾ ଘୂରà­à¬£à­à¬£à­Ÿà¬®à¬¾à¬¨ ଅଟେ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ଯଥେଷà­à¬Ÿ ବରà­à¬£à­à¬£ ଶà­à¬°à­‡à¬£à­€ ନାହିà¬"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "ଅତà­à­Ÿà¬§à¬¿à¬• ସମାନ ଅକà­à¬·à¬°à¬•à­ ଲଗାତାର ଧାରଣ କରିଥାà¬"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "ନିରସ ବରà­à¬£à­à¬£à¬° ବଡ଼ କà­à¬°à¬® ଧାରଣ କରିଅଛି"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ଚାଳକ ନାମକୠକୌଣସି ଉପାୟରେ ଧାରଣ କରିଥାà¬"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ଖରାପ ପà­à¬°à¬¬à­‡à¬¶ ସଙà­à¬•à­‡à¬¤: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ଖାତା ଅସà­à¬¥à­Ÿà­€ ଭାବରେ ଅପରିବରà­à¬¤à­à¬¤à¬¨à¬¶à­€à¬³ ହୋଇଯାଇଛି (%ld ସେକେଣà­à¬¡à¬¸à­ ବଳିଛି)।"
+
+#~ msgid "Authentication error"
+#~ msgstr "ବୈଧିକରଣ ତୃଟି"
+
+#~ msgid "Service error"
+#~ msgstr "ସେବା ତୃଟି"
+
+#~ msgid "Unknown user"
+#~ msgstr "ଅଜଣା ଚାଳକ"
+
+#~ msgid "Unknown error"
+#~ msgstr "ଅଜଣା ତୃଟି"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= ପାଇଠଖରାପ ସଂଖà­à¬¯à¬¾ ଦିଆଯାଇଛି\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: ଅଚିହà­à¬¨à¬¿à¬¤ ବିକଳà­à¬ª %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ସମସà­à¬¤ ଚାଳକ ମାନଙà­à¬•à­ ଶୂନà­à¬¯ ବିହୀନ ଭାବରେ ପà­à¬¨à¬°à­à¬¬à¬¾à¬° ବିନà­à¬¯à¬¾à¬¸ କରିପାରିବ ନାହିà¬\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ଲଗଇନ ବିଫଳତାର ନୂତନତମ ବିଫଳତା ରà­\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/pa.gmo b/po/pa.gmo
index fe3bdeaa..37a5b5c3 100644
--- a/po/pa.gmo
+++ b/po/pa.gmo
Binary files differ
diff --git a/po/pa.po b/po/pa.po
index 94ed6704..c057de70 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -7,48 +7,36 @@
# Amanpreet Singh Alam[ਆਲਮ] <amanpreetalam@yahoo.com>, 2005
# Jaswinder Singh <jsingh@redhat.com>, 2009,2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# A S Alam <amanpreet.alam@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2013-08-29 08:55-0400\n"
-"Last-Translator: asaini <asaini@redhat.com>\n"
-"Language-Team: Panjabi (Punjabi) <punjabi-users@lists.sf.net>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-07-19 18:29+0000\n"
+"Last-Translator: A S Alam <amanpreet.alam@gmail.com>\n"
+"Language-Team: Punjabi <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/pa/>\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Zanata 3.8.3\n"
+"X-Generator: Weblate 4.1.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਰਿਹਾ ਹੈ...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...ਅਫਸੋਸ, ਤà©à¨¹à¨¾à¨¡à¨¾ ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਗਿਆ ਹੈ!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ਗਲਤ ਅਨà©à¨µà¨¾à¨¦ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "ਪਾਸਵਰਡ: "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "ਨਵਾਂ %s ਪਾਸਵਰਡ: "
+msgstr "ਮੌਜੂਦਾ %s ਪਾਸਵਰਡ: "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ: "
+msgstr "ਮੌਜੂਦਾ ਪਾਸਵਰਡ: "
#: libpam/pam_get_authtok.c:44
#, c-format
@@ -70,7 +58,7 @@ msgstr "ਨਵਾਂ ਪਾਸਵਰਡ ਮà©à©œ-ਲਿਖੋ: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
-msgstr "ਮਾਫ ਕਰਨਾ ਪਾਸਵਰਡ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ।"
+msgstr "ਅਫ਼ਸੋਸ, ਪਰ ਪਾਸਵਰਡ ਆਪਸ ‘ਚ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।"
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
@@ -78,7 +66,6 @@ msgid "Retype %s"
msgstr "ਮà©à©œ-ਲਿਖੋ %s"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲੀ ਅਧੂਰੀ ਛੱਡੀ ਗਈ।"
@@ -92,7 +79,7 @@ msgstr "ਸਫ਼ਲ"
#: libpam/pam_strerror.c:42
msgid "Critical error - immediate abort"
-msgstr "ਨਾਜ਼à©à¨• ਗਲਤੀ - ਤਰà©à©°à¨¤ ਅਧੂਰਾ ਛੱਡਿਆ"
+msgstr "ਗੰਭੀਰ ਗਲਤੀ - ਫ਼ੌਰੀ ਅਧੂਰਾ ਛੱਡਿਆ"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
@@ -132,11 +119,11 @@ msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਸਰਵਿਸ ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à
#: libpam/pam_strerror.c:62
msgid "User not known to the underlying authentication module"
-msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਮੈਡਿਊਲ ਨੂੰ ਆਪਣੇ ਉਪਭੋਗੀ ਬਾਰੇ ਕà©à¨ ਪਤਾ ਨਹੀਂ"
+msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਮੈਡਿਊਲ ਲਈ ਵਰਤੋਂਕਾਰ ਬਾਰੇ ਕà©à¨ ਪਤਾ ਨਹੀਂ"
#: libpam/pam_strerror.c:64
msgid "Have exhausted maximum number of retries for service"
-msgstr "ਸਰਵਿਸ ਨੂੰ ਵੱਧ-ਤੋਂ-ਵੱਧ ਵਰਤਣ ਦੀ ਸੀਮਾ ਪਾਰ ਹੋ ਗਈ ਹੈ"
+msgstr "ਸਰਵਿਸ ਲਈ ਵੱਧ-ਤੋਂ-ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ ਕਰਨ ਦੀ ਹੱਦ ਟੱਪੀ ਗਈ"
#: libpam/pam_strerror.c:66
msgid "Authentication token is no longer valid; new one required"
@@ -144,7 +131,7 @@ msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਟੋਕਨ ਦੀ ਮਿਆਦ ਪà©à©
#: libpam/pam_strerror.c:68
msgid "User account has expired"
-msgstr "ਉਪਭੋਗੀ ਖਾਤੇ ਦੀ ਮਿਆਦ ਪà©à©±à¨— ਚà©à©±à¨•à©€ ਹੈ"
+msgstr "ਵਰਤੋਂਕਾਰ ਖਾਤੇ ਦੀ ਮਿਆਦ ਪà©à©±à¨— ਚà©à©±à¨•à©€ ਹੈ"
#: libpam/pam_strerror.c:70
msgid "Cannot make/remove an entry for the specified session"
@@ -152,15 +139,15 @@ msgstr "ਖਾਸ ਸ਼ੈਸ਼ਨ ਲਈ ਇੱਕ à¨à¨‚ਟਰੀ ਬਣਾ/ਹਟ
#: libpam/pam_strerror.c:72
msgid "Authentication service cannot retrieve user credentials"
-msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਸਰਵਿਸ ਉਪਭੋਗੀ ਅਧਿਕਾਰ ਪà©à¨°à¨¾à¨ªà¨¤ ਨਹੀਂ ਕਰ ਸਕਦਾ"
+msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਸਰਵਿਸ ਵਰਤੋਂਕਾਰ ਸਨਦਾਂ ਪà©à¨°à¨¾à¨ªà¨¤ ਨਹੀਂ ਕਰ ਸਕਦੀ ਹੈ"
#: libpam/pam_strerror.c:74
msgid "User credentials expired"
-msgstr "ਉਪਭੋਗੀ ਅਧਿਕਾਰ ਖਤਮ ਹੋ ਗਠਹਨ"
+msgstr "ਵਰਤੋਂਕਾਰ ਸਨਦਾਂ ਦੀ ਮਿਆਦ ਪà©à©±à¨—à©€ ਹੈ"
#: libpam/pam_strerror.c:76
msgid "Failure setting user credentials"
-msgstr "ਉਪਭੋਗੀ ਅਧਿਕਾਰ ਸੈੱਟ ਕਰਨ ਵਿੱਚ ਫੇਲ"
+msgstr "ਵਰਤੋਂਕਾਰ ਸਨਦਾਂ ਸੈਟਿੰਗ ਅਸਫ਼ਲ ਹੈ"
#: libpam/pam_strerror.c:78
msgid "No module specific data is present"
@@ -188,11 +175,11 @@ msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਟੋਕਨ ਲਾਕ ਬਿਜ਼ੀ ਹà©
#: libpam/pam_strerror.c:90
msgid "Authentication token aging disabled"
-msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਟੋਕਲ à¨à¨œà¨¿à©°à¨— ਅਯੋਗ ਹੈ"
+msgstr "ਪà©à¨°à¨®à¨¾à¨£à¨¿à¨•à¨¤à¨¾ ਟੋਕਨ à¨à¨œà¨¿à©°à¨— ਅਸਮਰੱਥ ਹੈ"
#: libpam/pam_strerror.c:92
msgid "Failed preliminary check by password service"
-msgstr "ਪਾਸਵਰਡ ਸਰਵਿਸ ਦà©à¨†à¨°à¨¾ ਪਹਿਲੀ ਜਾਂਚ ਫੇਲ ਹੋਈ"
+msgstr "ਪਾਸਵਰਡ ਸਰਵਿਸ ਵਲੋਂ ਮà©à©±à¨¢à¨²à©€ ਜਾਂਚ ਫੇਲà©à¨¹ ਹੋਈ"
#: libpam/pam_strerror.c:94
msgid "The return value should be ignored by PAM dispatch"
@@ -218,102 +205,58 @@ msgstr "ਕਾਰਜ ਲਈ ਫਿਰ libpam ਨੂੰ ਕਾਲ ਕਰਨ ਦà©
msgid "Unknown PAM error"
msgstr "ਅਣਜਾਣ PAM ਗਲਤੀ"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ਪà©à¨°à¨¾à¨£à©‡ ਵਰਗਾ ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "ਮੈਮੋਰੀ ਨਿਰਧਾਰਨ ਗਲਤੀ"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ਇੱਕ palindrome ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "ਸਿਰਫ ਅੱਖਰ ਤਬਦੀਲੀ"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ਪà©à¨°à¨¾à¨£à©‡ ਨਾਲ ਬਹà©à¨¤ ਮਿਲਦਾ-ਜà©à¨²à¨¦à¨¾ ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ਬਹà©à¨¤ ਸਧਾਰਨ ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ਘà©à©°à¨®à¨¾à¨‡à¨† ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "ਲੋੜੀਂਦੀਆਂ ਅੱਖਰ ਸ਼à©à¨°à©‡à¨£à©€à¨†à¨‚ ਨਹੀਂ ਹਨ"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "ਲਗਾਤਾਰ ਬਹà©à¨¤ ਸਾਰੇ ਮਿਲਦੇ-ਜà©à¨²à¨¦à©‡ ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "ਇੱਕ ਬਹà©à¨¤ ਜਿਆਦਾ ਲੰਬੀ ਇਕਸà©à¨°à¨¤à¨¾ ਵਾਲੀ ਅੱਖਰ ਲੜੀ ਸਮਾਈ ਹੋਈ ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "ਕà©à¨¸à©‡ ਰੂਪ ਵਿੱਚ ਉਪਭੋਗੀ ਨਾਂ ਸ਼ਾਮਿਲ ਹੈ"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "ਕੋਈ ਪਾਸਵਰਡ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਰਿਹਾ ਹੈ...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS ਪਾਸਵਰਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...ਅਫਸੋਸ, ਤà©à¨¹à¨¾à¨¡à¨¾ ਸਮਾਂ ਸਮਾਪਤ ਹੋ ਗਿਆ ਹੈ!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ਗਲਤ ਪਾਸਵਰਡ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ਗਲਤ ਗੱਲ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s ਫੇਲ ਹੋਇਆ: ਕੋਡ %d ਨਾਲ ਬੰਦ ਹੋ ਗਿਆ"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s ਫੇਲ ਹੋ ਗਿਆ: ਸਿਗਨਲ %d%s ਮਿਲਿਆ"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s ਫੇਲ ਹੋਇਆ: ਅਣਪਛਾਤੀ ਸਥਿਤੀ 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+msgstr "ਵਰਤੋਂ: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "%u ਫੇਲ ਹੋਠਲਾਗਇਨਾਂ ਕਰਕੇ ਖਾਤਾ ਲਾਕ ਕੀਤਾ ਹੈ"
+msgstr "%u ਫੇਲà©à¨¹ ਹੋਠਲਾਗਇਨਾਂ ਕਰਕੇ ਖਾਤਾ ਲਾਕ ਕੀਤਾ ਹੈ।"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(ਅਣਲਾਕ ਕਰਨ ਲਈ %d ਮਿੰਟ ਬਚੇ ਹਨ)"
+msgstr[1] "(ਅਣਲਾਕ ਕਰਨ ਲਈ %d ਮਿੰਟ ਬਚੇ ਹਨ)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(ਅਣਲਾਕ ਕਰਨ ਲਈ %d ਮਿੰਟ ਬਚੇ ਹਨ)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -324,19 +267,19 @@ msgstr " %a %b %e %H:%M:%S %Z %Y"
#: modules/pam_lastlog/pam_lastlog.c:327 modules/pam_lastlog/pam_lastlog.c:588
#, c-format
msgid " from %.*s"
-msgstr " from %.*s"
+msgstr " %.*s ਤੋਂ"
#. TRANSLATORS: " on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:339 modules/pam_lastlog/pam_lastlog.c:600
#, c-format
msgid " on %.*s"
-msgstr " on %.*s"
+msgstr " %.*s ਉੱਤੇ"
#. TRANSLATORS: "Last login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:349
#, c-format
msgid "Last login:%s%s%s"
-msgstr "ਆਖਰੀ ਲਾਗਇਨ:%s%s%s"
+msgstr "ਪਿਛਲਾ ਲਾਗਇਨ:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:355
msgid "Welcome to your new account!"
@@ -353,24 +296,23 @@ msgstr "ਆਖਰੀ ਫੇਲ ਹੋਇਆ ਲਾਗਇਨ:%s%s%s"
msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
-msgstr[0] "ਪਿਛਲੇ ਸਫਲਤਾਪੂਰਕ ਲਾਗਇਨ ਤੋਂ ਬਾਇਦ %d ਫੇਲ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ ਹੈ।"
-msgstr[1] "ਪਿਛਲੇ ਸਫਲਤਾਪੂਰਕ ਲਾਗਇਨ ਤੋਂ ਬਾਇਦ %d ਫੇਲ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਹਨ।"
+msgstr[0] "ਪਿਛਲੇ ਕਾਮਯਾਬ ਲਾਗਇਨ ਤੋਂ ਬਾਅਦ %d ਫੇਲ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ ਸੀ।"
+msgstr[1] "ਪਿਛਲੇ ਕਾਮਯਾਬ ਲਾਗਇਨ ਤੋਂ ਬਾਅਦ %d ਫੇਲà©à¨¹ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਸਨ।"
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
-msgstr "ਪਿਛਲੇ ਸਫਲਤਾਪੂਰਕ ਲਾਗਇਨ ਤੋਂ ਬਾਇਦ %d ਫੇਲ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਹਨ।"
+msgstr "ਪਿਛਲੇ ਕਾਮਯਾਬ ਲਾਗਇਨ ਤੋਂ ਬਾਅਦ %d ਫੇਲà©à¨¹ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਸਨ।"
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
-msgstr "'%s' ਲਈ ਬਹà©à¨¤ ਸਾਰੇ ਲਾਗਇਨ।"
+msgstr "'%s' ਲਈ ਬਹà©à¨¤ ਸਾਰੇ ਲਾਗਇਨ ਕੀਤੇ ਗਠਸਨ।"
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "ਤà©à¨¹à¨¾à¨¡à©€ ਨਵੀਂ ਮੇਲ ਹੈ।"
+msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਲਈ ਕੋਈ ਮੇਲ ਨਹੀਂ ਹੈ।"
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -404,66 +346,65 @@ msgstr "ਫੋਲਡਰ %s ਵਿੱਚ ਤà©à¨¹à¨¾à¨¡à©€ ਪà©à¨°à¨¾à¨£à©€ à¨
msgid "You have mail in folder %s."
msgstr "ਫੇਲਡਰ %s ਵਿੱਚ ਤà©à¨¹à¨¾à¨¡à©€ ਮੇਲ ਹੈ।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr "ਡਾਇਰੈਕਟਰੀ '%s' ਬਣਾ ਰਿਹਾ ਹੈ।"
+msgstr "ਡਾਇਰੈਕਟਰੀ '%s' ਬਣਾਈ ਜਾ ਰਹੀ ਹੈ।"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "ਡਾਇਰੈਕਟਰੀ '%s' ਨੂੰ ਬਣਾਉਣ ਅਤੇ ਸ਼à©à¨°à©‚ ਕਰਨ ਵਿੱਚ ਅਸਮਰਥ।"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "ਪਾਸਵਰਡ ਪਹਿਲਾਂ ਵੀ ਵਰਤਿਆ ਗਿਆ ਹੈ। ਵੱਖਰਾ ਚà©à¨£à©‹à¥¤"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
-msgstr "ਗà©à¨ªà¨¤-ਸ਼ਬਦ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਚà©à©±à¨•à¨¾ ਹੈ।"
+msgstr "ਪਾਸਵਰਡ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਚà©à©±à¨•à¨¾ ਹੈ।"
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "ਮੂਲ ਸà©à¨°à©±à¨–ਿਆ ਪà©à¨°à¨¸à©°à¨— %s\n"
+msgstr "ਮੂਲ ਸà©à¨°à©±à¨–ਿਆ ਪਰਸੰਗ %s ਹੈ।"
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
-msgstr "ਕੀ ਤà©à¨¸à©€à¨‚ ਇੱਕ ਵੱਖਰਾ ਰੋਲ ਜਾਂ ਲੈਵਲ ਦੇਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?"
+msgstr "ਕੀ ਤà©à¨¸à©€à¨‚ ਵੱਖਰਾ ਰੋਲ ਜਾਂ ਲੈਵਲ ਦੇਣਾ ਚਾਹà©à©°à¨¦à©‡ ਹੋ?"
#: modules/pam_selinux/pam_selinux.c:189
msgid "role:"
msgstr "ਰੋਲ:"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "ਰੋਲ %s ਵਾਲੀ ਕੋਈ ਮੂਲ ਕਿਸਮ ਨਹੀਂ ਹੈ\n"
+msgstr "ਰੋਲ %s ਲਈ ਕੋਈ ਮੂਲ ਕਿਸਮ ਨਹੀਂ ਹੈ।"
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
msgstr "ਲੈਵਲ:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "ਇੱਕ ਠੀਕ ਸà©à¨°à©±à¨–ਿਆ ਪਰਸੰਗ ਨਹੀਂ"
+msgstr "ਇਹ ਠੀਕ ਸà©à¨°à©±à¨–ਿਆ ਪਰਸੰਗ ਨਹੀਂ ਹੈ।"
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "%s ਲਈ ਢà©à©±à¨•à¨µà¨¾à¨‚ ਪਰਸੰਗ ਪà©à¨°à¨¾à¨ªà¨¤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "ਸà©à¨°à©±à¨–ਿਆ ਪà©à¨°à¨¸à©°à¨— %s ਨਿਰਧਾਰਤ ਕੀਤਾ"
+msgstr "ਸà©à¨°à©±à¨–ਿਆ ਪਰਸੰਗ %s ਦਿੱਤਾ ਨਹੀਂ ਜਾ ਸਕਿਆ।"
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "ਕà©à©°à¨œà©€ ਬਣਾਉਣ ਪà©à¨°à¨¸à©°à¨— %s ਨਿਰਧਾਰਤ ਕੀਤਾ"
+msgstr "ਕà©à©°à¨œà©€ ਬਣਾਉਣ ਪਰਸੰਗ %s ਦਿੱਤਾ ਗਿਆ ਹੈ।"
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -480,113 +421,58 @@ msgstr "pam_set_item() ਲਈ ਫੇਲ\n"
msgid "login: failure forking: %m"
msgstr "ਲਾਗਇਨ: ਫੋਰਕਿੰਗ ਫੇਲ: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ਖਾਤਾ ਆਰਜੀ ਤੌਰ ਤੇ ਲਾਕ ਕੀਤਾ ਹੈ (%ld ਸਕਿੰਟ ਬਾਕੀ ਹਨ)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "ਪਰਮਾਣਕਿਤਾ ਗਲਤੀ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "ਸੇਵਾ ਗਲਤੀ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ਅਣਜਾਣ ਉਪਭੋਗੀ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "ਅਣਜਾਣੀ ਗਲਤੀ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset= ਲਈ ਗਲਤ ਨੰਬਰ ਦਿੱਤਾ ਗਿਆ\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: ਬੇਪਛਾਣ ਚੋਣ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: ਸਭ ਉਪਭੋਗੀਆਂ ਨੂੰ ਨਾਨ-ਜ਼ੀਰੋ ਰੀਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਦਾ\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Failures Latest failure From\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
-#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr "ਪਹà©à©°à¨š ਰੱਦ ਕੀਤੀ (ਪਿਛਲੀ ਪਹà©à©°à¨š %ld ਸਕਿੰਟ ਪਹਿਲਾਂ ਸੀ)।"
+msgstr "ਪਹà©à©°à¨š ਲਈ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ (ਪਿਛਲੀ ਪਹà©à©°à¨š %ld ਸਕਿੰਟ ਪਹਿਲਾਂ ਸੀ)।"
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
-msgstr "ਤà©à¨¹à¨¾à¨¡à¨¾ ਖਾਤਾ ਮਿਆਦ ਪà©à©±à¨— ਗਈ ਹੈ; ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸਿਸਟਮ ਪਰਬੰਧਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ"
+msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਖਾਤੇ ਦੀ ਮਿਆਦ ਪà©à©±à¨— ਗਈ ਹੈ; ਆਪਣੇ ਸਿਸਟਮ ਪਰਸ਼ਾਸ਼ਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ।"
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣਾ ਪਾਸਵਰਡ ਤà©à¨°à©°à¨¤ ਤਬਦੀਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ (ਰੂਟ ਵੱਲੋਂ ਹਦਾਇਤ)"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣਾ ਪਾਸਵਰਡ ਫ਼ੌਰੀ ਤਬਦੀਲ ਕਰਨਾ ਪਵੇਗਾ (ਪਰਸ਼ਾਸ਼ਕ ਵੱਲੋਂ ਲਾਜ਼ਮੀ ਬਣਾਇਆ)।"
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣਾ ਪਾਸਵਰਡ ਤà©à¨°à©°à¨¤ ਤਬਦੀਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ (ਪਾਸਵਰਡ ਪà©à¨°à¨¾à¨£à¨¾ ਹੋ ਗਿਆ ਹੈ)"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣਾ ਪਾਸਵਰਡ ਫ਼ੌਰੀ ਤਬਦੀਲ ਕਰਨਾ ਪਵੇਗਾ (ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ ਪà©à©±à¨—à©€ ਹੈ)।"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨ ਵਿੱਚ ਪà©à©±à¨— ਜਾਵੇਗੀ"
-msgstr[1] "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨਾਂ ਵਿੱਚ ਪà©à©±à¨— ਜਾਵੇਗੀ"
+msgstr[0] "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨ ‘ਚ ਪà©à©±à¨— ਜਾਵੇਗੀ।"
+msgstr[1] "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨਾਂ ‘ਚ ਪà©à©±à¨— ਜਾਵੇਗੀ।"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨਾਂ ਵਿੱਚ ਪà©à©±à¨— ਜਾਵੇਗੀ"
+msgstr "ਚੇਤਾਵਨੀ: ਤà©à¨¹à¨¾à¨¡à©‡ ਪਾਸਵਰਡ ਦੀ ਮਿਆਦ %d ਦਿਨਾਂ ‘ਚ ਪà©à©±à¨— ਜਾਵੇਗੀ।"
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "NIS ਪਾਸਵਰਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "ਕੋਈ ਪਾਸਵਰਡ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ।"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਛੋਟਾ ਪਾਸਵਰਡ ਚà©à¨£à¨¨à¨¾ ਚਾਹੀਦਾ ਹੈ."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਲੰਮੇ ਪਾਸਵਰਡ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਲੰਮਾ ਪਾਸਵਰਡ ਚà©à¨£à¨¨à¨¾ ਪਵੇਗਾ।"
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
@@ -594,6 +480,82 @@ msgid "Changing password for %s."
msgstr "%s ਲਈ ਪਾਸਵਰਡ ਤਬਦੀਲ ਕਰ ਰਿਹਾ ਹੈ।"
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਲੰਬੇ ਸਮੇਂ ਲਈ ਆਪਣੇ ਪਾਸਵਰਡ ਲਈ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ"
+msgstr "ਤà©à¨¹à¨¾à¨¨à©‚à©° ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਬਦਲਣ ਲਈ ਲੰਮੀ ਉਡੀਕ ਕਰਨੀ ਪਵੇਗੀ।"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ਪà©à¨°à¨¾à¨£à©‡ ਵਰਗਾ ਹੈ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "ਮੈਮੋਰੀ ਨਿਰਧਾਰਨ ਗਲਤੀ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ਘà©à©°à¨®à¨¾à¨‰ ਸ਼ਬਦ ਹੈ"
+
+#~ msgid "case changes only"
+#~ msgstr "ਸਿਰਫ ਅੱਖਰ ਤਬਦੀਲੀ"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ਪà©à¨°à¨¾à¨£à©‡ ਨਾਲ ਬਹà©à¨¤ ਮਿਲਦਾ-ਜà©à¨²à¨¦à¨¾ ਹੈ"
+
+#~ msgid "is too simple"
+#~ msgstr "ਬਹà©à¨¤ ਸਧਾਰਨ ਹੈ"
+
+#~ msgid "is rotated"
+#~ msgstr "ਘà©à©°à¨®à¨¾à¨‡à¨† ਹੈ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "ਲੋੜੀਂਦੀਆਂ ਅੱਖਰ ਸ਼à©à¨°à©‡à¨£à©€à¨†à¨‚ ਨਹੀਂ ਹਨ"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "ਲਗਾਤਾਰ ਬਹà©à¨¤ ਸਾਰੇ ਮਿਲਦੇ-ਜà©à¨²à¨¦à©‡ ਅੱਖਰ ਸ਼ਾਮਿਲ ਹਨ"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "ਇੱਕ ਬਹà©à¨¤ ਜਿਆਦਾ ਲੰਬੀ ਇਕਸà©à¨°à¨¤à¨¾ ਵਾਲੀ ਅੱਖਰ ਲੜੀ ਸਮਾਈ ਹੋਈ ਹੈ"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "ਕਿਸੇ ਢੰਗ ਨਾਲ ਵਰਤੋਂਕਾਰ ਨਾਂ ਮੌਜੂਦ ਹੈ"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ਗਲਤ ਪਾਸਵਰਡ: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ਖਾਤਾ ਆਰਜ਼ੀ ਤੌਰ ‘ਤੇ ਲਾਕ ਕੀਤਾ ਹੈ (%ld ਸਕਿੰਟ ਬਾਕੀ ਹਨ)।"
+
+#~ msgid "Authentication error"
+#~ msgstr "ਪਰਮਾਣਕਿਤਾ ਗਲਤੀ"
+
+#~ msgid "Service error"
+#~ msgstr "ਸੇਵਾ ਗਲਤੀ"
+
+#~ msgid "Unknown user"
+#~ msgstr "ਅਣਪਛਾਤਾ ਵਰਤੋਂਕਾਰ"
+
+#~ msgid "Unknown error"
+#~ msgstr "ਅਣਜਾਣੀ ਗਲਤੀ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset= ਲਈ ਗਲਤ ਨੰਬਰ ਦਿੱਤਾ ਗਿਆ\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: ਬੇਪਛਾਣ ਚੋਣ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਗ਼ੈਰ-ਸਿਫ਼ਰ ਲਈ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "ਲਾਗਇਨ ਫੇਲà©à¨¹ ਆਖਰੀ ਹੋਠਫੇਲà©à¨¹ ਇਸ ਤੋਂ\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u ਵਰਤੋਂਕਾਰ-ਨਾਂ] [--user ਵਰਤੋਂਕਾਰ-ਨਾਂ]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 2130bc22..b2cf4b63 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 5f3444cb..42b0c427 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -3,17 +3,17 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
-# Piotr DrÄ…g <piotrdrag@gmail.com>, 2008,2012, 2020.
+# Piotr DrÄ…g <piotrdrag@gmail.com>, 2008,2012, 2020, 2021.
# Stanisław Małolepszy <smalolepszy@aviary.pl>, 2006
# Wojciech Kapusta <wojciech@aviary.pl>, 2006
-# Piotr DrÄ…g <piotrdrag@gmail.com>, 2016. #zanata, 2020.
+# Piotr DrÄ…g <piotrdrag@gmail.com>, 2016. #zanata, 2020, 2021.
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-01 09:26+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-21 15:47+0000\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/pl/>\n"
@@ -23,23 +23,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.0.1\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "…czas mija…\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "…czas minął.\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "błędna rozmowa (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Hasło: "
@@ -219,84 +206,35 @@ msgstr "Aplikacja musi jeszcze raz wywołać libpam"
msgid "Unknown PAM error"
msgstr "Nieznany błąd PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "jest identyczne z poprzednim"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "błąd przydziału pamięci"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "jest palindromem"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "ma zmienioną tylko wielkość znaków"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "jest za bardzo podobne do poprzedniego"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "jest za proste"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "jest obrócone"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "za mało rodzajów znaków"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "zawiera za dużo takich samych znaków po sobie"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "zawiera za dużo takich samych znaków po sobie"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "zawiera nazwę użytkownika w jakiejś formie"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Nie podano hasła."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "…czas mija…\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Hasło nie zostało zmienione."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "…czas minął.\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "BÅĘDNE HASÅO: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "błędna rozmowa (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s się nie powiodło: kod wyjścia %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s się nie powiodło: otrzymano sygnał %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s się nie powiodło: nieznany stan 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -304,13 +242,22 @@ msgstr ""
"Użycie: %s [--dir /ścieżka/do/katalogu-tally] [--user nazwa-użytkownika] [--"
"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Konto zostało zablokowane z powodu %u nieudanych logowań."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(pozostała %d minuta do odblokowania)"
+msgstr[1] "(pozostały %d minuty do odblokowania)"
+msgstr[2] "(pozostało %d minut do odblokowania)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(pozostało %d min do odblokowania)"
@@ -367,7 +314,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Nastąpiło %d nieudanych prób zalogowania od ostatniego udanego logowania."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Za dużo prób zalogowania na „%sâ€."
@@ -408,22 +355,22 @@ msgstr "Stare wiadomości w katalogu %s."
msgid "You have mail in folder %s."
msgstr "Wiadomości w katalogu %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Tworzenie katalogu „%sâ€."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Nie można utworzyć i zainicjować katalogu „%sâ€."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Hasło było już używane. Należy wybrać inne."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Hasło było już używane."
@@ -458,12 +405,12 @@ msgstr "Nieprawidłowy kontekst zabezpieczeń."
msgid "A valid context for %s could not be obtained."
msgstr "Nie można uzyskać prawidłowego kontekstu dla %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Przypisano kontekst zabezpieczeń %s."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Przypisano kontekst tworzenia klucza %s."
@@ -483,67 +430,7 @@ msgstr "„pam_set_item()†się nie powiodło\n"
msgid "login: failure forking: %m"
msgstr "login: rozdzielenie się nie powiodło: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Konto zostało tymczasowo zablokowane (pozostało %ld s)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "BÅ‚Ä…d uwierzytelniania"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Błąd usługi"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Nieznany użytkownik"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Nieznany błąd"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: podano bÅ‚Ä™dny numer dla „--reset=â€\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: nierozpoznana opcja %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file nazwa-pliku-root] [--user nazwa-użytkownika] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: nie można przywrócić wszystkich użytkowników\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Niepowodzenia Ostatnie niepowodzenie Z\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f nazwa-pliku-root] [--file nazwa-pliku-root]\n"
-" [-u nazwa-użytkownika] [--user nazwa-użytkownika]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Udzielono dostęp (ostatni dostęp %ld s temu)."
@@ -564,7 +451,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Wymagana jest natychmiastowa zmiana hasła (hasło wygasło)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -573,7 +460,7 @@ msgstr[1] "Ostrzeżenie: hasło wygaśnie za %d dni."
msgstr[2] "Ostrzeżenie: hasło wygaśnie za %d dni."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Ostrzeżenie: hasło wygaśnie za %d dni."
@@ -582,6 +469,14 @@ msgstr "Ostrzeżenie: hasło wygaśnie za %d dni."
msgid "NIS password could not be changed."
msgstr "Nie można zmienić hasła NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Nie podano hasła."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Hasło nie zostało zmienione."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Należy wybrać krótsze hasło."
@@ -598,3 +493,81 @@ msgstr "Zmienianie hasła dla %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Należy poczekać dłużej na zmianę hasła."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "jest identyczne z poprzednim"
+
+#~ msgid "memory allocation error"
+#~ msgstr "błąd przydziału pamięci"
+
+#~ msgid "is a palindrome"
+#~ msgstr "jest palindromem"
+
+#~ msgid "case changes only"
+#~ msgstr "ma zmienioną tylko wielkość znaków"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "jest za bardzo podobne do poprzedniego"
+
+#~ msgid "is too simple"
+#~ msgstr "jest za proste"
+
+#~ msgid "is rotated"
+#~ msgstr "jest obrócone"
+
+#~ msgid "not enough character classes"
+#~ msgstr "za mało rodzajów znaków"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "zawiera za dużo takich samych znaków po sobie"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "zawiera za dużo takich samych znaków po sobie"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "zawiera nazwę użytkownika w jakiejś formie"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "BÅĘDNE HASÅO: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Konto zostało tymczasowo zablokowane (pozostało %ld s)."
+
+#~ msgid "Authentication error"
+#~ msgstr "BÅ‚Ä…d uwierzytelniania"
+
+#~ msgid "Service error"
+#~ msgstr "Błąd usługi"
+
+#~ msgid "Unknown user"
+#~ msgstr "Nieznany użytkownik"
+
+#~ msgid "Unknown error"
+#~ msgstr "Nieznany błąd"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: podano bÅ‚Ä™dny numer dla „--reset=â€\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: nierozpoznana opcja %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file nazwa-pliku-root] [--user nazwa-użytkownika] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: nie można przywrócić wszystkich użytkowników\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Niepowodzenia Ostatnie niepowodzenie Z\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f nazwa-pliku-root] [--file nazwa-pliku-root]\n"
+#~ " [-u nazwa-użytkownika] [--user nazwa-użytkownika]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/pt.gmo b/po/pt.gmo
index b516adeb..81d4cc71 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index 6ae80500..556b5c7d 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -8,15 +8,15 @@
# Rui Gouveia <rui.gouveia@globaltek.pt>, 2009
# Rui Gouveia <rui.gouveia@gmail.com>, 2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
# Manuela Silva <mmsrs@sky.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-06 11:40+0000\n"
-"Last-Translator: Manuela Silva <mmsrs@sky.com>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Portuguese <https://translate.fedoraproject.org/projects/"
"linux-pam/master/pt/>\n"
"Language: pt\n"
@@ -24,23 +24,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 4.0.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...O tempo está a esgotar-se...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Desculpe, o seu tempo expirou!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversação errónea (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Palavra-passe: "
@@ -221,84 +208,35 @@ msgstr "A aplicação necessita de invocar o libpam novamente"
msgid "Unknown PAM error"
msgstr "Erro PAM desconhecido"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "é igual à anterior"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "erro de alocação de memória"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "é um palíndromo"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "apenas muda a capitulação"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "é muito semelhante à anterior"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "é demasiado simples"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "é rodada"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "não tem classes de caracteres suficientes"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "contém demasiados caracteres iguais consecutivos"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "contém demasiados caracteres iguais consecutivos"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "contém, de alguma forma, o nome do utilizador"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Não foi fornecida uma senha."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...O tempo está a esgotar-se...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "A senha não foi alterada."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Desculpe, o seu tempo expirou!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "MÃ SENHA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversação errónea (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s falhou: código de saída %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s falhou: sinal capturado %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s falhou: estado desconhecido 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -306,13 +244,21 @@ msgstr ""
"Utilização: %s [--dir / path/to/tally-directory] [--user nome de utilizador] "
"[--reset]]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Conta bloqueada devido a %u inícios de sessão falhados."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minuto restante para desbloquear)"
+msgstr[1] "(%d minutos restante para desbloquear)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(Minutos restantes para desbloquear: %d)"
@@ -370,7 +316,7 @@ msgstr ""
"Houve %d tentativas falhadas de início de sessão desde o último início de "
"sessão com sucesso."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Demasiados inícios de sessão para '%s'."
@@ -411,22 +357,22 @@ msgstr "Tem correio electrónico antigo na pasta %s."
msgid "You have mail in folder %s."
msgstr "Tem correio electrónico na pasta %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "A criar directório '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Não foi possível criar e inicializar o directório '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "A senha já foi utilizada anteriormente. Escolha outra."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "A senha já foi utilizada anteriormente."
@@ -461,12 +407,12 @@ msgstr "Não é um contexto de segurança válido."
msgid "A valid context for %s could not be obtained."
msgstr "Não foi possível obter um contexto de segurança válido para %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Contexto de Segurança %s Atribuído."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Contexto de Segurança de Chaves %s Atribuído."
@@ -486,66 +432,7 @@ msgstr "falha em pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "início de sessão: falha no 'forking': %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Conta temporariamente bloqueada (faltam %ld segundos)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Erro de autenticação"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Erro de serviço"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Utilizador desconhecido"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Erro desconhecido"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Número errado fornecido a --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Opção não reconhecida %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file ficheiro-raiz] [--user nome-utilizador] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Não foi possível reiniciar todos os utilizadores para não zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Sessão Falhas Última falha De\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u nome-de-utilizador] [--user nome-de-utilizador]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Acesso permitido (último acesso foi à %ld segundos atrás)."
@@ -568,7 +455,7 @@ msgid ""
msgstr ""
"É obrigatório que altere de imediato a sua senha (antiguidade da password)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -576,7 +463,7 @@ msgstr[0] "Aviso: a sua senha expira em %d dia."
msgstr[1] "Aviso: a sua senha expira em %d dias."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Aviso: a sua palavra passe expira em %d dias."
@@ -585,6 +472,14 @@ msgstr "Aviso: a sua palavra passe expira em %d dias."
msgid "NIS password could not be changed."
msgstr "A senha NIS não pode ser alterada."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Não foi fornecida uma senha."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "A senha não foi alterada."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Você deve escolher uma senha mais curta."
@@ -601,3 +496,82 @@ msgstr "A alterar senha para %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Tem de esperar mais antes de poder alterar a sua senha."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "é igual à anterior"
+
+#~ msgid "memory allocation error"
+#~ msgstr "erro de alocação de memória"
+
+#~ msgid "is a palindrome"
+#~ msgstr "é um palíndromo"
+
+#~ msgid "case changes only"
+#~ msgstr "apenas muda a capitulação"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "é muito semelhante à anterior"
+
+#~ msgid "is too simple"
+#~ msgstr "é demasiado simples"
+
+#~ msgid "is rotated"
+#~ msgstr "é rodada"
+
+#~ msgid "not enough character classes"
+#~ msgstr "não tem classes de caracteres suficientes"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "contém demasiados caracteres iguais consecutivos"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "contém demasiados caracteres iguais consecutivos"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "contém, de alguma forma, o nome do utilizador"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "MÃ SENHA: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Conta temporariamente bloqueada (faltam %ld segundos)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Erro de autenticação"
+
+#~ msgid "Service error"
+#~ msgstr "Erro de serviço"
+
+#~ msgid "Unknown user"
+#~ msgstr "Utilizador desconhecido"
+
+#~ msgid "Unknown error"
+#~ msgstr "Erro desconhecido"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Número errado fornecido a --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Opção não reconhecida %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file ficheiro-raiz] [--user nome-utilizador] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: Não foi possível reiniciar todos os utilizadores para não zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Sessão Falhas Última falha De\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u nome-de-utilizador] [--user nome-de-utilizador]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 63b46195..524bfe9e 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index a8d2e975..bdfcb16c 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -10,13 +10,13 @@
# Marcelo Barbosa <firemanxbr@fedoraproject.org>, 2013
# Taylon Silmer <taylonsilva@gmail.com>, 2008-2009
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-15 23:38+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.fedoraproject.org/"
"projects/linux-pam/master/pt_BR/>\n"
@@ -25,23 +25,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.11.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...O tempo está acabando...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Desculpe, seu tempo está aumentando!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "conversação errônea (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Senha: "
@@ -221,100 +208,60 @@ msgstr "O aplicativo precisa chamar libpam novamente"
msgid "Unknown PAM error"
msgstr "Erro desconhecido no PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "é igual à antiga senha"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "Erro de alocação de memória"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "é um palíndromo"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "mudou apenas maiúsculas/minúsculas"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "é muito semelhante à antiga"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "é simples demais"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "foi invertida"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "classes de caractere insuficientes"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "contém muitos caracteres igual consecutivamente"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "contém muito longo de uma seqüência de caracteres monotônica"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "contém o nome de usuário em algum formulário"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Nenhuma senha informada."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...O tempo está acabando...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Senha inalterada."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Desculpe, seu tempo está aumentando!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "SENHA INCORRETA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "conversação errônea (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s falhou: código de saída %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s falhou: detectou sinal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s falhou: status desconhecido 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file ficheiro-raiz [--user nome-utilizador] [--reset[=n]] [--quiet]\n"
+"Uso: %s [--dir /caminho/para/diretório-tally] [--user nome-utilizador] [--"
+"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Conta bloqueada devido a %u falhas de login."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minuto restante para desbloquear)"
+msgstr[1] "(%d minutos restante para desbloquear)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(minutos restantes para desbloquear: %d)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -363,7 +310,7 @@ msgstr[1] "Houveram %d falhas de login desde o último login bem sucedido."
msgid "There were %d failed login attempts since the last successful login."
msgstr "Houveram %d falhas de login desde o último login bem sucedido."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Há logins demais para '%s'."
@@ -404,22 +351,22 @@ msgstr "Há mensagens antigas na pasta %s."
msgid "You have mail in folder %s."
msgstr "Há mensagens na pasta %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Criando o diretório '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Impossível criar e inicializar o diretório \"%s\"."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "A senha já foi usada. Escolha outra."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "A senha já foi usada."
@@ -454,12 +401,12 @@ msgstr "Não é um contexto de segurança válido."
msgid "A valid context for %s could not be obtained."
msgstr "Impossível obter um contexto válido para %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Contexto de segurança %s atribuído."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Contexto de criação de chave %s atribuído."
@@ -479,66 +426,7 @@ msgstr "falha em pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: falha na bifurcação: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Conta temporariamente bloqueada (restam %ld segundos)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Erro de autenticação"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Erro de serviço"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Usuário desconhecido"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Erro desconhecido"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Número insuficiente fornecido para --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Opção não reconhecida %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file ficheiro-raiz [--user nome-utilizador] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Impossível redefinir todos os usuários para não-zero\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Falhas Último falha De\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f ficheiro-raiz] [--file ficheiro-raiz]\n"
-" [-u nome-utilizador] [--user nome-utilizador]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Acesso concedido (o último acesso foi a %ld segundos atrás)."
@@ -558,7 +446,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Mude sua senha imediatamente (senha expirada)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -566,7 +454,7 @@ msgstr[0] "Aviso: sua senha irá expirar em %d dia."
msgstr[1] "Aviso: sua senha irá expirar em %d dias."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Aviso: sua senha irá expirar em %d dias."
@@ -575,6 +463,14 @@ msgstr "Aviso: sua senha irá expirar em %d dias."
msgid "NIS password could not be changed."
msgstr "A senha NIS não pôde ser mudada."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Nenhuma senha informada."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Senha inalterada."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Você deve escolher uma senha mais curta."
@@ -591,3 +487,81 @@ msgstr "Mudando senha para %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Aguarde mais tempo para mudar a senha."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "é igual à antiga senha"
+
+#~ msgid "memory allocation error"
+#~ msgstr "Erro de alocação de memória"
+
+#~ msgid "is a palindrome"
+#~ msgstr "é um palíndromo"
+
+#~ msgid "case changes only"
+#~ msgstr "mudou apenas maiúsculas/minúsculas"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "é muito semelhante à antiga"
+
+#~ msgid "is too simple"
+#~ msgstr "é simples demais"
+
+#~ msgid "is rotated"
+#~ msgstr "foi invertida"
+
+#~ msgid "not enough character classes"
+#~ msgstr "classes de caractere insuficientes"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "contém muitos caracteres igual consecutivamente"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "contém muito longo de uma seqüência de caracteres monotônica"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "contém o nome de usuário em algum formulário"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "SENHA INCORRETA: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Conta temporariamente bloqueada (restam %ld segundos)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Erro de autenticação"
+
+#~ msgid "Service error"
+#~ msgstr "Erro de serviço"
+
+#~ msgid "Unknown user"
+#~ msgstr "Usuário desconhecido"
+
+#~ msgid "Unknown error"
+#~ msgstr "Erro desconhecido"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Número insuficiente fornecido para --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Opção não reconhecida %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file ficheiro-raiz [--user nome-utilizador] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Impossível redefinir todos os usuários para não-zero\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Falhas Último falha De\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f ficheiro-raiz] [--file ficheiro-raiz]\n"
+#~ " [-u nome-utilizador] [--user nome-utilizador]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ro.gmo b/po/ro.gmo
index 5fb5dd9a..e2cc3fdb 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index aba58519..b2c88993 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -4,343 +4,294 @@
#
# Translators:
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
+# Vlad <milovlad@outlook.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2011-11-30 06:56-0500\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/fedora/language/"
-"ro/)\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-12-26 18:36+0000\n"
+"Last-Translator: Vlad <milovlad@outlook.com>\n"
+"Language-Team: Romanian <https://translate.fedoraproject.org/projects/linux-"
+"pam/master/ro/>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-"X-Generator: Zanata 3.8.3\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+"X-Generator: Weblate 4.3.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr ""
+msgstr "Parolă: "
#: libpam/pam_get_authtok.c:41
#, c-format
msgid "Current %s password: "
-msgstr ""
+msgstr "Parolă curentă %s: "
#: libpam/pam_get_authtok.c:42
msgid "Current password: "
-msgstr ""
+msgstr "Parolă curentă: "
#: libpam/pam_get_authtok.c:44
#, c-format
msgid "New %s password: "
-msgstr ""
+msgstr "Parolă nouă %s: "
#: libpam/pam_get_authtok.c:45
msgid "New password: "
-msgstr ""
+msgstr "Parolă nouă: "
#: libpam/pam_get_authtok.c:47
#, c-format
msgid "Retype new %s password: "
-msgstr ""
+msgstr "Rescrie parola nouă %s: "
#: libpam/pam_get_authtok.c:48
msgid "Retype new password: "
-msgstr ""
+msgstr "Rescrie parola nouă: "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
-msgstr ""
+msgstr "Parolele nu se potrivesc."
#: libpam/pam_get_authtok.c:142 libpam/pam_get_authtok.c:240
#, c-format
msgid "Retype %s"
-msgstr ""
+msgstr "Rescrie %s"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
msgid "Password change has been aborted."
-msgstr ""
+msgstr "Schimbarea parolei a eșuat."
#: libpam/pam_item.c:311
msgid "login:"
-msgstr ""
+msgstr "autentificare:"
#: libpam/pam_strerror.c:40
msgid "Success"
-msgstr ""
+msgstr "Succes"
#: libpam/pam_strerror.c:42
msgid "Critical error - immediate abort"
-msgstr ""
+msgstr "Eroare critică - abandonare imediată"
#: libpam/pam_strerror.c:44
msgid "Failed to load module"
-msgstr ""
+msgstr "Încercare eșuată de a încărca un modul"
#: libpam/pam_strerror.c:46
msgid "Symbol not found"
-msgstr ""
+msgstr "Simbolul nu a fost găsit"
#: libpam/pam_strerror.c:48
msgid "Error in service module"
-msgstr ""
+msgstr "Eroare în modulul de serviciu"
#: libpam/pam_strerror.c:50
msgid "System error"
-msgstr ""
+msgstr "Eroare de sistem"
#: libpam/pam_strerror.c:52
msgid "Memory buffer error"
-msgstr ""
+msgstr "Eroare în memoria tampon"
#: libpam/pam_strerror.c:54
msgid "Permission denied"
-msgstr ""
+msgstr "Acces refuzat"
#: libpam/pam_strerror.c:56
msgid "Authentication failure"
-msgstr ""
+msgstr "Autentificare eșuată"
#: libpam/pam_strerror.c:58
msgid "Insufficient credentials to access authentication data"
-msgstr ""
+msgstr "Acreditări insuficiente pentru a accesa datele de autentificare"
#: libpam/pam_strerror.c:60
msgid "Authentication service cannot retrieve authentication info"
msgstr ""
+"Serviciul de autentificare nu poate obține informațiile de autentificare"
#: libpam/pam_strerror.c:62
msgid "User not known to the underlying authentication module"
-msgstr ""
+msgstr "Modulul de autentificare nu cunoaște utilizatorul"
#: libpam/pam_strerror.c:64
msgid "Have exhausted maximum number of retries for service"
-msgstr ""
+msgstr "S-a atins numărul maxim de încercări pentru serviciu"
#: libpam/pam_strerror.c:66
msgid "Authentication token is no longer valid; new one required"
msgstr ""
+"Autentificarea nu mai este valabilă; o nouă autentificare este necesară"
#: libpam/pam_strerror.c:68
msgid "User account has expired"
-msgstr ""
+msgstr "Contul utilizatorului a expirat"
#: libpam/pam_strerror.c:70
msgid "Cannot make/remove an entry for the specified session"
-msgstr ""
+msgstr "Nu se poate crea/șterge o intrare pentru sesiunea specificată"
#: libpam/pam_strerror.c:72
msgid "Authentication service cannot retrieve user credentials"
-msgstr ""
+msgstr "Serviciul de autentificare nu poate obține acreditările utilizatorului"
#: libpam/pam_strerror.c:74
msgid "User credentials expired"
-msgstr ""
+msgstr "Acreditările utilizatorului au expirat"
#: libpam/pam_strerror.c:76
msgid "Failure setting user credentials"
-msgstr ""
+msgstr "Eșec in setarea acreditărilor pentru utilizator"
#: libpam/pam_strerror.c:78
msgid "No module specific data is present"
-msgstr ""
+msgstr "Nu există date specifice pentru modul"
#: libpam/pam_strerror.c:80
msgid "Bad item passed to pam_*_item()"
-msgstr ""
+msgstr "A fost trimis un element incorect către pam_*_item()"
#: libpam/pam_strerror.c:82
msgid "Conversation error"
-msgstr ""
+msgstr "Eroare de conversație"
#: libpam/pam_strerror.c:84
msgid "Authentication token manipulation error"
-msgstr ""
+msgstr "Eroare la manipularea informației de autentificare"
#: libpam/pam_strerror.c:86
msgid "Authentication information cannot be recovered"
-msgstr ""
+msgstr "Informația de autentificare nu poate fi recuperată"
#: libpam/pam_strerror.c:88
msgid "Authentication token lock busy"
-msgstr ""
+msgstr "Blocarea informației de autentificare este rezervată"
#: libpam/pam_strerror.c:90
msgid "Authentication token aging disabled"
-msgstr ""
+msgstr "Informația de autentificare nu poate expira"
#: libpam/pam_strerror.c:92
msgid "Failed preliminary check by password service"
-msgstr ""
+msgstr "Eroare la verificarea preliminară făcută de către serviciul de parole"
#: libpam/pam_strerror.c:94
msgid "The return value should be ignored by PAM dispatch"
-msgstr ""
+msgstr "Valoarea retunată poate fi ignorată de PAM"
#: libpam/pam_strerror.c:96
msgid "Module is unknown"
-msgstr ""
+msgstr "Modul necunoscut"
#: libpam/pam_strerror.c:98
msgid "Authentication token expired"
-msgstr ""
+msgstr "Informația de autentificare a expirat"
#: libpam/pam_strerror.c:100
msgid "Conversation is waiting for event"
-msgstr ""
+msgstr "Conversația asteaptă după un eveniment"
#: libpam/pam_strerror.c:102
msgid "Application needs to call libpam again"
-msgstr ""
+msgstr "Aplicația trebuie să cheme din nou libpam"
#: libpam/pam_strerror.c:105
msgid "Unknown PAM error"
-msgstr ""
+msgstr "Eroare PAM necunoscută"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr ""
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Timpul se scurge...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr ""
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Timpul a expirat!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr ""
+msgid "erroneous conversation (%d)\n"
+msgstr "conversație eronată (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
-msgstr ""
+msgstr "%s a eșuat: codul de terminare %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
-msgstr ""
+msgstr "%s a eșuat: semnalul captat %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
-msgstr ""
+msgstr "%s a eșuat: stare necunoscută 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
+"Utilizare: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr ""
+msgstr "Contul este blocat deoarece %u nu a reușit să se autentifice."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minute rămase până la deblocare)"
+msgstr[1] "(%d minute rămase până la deblocare)"
+msgstr[2] "(%d minute rămase până la deblocare)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d minute rămase până la deblocare)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
msgid " %a %b %e %H:%M:%S %Z %Y"
-msgstr ""
+msgstr " %a %b %e %H:%M:%S %Z %Y"
#. TRANSLATORS: " from <host>"
#: modules/pam_lastlog/pam_lastlog.c:327 modules/pam_lastlog/pam_lastlog.c:588
#, c-format
msgid " from %.*s"
-msgstr ""
+msgstr " de la %.*s"
#. TRANSLATORS: " on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:339 modules/pam_lastlog/pam_lastlog.c:600
#, c-format
msgid " on %.*s"
-msgstr ""
+msgstr " pe %.*s"
#. TRANSLATORS: "Last login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:349
#, c-format
msgid "Last login:%s%s%s"
-msgstr ""
+msgstr "Ultima autentificare:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:355
msgid "Welcome to your new account!"
-msgstr ""
+msgstr "Bun venit în noul cont!"
#. TRANSLATORS: "Last failed login: <date> from <host> on <terminal>"
#: modules/pam_lastlog/pam_lastlog.c:610
#, c-format
msgid "Last failed login:%s%s%s"
-msgstr ""
+msgstr "Ultima autentificare eșuată:%s%s%s"
#: modules/pam_lastlog/pam_lastlog.c:619 modules/pam_lastlog/pam_lastlog.c:626
#, c-format
@@ -348,240 +299,198 @@ msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
msgstr[0] ""
+"A mai fost %d încercare nereușită de autentificare de la ultima "
+"autentificare reușită."
msgstr[1] ""
+"Au mai fost %d încercări nereușite de autentificare de la ultima "
+"autentificare reușită."
msgstr[2] ""
+"Au mai fost %d încercări nereușite de autentificare de la ultima "
+"autentificare reușită."
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
+"Au mai fost %d încercări nereușite de autentificare de la ultima "
+"autentificare reușită."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
-msgstr ""
+msgstr "Sunt prea multe autentificări pentru '%s'."
#: modules/pam_mail/pam_mail.c:289
msgid "You have no mail."
-msgstr ""
+msgstr "Nu ai mesaje."
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
-msgstr ""
+msgstr "Ai un mesaj nou."
#: modules/pam_mail/pam_mail.c:295
msgid "You have old mail."
-msgstr ""
+msgstr "Ai un mesaj vechi."
#: modules/pam_mail/pam_mail.c:299
msgid "You have mail."
-msgstr ""
+msgstr "Ai un mesaj."
#: modules/pam_mail/pam_mail.c:306
#, c-format
msgid "You have no mail in folder %s."
-msgstr ""
+msgstr "Nu ai mesaje în directorul %s."
#: modules/pam_mail/pam_mail.c:310
#, c-format
msgid "You have new mail in folder %s."
-msgstr ""
+msgstr "Ai un mesaj nou în directorul %s."
#: modules/pam_mail/pam_mail.c:314
#, c-format
msgid "You have old mail in folder %s."
-msgstr ""
+msgstr "Ai un mesaj vechi în directorul %s."
#: modules/pam_mail/pam_mail.c:319
#, c-format
msgid "You have mail in folder %s."
-msgstr ""
+msgstr "Ai un mesaj în directorul %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
-msgstr ""
+msgstr "Crează directorul '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
-msgstr ""
+msgstr "Nu se poate crea și inițializa directorul '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
-msgstr ""
+msgstr "Parola a fost deja utilizată. Alege alta."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
-msgstr ""
+msgstr "Parola a fost deja utilizată."
#: modules/pam_selinux/pam_selinux.c:172
#, c-format
msgid "The default security context is %s."
-msgstr ""
+msgstr "Contextul implicit de securitate este %s."
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
-msgstr ""
+msgstr "Vrei să introduci un rol sau nivel diferit?"
#: modules/pam_selinux/pam_selinux.c:189
msgid "role:"
-msgstr ""
+msgstr "rol:"
#: modules/pam_selinux/pam_selinux.c:193
#, c-format
msgid "There is no default type for role %s."
-msgstr ""
+msgstr "Nu există un tip implicit pentru rolul %s."
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
-msgstr ""
+msgstr "nivel:"
#: modules/pam_selinux/pam_selinux.c:259
msgid "This is not a valid security context."
-msgstr ""
+msgstr "Nu există un context valid de securitate."
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "Nu a putut fi obținut un context valid pentru %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
-msgstr ""
+msgstr "Contextul de securitate %s a fost asignat."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
-msgstr ""
+msgstr "Cheia pentru crearea contextului %s a fost asignată."
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
msgid "failed to initialize PAM\n"
-msgstr ""
+msgstr "eroare la inițializarea PAM\n"
#: modules/pam_selinux/pam_selinux_check.c:105
#, c-format
msgid "failed to pam_set_item()\n"
-msgstr ""
+msgstr "eroare la pam_set_item()\n"
#: modules/pam_selinux/pam_selinux_check.c:133
#, c-format
msgid "login: failure forking: %m"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
+msgstr "autentificare: eroare la bifurcare %m"
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr ""
+msgstr "Accesul a fost permis (ultimul acces a fost acum %ld secunde)."
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
msgid "Your account has expired; please contact your system administrator."
-msgstr ""
+msgstr "Contul tău a expirat; te rog să contactezi administratorul de sistem."
#: modules/pam_unix/pam_unix_acct.c:238
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr ""
+msgstr "Trebuie să schimbi imediat parola (impus de către administrator)."
#: modules/pam_unix/pam_unix_acct.c:244
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr ""
+msgstr "Trebuie să schimbi imediat parola (parola a expirat)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Atenție: parola ta va expira în %d zi."
+msgstr[1] "Atenție: parola ta va expira în %d zile."
+msgstr[2] "Atenție: parola ta va expira în %d zile."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr ""
+msgstr "Atenție: parola ta va expira în %d zile."
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
-msgstr ""
+msgstr "Parola pentru NIS nu poate fi schimbată."
+
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Nu a fost introdusă nicio parolă."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Parola nu a fost schimbată."
#: modules/pam_unix/pam_unix_passwd.c:581
-#, fuzzy
msgid "You must choose a shorter password."
-msgstr "Trebuie să alegeți o parolă mai scurtă."
+msgstr "Trebuie să alegi o parolă mai scurtă."
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "Trebuie să alegeți o parolă mai scurtă."
+msgstr "Trebuie să alegi o parolă mai lungă."
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
msgid "Changing password for %s."
-msgstr ""
+msgstr "Schimbare parolă pentru %s."
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "Trebuie să alegeți o parolă mai scurtă."
+msgstr "Trebuie să aștepti mai mult până vei putea schimba parola."
diff --git a/po/ru.gmo b/po/ru.gmo
index 4449b0cc..13395fb8 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index cb0abb4f..ef0d1b2b 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,13 +8,13 @@
# Yulia <yulia.poyarkova@redhat.com>, 2007,2009
# Yulia <yulia.poyarkova@redhat.com>, 2013
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-03 12:21+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-21 13:19+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Russian <https://translate.fedoraproject.org/projects/linux-"
"pam/master/ru/>\n"
@@ -24,23 +24,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.0.3\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Ð’Ñ€ÐµÐ¼Ñ Ð¸Ñтекает...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Извините, ваше Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñтекло!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ошибочный диалог (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Пароль: "
@@ -222,84 +209,35 @@ msgstr "Приложение должно повторно вызвать libpam
msgid "Unknown PAM error"
msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "Ñовпадает Ñо Ñтарым"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "ÑвлÑетÑÑ Ð¿Ð°Ð»Ð¸Ð½Ð´Ñ€Ð¾Ð¼Ð¾Ð¼"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в региÑтре"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "Ñлишком похож на Ñтарый"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "Ñлишком проÑтой"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ÑвлÑетÑÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼ чередованиÑ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "Ñлишком мало Ñимволов различных типов"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "Ñодержит Ñлишком длинную поÑледовательноÑÑ‚ÑŒ одинаковых Ñимволов"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "Ñодержит Ñлишком много повторÑющихÑÑ Ñимволов"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "Ñодержит Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Пароль не указан."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Ð’Ñ€ÐµÐ¼Ñ Ð¸Ñтекает...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Пароль не изменен."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Извините, ваше Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñтекло!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ÐЕУДÐЧÐЫЙ ПÐРОЛЬ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ошибочный диалог (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "Сбой %s. Код выхода: %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "Сбой %s. Получен Ñигнал %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "Сбой %s. ÐеизвеÑтный ÑÑ‚Ð°Ñ‚ÑƒÑ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -307,15 +245,24 @@ msgstr ""
"ИÑпользование: %s: [--dir /путь/к/каталогу-tally] [--user имÑ_пользователÑ] "
"[--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
"Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована как ÑледÑтвие неудачных попыток входа (вÑего -- "
"%u)."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(оÑталаÑÑŒ %d минута до разблокировки)"
+msgstr[1] "(оÑталоÑÑŒ %d минуты до разблокировки)"
+msgstr[2] "(оÑталоÑÑŒ %d минут до разблокировки)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(оÑталоÑÑŒ %d мин. до разблокировки)"
@@ -368,7 +315,7 @@ msgstr[2] "ЧиÑло неудачных попыток Ñо времени по
msgid "There were %d failed login attempts since the last successful login."
msgstr "ЧиÑло неудачных попыток Ñо времени поÑледнего входа: %d."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Слишком много региÑтраций в ÑиÑтеме Ð´Ð»Ñ Â«%s»."
@@ -409,22 +356,22 @@ msgstr "ЕÑÑ‚ÑŒ ÑÑ‚Ð°Ñ€Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° в папке %s."
msgid "You have mail in folder %s."
msgstr "ЕÑÑ‚ÑŒ почта в папке %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Создание каталога %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ðе удалоÑÑŒ Ñоздать и инициализировать каталог %s."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Этот пароль уже был иÑпользован. Выберите другой."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Этот пароль уже иÑпользовалÑÑ."
@@ -459,12 +406,12 @@ msgstr "Ðеверный контекÑÑ‚ безопаÑноÑти."
msgid "A valid context for %s could not be obtained."
msgstr "Ðе удалоÑÑŒ получить корректный контекÑÑ‚ Ð´Ð»Ñ %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "КонтекÑÑ‚ безопаÑноÑти %s назначен."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "КонтекÑÑ‚ %s, иÑпользуемый при Ñоздании ключей, назначен."
@@ -484,68 +431,7 @@ msgstr "не удалоÑÑŒ выполнить pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "региÑтрациÑ: Ñбой при Ñоздании нового процеÑÑа: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ временно заблокирована (оÑталоÑÑŒ %ld Ñек.)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Ошибка при проверке подлинноÑти"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Ошибка Ñлужбы"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "ÐеизвеÑтный пользователь"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: указано неверное чиÑло Ð´Ð»Ñ --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: неопознанный параметр %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file имÑ_корневого_файла] [--user имÑ_пользователÑ] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: не удаетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑÐ±Ñ€Ð¾Ñ Ð²Ñех пользователей в ненулевое значение\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Сбои ПоÑледний Ñбой С\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f имÑ_корневого_файла] [--file имÑ_корневого_файла]\n"
-" [-u имÑ_пользователÑ] [--user имÑ_пользователÑ]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "ДоÑтуп предоÑтавлен (поÑледнее обращение было %ld Ñек. назад)."
@@ -567,7 +453,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Вам необходимо немедленно Ñменить пароль (пароль уÑтарел)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -576,7 +462,7 @@ msgstr[1] "Предупреждение: Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ
msgstr[2] "Предупреждение: Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸Ñтекает через %d дней."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Предупреждение: Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸Ñтекает через %d дн(Ñ)(ей)."
@@ -585,6 +471,14 @@ msgstr "Предупреждение: Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸Ñ
msgid "NIS password could not be changed."
msgstr "Пароль NIS изменить нельзÑ."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Пароль не указан."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Пароль не изменен."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Вы должны выбрать более короткий пароль."
@@ -601,3 +495,82 @@ msgstr "Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð»Ñ %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "До Ñмены Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ пройти больше времени."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "Ñовпадает Ñо Ñтарым"
+
+#~ msgid "memory allocation error"
+#~ msgstr "ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти"
+
+#~ msgid "is a palindrome"
+#~ msgstr "ÑвлÑетÑÑ Ð¿Ð°Ð»Ð¸Ð½Ð´Ñ€Ð¾Ð¼Ð¾Ð¼"
+
+#~ msgid "case changes only"
+#~ msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в региÑтре"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "Ñлишком похож на Ñтарый"
+
+#~ msgid "is too simple"
+#~ msgstr "Ñлишком проÑтой"
+
+#~ msgid "is rotated"
+#~ msgstr "ÑвлÑетÑÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð¾Ð¼ чередованиÑ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "Ñлишком мало Ñимволов различных типов"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "Ñодержит Ñлишком длинную поÑледовательноÑÑ‚ÑŒ одинаковых Ñимволов"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "Ñодержит Ñлишком много повторÑющихÑÑ Ñимволов"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "Ñодержит Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ÐЕУДÐЧÐЫЙ ПÐРОЛЬ: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ временно заблокирована (оÑталоÑÑŒ %ld Ñек.)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Ошибка при проверке подлинноÑти"
+
+#~ msgid "Service error"
+#~ msgstr "Ошибка Ñлужбы"
+
+#~ msgid "Unknown user"
+#~ msgstr "ÐеизвеÑтный пользователь"
+
+#~ msgid "Unknown error"
+#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: указано неверное чиÑло Ð´Ð»Ñ --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: неопознанный параметр %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file имÑ_корневого_файла] [--user имÑ_пользователÑ] [--reset[=n]] "
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: не удаетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑÐ±Ñ€Ð¾Ñ Ð²Ñех пользователей в ненулевое значение\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Сбои ПоÑледний Ñбой С\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f имÑ_корневого_файла] [--file имÑ_корневого_файла]\n"
+#~ " [-u имÑ_пользователÑ] [--user имÑ_пользователÑ]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/si.gmo b/po/si.gmo
index ecdad1b0..121f231d 100644
--- a/po/si.gmo
+++ b/po/si.gmo
Binary files differ
diff --git a/po/si.po b/po/si.po
index c3c1d64d..3bfb4679 100644
--- a/po/si.po
+++ b/po/si.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-06 23:59+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Sinhala <https://translate.fedoraproject.org/projects/linux-"
@@ -22,21 +22,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 3.11.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...කà·à¶½ සීමà·à·€ ඉක්මව෠ඇත...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...සමà·à·€à¶±à·Šà¶±, ොබගේ කà·à¶½à¶º ඉක්ම විය!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "à·€à·à¶»à¶¯à·’ සගත පරිවර්තනයක්(%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "රහස්පදය: "
@@ -218,99 +205,56 @@ msgstr "යෙදුමට පà·à¶»à¶«à·’ libpam ඇමතීමට අවà·à·
msgid "Unknown PAM error"
msgstr "නොදන්න෠PAM දà·à·‚ය"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "එය පà·à¶»à¶«à·’ රහස්පදය හ෠සමà·à¶± වේ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "එය පà·à¶½à·’න්ඩ්â€à¶»à·œà¶¸à¶ºà¶šà·’"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "කà·à¶´à·’ටල් සිම්පල් වෙනස්කම් පමණි"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "එය පà·à¶»à¶«à·’ රහස්පදය බොගොදුරට සමà·à¶± වේ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "එය සරළ à·€à·à¶©à·’ වේ"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "භ්â€à¶»à¶¸à¶«à¶º වි ඇත"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "රහස්පදය සපය෠නà·à¶­"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...කà·à¶½ සීමà·à·€ ඉක්මව෠ඇත...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS රහස්පදය වෙනස් කළ නොහà·à¶š."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...සමà·à·€à¶±à·Šà¶±, ොබගේ කà·à¶½à¶º ඉක්ම විය!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "à·€à·à¶»à¶¯à·’ සගත පරිවර්තනයක්(%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s අසමත් විය: ඉවතිවීමෙ කේතය %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s අසමත් විය: සංඥà·à·€ අල්ල෠ගන්න෠ලදි%d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s අසමත් විය: නොදන්න෠තත්වය 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -362,7 +306,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' සඳහ෠බොහ෠පිවිසුම් ගණනක් ඇත."
@@ -404,22 +348,22 @@ msgstr "%s බහලුම තුළ ඔබට පරණ තà·à¶´à·à¶½à·Š ඇà
msgid "You have mail in folder %s."
msgstr "%s බහලුම තුළ ඔබට තà·à¶´à·à¶½à·Š ඇත."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "රහස්පදය දà·à¶±à¶§à¶¸à¶­à·Š භà·à·€à·’ත෠වේ. වෙනත් එකක් තà·à¶»à·à¶œà¶±à·Šà¶±."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "රහස්පදය දà·à¶±à¶§à¶¸à¶­à·Š භà·à·€à·’ත෠වේ. වෙනත් එකක් තà·à¶»à·à¶œà¶±à·Šà¶±."
@@ -456,12 +400,12 @@ msgstr "නිරවද්â€à¶º ආරක්â€à·‚ක ප්â€à¶»à¶šà¶»à¶«à¶ºà
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "%s ආරක්â€à·‚ක ප්â€à¶»à¶šà¶»à¶«à¶º යොදව෠ඇත"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "%s ආරක්â€à·‚ක ප්â€à¶»à¶šà¶»à¶«à¶º යොදව෠ඇත"
@@ -481,63 +425,7 @@ msgstr "pam_set_item() අසමත් විය\n"
msgid "login: failure forking: %m"
msgstr "පිවිසුම: ෆොර්කින් බිදවà·à¶§à·“මක්: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "තහවුරු කරගà·à¶±à·“මේ දà·à·‚ය"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "සේව෠දà·à·‚ය"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "නොදන්න෠පරිà·à·“ලකයෙක්"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "නොදන්න෠දà·à·‚යක්"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: à·ƒà·à·€à¶¯à·Šâ€à¶º අංකයක් ලබ෠දී ඇත --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: %s හදුන෠නොගත් විකල්පයකි\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: à·à·”න්â€à¶º නොවන අගයට සියළුම පරිà·à·“ලකයින් නà·à·€à¶­ à·ƒà·à¶šà·ƒà·’ය නොහà·à¶š\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -560,7 +448,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "ඔබගේ රහස්පදය à·„à·à¶šà·’ ඉක්මනින් වෙනස් කළ යුතුව ඇත (රහස්පදය පà·à¶»à¶«à·’යි)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -568,7 +456,7 @@ msgstr[0] "අවවà·à¶¯à¶ºà·’: ඔබගේ රහස්පදය දින %
msgstr[1] "අවවà·à¶¯à¶ºà·’: ඔබගේ රහස්පදය දින %d කින් කල්ඉකුත් වේ"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "අවවà·à¶¯à¶ºà·’: ඔබගේ රහස්පදය දින %d කින් කල්ඉකුත් වේ"
@@ -577,6 +465,16 @@ msgstr "අවවà·à¶¯à¶ºà·’: ඔබගේ රහස්පදය දින %d à
msgid "NIS password could not be changed."
msgstr "NIS රහස්පදය වෙනස් කළ නොහà·à¶š."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "රහස්පදය සපය෠නà·à¶­"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS රහස්පදය වෙනස් කළ නොහà·à¶š."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "ඔබ කෙටි මුරපදයක් තà·à¶»à· ගත යුතුය."
@@ -595,3 +493,50 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "ඔබගේ රහස්පදය වෙනස් කිරීමට බොහ෠වෙලà·à·€à¶šà·Š රà·à¶¯à·“ සිටීය යුතුම වේ"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "එය පà·à¶»à¶«à·’ රහස්පදය හ෠සමà·à¶± වේ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "එය පà·à¶½à·’න්ඩ්â€à¶»à·œà¶¸à¶ºà¶šà·’"
+
+#~ msgid "case changes only"
+#~ msgstr "කà·à¶´à·’ටල් සිම්පල් වෙනස්කම් පමණි"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "එය පà·à¶»à¶«à·’ රහස්පදය බොගොදුරට සමà·à¶± වේ"
+
+#~ msgid "is too simple"
+#~ msgstr "එය සරළ à·€à·à¶©à·’ වේ"
+
+#~ msgid "is rotated"
+#~ msgstr "භ්â€à¶»à¶¸à¶«à¶º වි ඇත"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "BAD PASSWORD: %s"
+
+#~ msgid "Authentication error"
+#~ msgstr "තහවුරු කරගà·à¶±à·“මේ දà·à·‚ය"
+
+#~ msgid "Service error"
+#~ msgstr "සේව෠දà·à·‚ය"
+
+#~ msgid "Unknown user"
+#~ msgstr "නොදන්න෠පරිà·à·“ලකයෙක්"
+
+#~ msgid "Unknown error"
+#~ msgstr "නොදන්න෠දà·à·‚යක්"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: à·ƒà·à·€à¶¯à·Šâ€à¶º අංකයක් ලබ෠දී ඇත --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: %s හදුන෠නොගත් විකල්පයකි\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: à·à·”න්â€à¶º නොවන අගයට සියළුම පරිà·à·“ලකයින් නà·à·€à¶­ à·ƒà·à¶šà·ƒà·’ය නොහà·à¶š\n"
diff --git a/po/sk.gmo b/po/sk.gmo
index f406d9e7..f027bfba 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 1ef32b4f..38a3e05f 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -14,8 +14,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-20 10:38+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2020-07-05 23:52+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Slovak <https://translate.fedoraproject.org/projects/linux-"
"pam/master/sk/>\n"
@@ -24,23 +24,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 3.11.3\n"
+"X-Generator: Weblate 4.1.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...OdpoÄet bol spustený...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...PrepáÄte, váš Äas vyprÅ¡al!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "chybná konverzácia (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Heslo: "
@@ -220,101 +207,61 @@ msgstr "Aplikácia musí znovu zavolať libpam"
msgid "Unknown PAM error"
msgstr "Neznáme chyba PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "je rovnaké ako predchádzajúce"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "chyba pridelenia pamäte"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "je palindróm"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "len zmena veľkosti"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "je príliš podobné predchádzajúcemu"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "je príliš jednoduché"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "je otoÄené"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "nedostatok rôznych druhov znakov"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "obsahuje príliš veľa rovnakých znakov za sebou"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "obsahuje príliš jednotvárnu postupnosť znakov"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "obsahuje v nejakej forme používateľské meno"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Heslo nezadané."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...OdpoÄet bol spustený...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Heslo nebolo zmenené."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...PrepáÄte, váš Äas vyprÅ¡al!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "NESPRÃVNE HESLO: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "chybná konverzácia (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s zlyhalo: výstupný kód %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s zlyhalo: dostal signál %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s zlyhalo: neznámy stav 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-"%s: [--file meno_suboru] [--user pouzivatelske_meno] [--reset[=n]] [--"
-"quiet]\n"
+"Použitie: %s [--dir /cesta/k/zhodujú-directory] [--user pouzivatelske_meno] "
+"[--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "ÚÄet uzamknutý z dôvodu %u neúspeÅ¡ných prihlásení."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(odomknutie zostáva %d minút)"
+msgstr[1] "(odomknutie zostáva %d minút)"
+msgstr[2] "(odomknutie zostáva %d minút)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(odomknutie zostáva %d minút)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -372,7 +319,7 @@ msgstr ""
"Od posledného úspešného prihlásenia došlo k %d neúspešným pokusom o "
"prihlásenie."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Príliš veľa prihlásení pre '%s'."
@@ -413,22 +360,22 @@ msgstr "Máte starú poÅ¡tu v prieÄinku %s."
msgid "You have mail in folder %s."
msgstr "Máte poÅ¡tu v prieÄinku %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Vytváranie prieÄinka '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Nedá sa vytvoriÅ¥ a inicializovaÅ¥ prieÄinok '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Heslo už bolo použité. Zvoľte si iné."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Heslo už bolo použité."
@@ -463,12 +410,12 @@ msgstr "Neplatný kontext zabezpeÄenia."
msgid "A valid context for %s could not be obtained."
msgstr "Nie je možné získať platný kontext pre %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Kontext zabezpeÄenia %s pridelený."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Kontext zabezpeÄenia pre vytváranie kľúÄov %s pridelený."
@@ -488,67 +435,7 @@ msgstr "chyba pri pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "login: chyba forku: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ÚÄet doÄasne uzamknutý (zostáva %ld sekúnd)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Chyba overenia"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Chyba služby"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Neznámy používateľ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Neznáma chyba"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Zadané zlé Äíslo pre --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Neznáma voľba %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file meno_suboru] [--user pouzivatelske_meno] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Nedá sa resetovať všetkých používateľov nenulovo\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Zlyhaní Ostatné zlyhanie Z\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f meno_suboru] [--file meno_suboru]\n"
-" [-u pouzivatelske_meno] [--user pouzivatelske_meno]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Prístup povolený (posledný prístup pred %ld sekundami)."
@@ -569,7 +456,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Je vyžadovaná okamžitá zmena vašeho hesla (heslo vypršalo)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -578,7 +465,7 @@ msgstr[1] "Upozornenie: vaše heslo vyprší za %d dni."
msgstr[2] "Upozornenie: vaše heslo vyprší za %d dní."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Upozornenie: vaše heslo vyprší za %d dní."
@@ -587,6 +474,14 @@ msgstr "Upozornenie: vaše heslo vyprší za %d dní."
msgid "NIS password could not be changed."
msgstr "Nie je možné zmeniť NIS heslo."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Heslo nezadané."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Heslo nebolo zmenené."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Musíte zvoliť kratšie heslo."
@@ -603,3 +498,81 @@ msgstr "Zmena hesla pre %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Na zmenu svojho hesla musíte poÄkaÅ¥ dlhÅ¡ie."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "je rovnaké ako predchádzajúce"
+
+#~ msgid "memory allocation error"
+#~ msgstr "chyba pridelenia pamäte"
+
+#~ msgid "is a palindrome"
+#~ msgstr "je palindróm"
+
+#~ msgid "case changes only"
+#~ msgstr "len zmena veľkosti"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "je príliš podobné predchádzajúcemu"
+
+#~ msgid "is too simple"
+#~ msgstr "je príliš jednoduché"
+
+#~ msgid "is rotated"
+#~ msgstr "je otoÄené"
+
+#~ msgid "not enough character classes"
+#~ msgstr "nedostatok rôznych druhov znakov"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "obsahuje príliš veľa rovnakých znakov za sebou"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "obsahuje príliš jednotvárnu postupnosť znakov"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "obsahuje v nejakej forme používateľské meno"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "NESPRÃVNE HESLO: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ÚÄet doÄasne uzamknutý (zostáva %ld sekúnd)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Chyba overenia"
+
+#~ msgid "Service error"
+#~ msgstr "Chyba služby"
+
+#~ msgid "Unknown user"
+#~ msgstr "Neznámy používateľ"
+
+#~ msgid "Unknown error"
+#~ msgstr "Neznáma chyba"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Zadané zlé Äíslo pre --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Neznáma voľba %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file meno_suboru] [--user pouzivatelske_meno] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Nedá sa resetovať všetkých používateľov nenulovo\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Zlyhaní Ostatné zlyhanie Z\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f meno_suboru] [--file meno_suboru]\n"
+#~ " [-u pouzivatelske_meno] [--user pouzivatelske_meno]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/sl.po b/po/sl.po
index 4c91e7ae..e472a4b9 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovenian (http://www.transifex.com/projects/p/fedora/"
@@ -21,21 +21,8 @@ msgstr ""
"%100==4 ? 2 : 3);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -215,96 +202,57 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -358,7 +306,7 @@ msgstr[3] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -399,22 +347,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -449,12 +397,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -474,62 +422,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -549,7 +442,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -559,7 +452,7 @@ msgstr[2] ""
msgstr[3] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -568,6 +461,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/sq.po b/po/sq.po
index 5ce8c4e1..b4756d26 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/sr.gmo b/po/sr.gmo
index ad13c91c..3ee7a027 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 8e6374ba..1e97611a 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2014-11-16 06:51-0500\n"
"Last-Translator: Momcilo Medic <medicmomcilo@gmail.com>\n"
"Language-Team: Serbian (http://www.transifex.com/projects/p/linux-pam/"
@@ -26,21 +26,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...ИÑтиче време...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Извините, време вам је иÑтекло!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "разговор пун грешака (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Лозинка: "
@@ -222,86 +209,35 @@ msgstr "Програм мора поново да позове libpam"
msgid "Unknown PAM error"
msgstr "Ðепозната PAM грешка"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "иÑта је као и Ñтара"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "грешка у резервиÑању меморије"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "палиндром је"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "Ñамо промене величине Ñлова"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "Ñувише је Ñлична претходној"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "Ñувише је једноÑтавна"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "изокренута је"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "нема довољно клаÑа знакова"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "Ñадржи превише иÑтих знакова узаÑтопно"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "Ñадржи предугачак низ монотоних карактера"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "Ñадржи кориÑничко име у неком облику"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Ðије понуђена лозинка"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...ИÑтиче време...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS лозинка не може бити промењена."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Извините, време вам је иÑтекло!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ЛОШРЛОЗИÐКÐ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "разговор пун грешака (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s неуÑпех: излазни код %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s неуÑпех: ухваћен Ñигнал %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s неуÑпех: непознат ÑÑ‚Ð°Ñ‚ÑƒÑ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -309,13 +245,22 @@ msgstr ""
"%s: [--file коренÑки-називдатотеке] [--user кориÑничкоиме] [--reset[=n]] [--"
"quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Ðалог је закључан због %u неуÑпелих пријава"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -368,7 +313,7 @@ msgstr[2] "Било је %d неуÑпелих покушаја пријаве Ð
msgid "There were %d failed login attempts since the last successful login."
msgstr "Било је %d неуÑпелих покушаја пријаве од поÑледње уÑпешне пријаве."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Превише пријава за „%s“."
@@ -410,22 +355,22 @@ msgstr "Имате Ñтару пошту у фаÑцикли %s."
msgid "You have mail in folder %s."
msgstr "Имате пошту у фаÑцикли %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Правим директоријум „%s“."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ðе могу да направим директоријум „%s“."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Лозинка је већ у употреби. Изаберите другу."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Шифра је већ била у употреби."
@@ -461,12 +406,12 @@ msgstr "ÐеиÑправан безбедноÑни контекÑÑ‚"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "БезбедноÑни контекÑÑ‚ %s је додељен"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "КонтекÑÑ‚ прављења кључа %s је додељен"
@@ -486,67 +431,7 @@ msgstr "неуÑпешно извршавање функције pam_set_item()\
msgid "login: failure forking: %m"
msgstr "пријава: грешка при гранању: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Ðалог је привремено закључан (оÑтало је %ld Ñекунди)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Грешка при аутентификацији"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Грешка уÑлуге"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ðепознат кориÑник"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ðепозната грешка"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: задат је лош број за --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: није препозната опција %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file коренÑки-називдатотеке] [--user кориÑничкоиме] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: не могу да повратим Ñве кориÑнике на број различит од нуле\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Пријава ÐеуÑпеÑи ПоÑледњи неуÑпех Са\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [- коренÑки-називдатотеке] [--file коренÑки-називдатотеке]\n"
-" [-u кориÑничкоиме] [--user кориÑничкоиме]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "ПриÑтуп је одобрен (поÑледњи приÑтуп је био пре %ld Ñекунди)."
@@ -569,7 +454,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Морате одмах да промените вашу лозинку (заÑтарела је)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -578,7 +463,7 @@ msgstr[1] "Упозорење: ваша лозинка ће иÑтећи кроÐ
msgstr[2] "Упозорење: ваша лозинка ће иÑтећи кроз %d дана"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Упозорење: ваша лозинка ће иÑтећи кроз %d дана"
@@ -587,6 +472,16 @@ msgstr "Упозорење: ваша лозинка ће иÑтећи кроз %
msgid "NIS password could not be changed."
msgstr "NIS лозинка не може бити промењена."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Ðије понуђена лозинка"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS лозинка не може бити промењена."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Морате одабрати краћу лозинку."
@@ -605,3 +500,82 @@ msgstr "Мењам лозинку за %s."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Морате дуже Ñачекати на промену лозинке"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "иÑта је као и Ñтара"
+
+#~ msgid "memory allocation error"
+#~ msgstr "грешка у резервиÑању меморије"
+
+#~ msgid "is a palindrome"
+#~ msgstr "палиндром је"
+
+#~ msgid "case changes only"
+#~ msgstr "Ñамо промене величине Ñлова"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "Ñувише је Ñлична претходној"
+
+#~ msgid "is too simple"
+#~ msgstr "Ñувише је једноÑтавна"
+
+#~ msgid "is rotated"
+#~ msgstr "изокренута је"
+
+#~ msgid "not enough character classes"
+#~ msgstr "нема довољно клаÑа знакова"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "Ñадржи превише иÑтих знакова узаÑтопно"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "Ñадржи предугачак низ монотоних карактера"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "Ñадржи кориÑничко име у неком облику"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ЛОШРЛОЗИÐКÐ: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Ðалог је привремено закључан (оÑтало је %ld Ñекунди)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Грешка при аутентификацији"
+
+#~ msgid "Service error"
+#~ msgstr "Грешка уÑлуге"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ðепознат кориÑник"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ðепозната грешка"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: задат је лош број за --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: није препозната опција %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file коренÑки-називдатотеке] [--user кориÑничкоиме] [--reset[=n]] "
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: не могу да повратим Ñве кориÑнике на број различит од нуле\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Пријава ÐеуÑпеÑи ПоÑледњи неуÑпех Са\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [- коренÑки-називдатотеке] [--file коренÑки-називдатотеке]\n"
+#~ " [-u кориÑничкоиме] [--user кориÑничкоиме]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/sr@latin.gmo b/po/sr@latin.gmo
index ce08261d..1a05b4d3 100644
--- a/po/sr@latin.gmo
+++ b/po/sr@latin.gmo
Binary files differ
diff --git a/po/sr@latin.po b/po/sr@latin.po
index ec426db1..e68f4260 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:59-0500\n"
"Last-Translator: Tomáš Mráz <tmraz@fedoraproject.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,21 +24,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...IstiÄe vreme...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Izvinite, vreme vam je isteklo!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "razgovor pun grešaka (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Lozinka: "
@@ -220,87 +207,35 @@ msgstr "Program mora ponovo da pozove libpam"
msgid "Unknown PAM error"
msgstr "Nepoznata PAM greška"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ista je kao i stara"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "palindrom je"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "samo promene veliÄine slova"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "suviÅ¡e je sliÄna prethodnoj"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "suviše je jednostavna"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "izokrenuta je"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "nema dovoljno klasa znakova"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "sadrži previše istih znakova uzastopno"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-#, fuzzy
-msgid "contains too long of a monotonic character sequence"
-msgstr "sadrži previše istih znakova uzastopno"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "sadrži korisniÄko ime u nekom obliku"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Nije ponuđena lozinka"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...IstiÄe vreme...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS lozinka ne može biti promenjena."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Izvinite, vreme vam je isteklo!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "LOÅ A LOZINKA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "razgovor pun grešaka (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s neuspeh: izlazni kod %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s neuspeh: uhvaćen signal %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s neuspeh: nepoznat status 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -308,13 +243,22 @@ msgstr ""
"%s: [--file korenski-nazivdatoteke] [--user korisniÄkoime] [--reset[=n]] [--"
"quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Nalog je zakljuÄan zbog %u neuspelih prijava"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -367,7 +311,7 @@ msgstr[2] "Bilo je %d neuspelih pokušaja prijave od poslednje uspešne prijave.
msgid "There were %d failed login attempts since the last successful login."
msgstr "Bilo je %d neuspelih pokušaja prijave od poslednje uspešne prijave."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Previše prijava za „%s“."
@@ -409,22 +353,22 @@ msgstr "Imate staru poštu u fascikli %s."
msgid "You have mail in folder %s."
msgstr "Imate poštu u fascikli %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Pravim direktorijum „%s“."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ne mogu da napravim direktorijum „%s“."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Lozinka je već u upotrebi. Izaberite drugu."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "Lozinka je već u upotrebi. Izaberite drugu."
@@ -461,12 +405,12 @@ msgstr "Neispravan bezbednosni kontekst"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Bezbednosni kontekst %s je dodeljen"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Kontekst pravljenja kljuÄa %s je dodeljen"
@@ -486,67 +430,7 @@ msgstr "neuspešno izvršavanje funkcije pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "prijava: greška pri grananju: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Nalog je privremeno zakljuÄan (ostalo je %ld sekundi)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Greška pri autentifikaciji"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Greška usluge"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Nepoznat korisnik"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Nepoznata greška"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: zadat je loš broj za --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: nije prepoznata opcija %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file korenski-nazivdatoteke] [--user korisniÄkoime] [--reset[=n]] [--"
-"quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: ne mogu da povratim sve korisnike na broj razliÄit od nule\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Prijava Neuspesi Poslednji neuspeh Sa\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [- korenski-nazivdatoteke] [--file korenski-nazivdatoteke]\n"
-" [-u korisniÄkoime] [--user korisniÄkoime]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Pristup je odobren (poslednji pristup je bio pre %ld sekundi)."
@@ -569,7 +453,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Morate odmah da promenite vašu lozinku (zastarela je)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -578,7 +462,7 @@ msgstr[1] "Upozorenje: vaša lozinka će isteći kroz %d dana"
msgstr[2] "Upozorenje: vaša lozinka će isteći kroz %d dana"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Upozorenje: vaša lozinka će isteći kroz %d dana"
@@ -587,6 +471,16 @@ msgstr "Upozorenje: vaša lozinka će isteći kroz %d dana"
msgid "NIS password could not be changed."
msgstr "NIS lozinka ne može biti promenjena."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Nije ponuđena lozinka"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS lozinka ne može biti promenjena."
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
@@ -606,3 +500,80 @@ msgstr "Menjam lozinku za %s."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Morate duže saÄekati na promenu lozinke"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ista je kao i stara"
+
+#~ msgid "is a palindrome"
+#~ msgstr "palindrom je"
+
+#~ msgid "case changes only"
+#~ msgstr "samo promene veliÄine slova"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "suviÅ¡e je sliÄna prethodnoj"
+
+#~ msgid "is too simple"
+#~ msgstr "suviše je jednostavna"
+
+#~ msgid "is rotated"
+#~ msgstr "izokrenuta je"
+
+#~ msgid "not enough character classes"
+#~ msgstr "nema dovoljno klasa znakova"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "sadrži previše istih znakova uzastopno"
+
+#, fuzzy
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "sadrži previše istih znakova uzastopno"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "sadrži korisniÄko ime u nekom obliku"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "LOÅ A LOZINKA: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Nalog je privremeno zakljuÄan (ostalo je %ld sekundi)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Greška pri autentifikaciji"
+
+#~ msgid "Service error"
+#~ msgstr "Greška usluge"
+
+#~ msgid "Unknown user"
+#~ msgstr "Nepoznat korisnik"
+
+#~ msgid "Unknown error"
+#~ msgstr "Nepoznata greška"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: zadat je loš broj za --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: nije prepoznata opcija %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file korenski-nazivdatoteke] [--user korisniÄkoime] [--reset[=n]] "
+#~ "[--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: ne mogu da povratim sve korisnike na broj razliÄit od nule\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Prijava Neuspesi Poslednji neuspeh Sa\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [- korenski-nazivdatoteke] [--file korenski-nazivdatoteke]\n"
+#~ " [-u korisniÄkoime] [--user korisniÄkoime]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 47f6a7f1..a113ec7c 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 50c9fde1..35a52cee 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,13 +8,14 @@
# Göran Uddeborg <goeran@uddeborg.se>, 2012-2013
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Andreas Henriksson <andreas+fedora@fatal.se>, 2020.
+# Dmitry V. Levin <ldv@altlinux.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-21 16:51+0000\n"
-"Last-Translator: Andreas Henriksson <andreas+fedora@fatal.se>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:54+0000\n"
+"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/sv/>\n"
"Language: sv\n"
@@ -22,23 +23,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.0.4\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Tiden håller på att ta slut...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Tyvärr, din tid är ute!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "felaktig konversation (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Lösenord: "
@@ -218,84 +206,35 @@ msgstr "Programmet behöver anropa libpam igen"
msgid "Unknown PAM error"
msgstr "Okänt PAM-fel"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "är samma som det gamla"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "minnesallokeringsfel"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "är ett palindrom"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "endast ändringar i gemener och versaler"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "är för likt det gamla"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "är för enkelt"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "är roterat"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "för få teckenklasser"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "innehåller för många tecken av samma sort i följd"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "innehåller en för lång monoton teckensekvens"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "innehåller användarnamnet i någon form"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Inget lösenord angavs."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Tiden håller på att ta slut...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Lösenordet har inte ändrats."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Tyvärr, din tid är ute!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "DÅLIGT LÖSENORD: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "felaktig konversation (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s misslyckades: slutstatus %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s misslyckades: fångade signalen %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s misslyckades: okänd status 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -303,13 +242,21 @@ msgstr ""
"Användning: %s [--dir /sökväg/till/tally-katalog] [--user användarnamn] [--"
"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Kontot är låst på grund av %u misslyckade inloggningar."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d minut kvar till upplåsning)"
+msgstr[1] "(%d minuter kvar till upplåsning)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d minuter kvar till upplåsning)"
@@ -367,7 +314,7 @@ msgstr ""
"Det har skett %d misslyckade inloggningsförsök sedan senaste korrekta "
"inloggning."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "För många inloggningar för '%s'."
@@ -408,22 +355,22 @@ msgstr "Du har gamla brev i katalogen %s."
msgid "You have mail in folder %s."
msgstr "Du har brev i katalogen %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Skapar katalogen '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Kunde inte skapa och initiera katalogen '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Lösenordet har redan används. Välj ett annat."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Lösenordet har redan använts."
@@ -458,12 +405,12 @@ msgstr "Inte en giltig säkerhetskontext."
msgid "A valid context for %s could not be obtained."
msgstr "En giltig kontext för %s kunde inte erhållas."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Säkerhetskontext %s tilldelad."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Nyckelskapandekontext %s tilldelad."
@@ -483,66 +430,7 @@ msgstr "pam_set_item() misslyckades\n"
msgid "login: failure forking: %m"
msgstr "inloggning: fel vid grening: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Kontot är temporärt låst (%ld sekunder kvar)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Autentiseringsfel"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Tjänstefel"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Okänd användare"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Okänt fel"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Felaktigt nummer till --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Okänd flagga %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file absolut-filnamn] [--user användarnamn] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Kan inte ställa om alla användare till nollskilt värde\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Inloggning Misslyck Senaste fel Från\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f absolut-filnamn] [--file absolut-filnamn]\n"
-" [-u användarnamn] [--user användarnamn]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Åtkomst godkänd (senaste åtkomst var %ld sekunder sedan)."
@@ -562,7 +450,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Du måste ändra ditt lösenord omedelbart (lösenord för gammalt)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -570,7 +458,7 @@ msgstr[0] "Varning: ditt lösenord går ut om %d dag."
msgstr[1] "Varning: ditt lösenord går ut om %d dagar."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Varning: ditt lösenord går ut om %d dagar."
@@ -579,6 +467,14 @@ msgstr "Varning: ditt lösenord går ut om %d dagar."
msgid "NIS password could not be changed."
msgstr "NIS-lösenord kunde inte ändras."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Inget lösenord angavs."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Lösenordet har inte ändrats."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Du måste välja ett kortare lösenord."
@@ -595,3 +491,81 @@ msgstr "Ändrar lösenord för %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Du måste vänta längre innan du kan ändra lösenord."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "är samma som det gamla"
+
+#~ msgid "memory allocation error"
+#~ msgstr "minnesallokeringsfel"
+
+#~ msgid "is a palindrome"
+#~ msgstr "är ett palindrom"
+
+#~ msgid "case changes only"
+#~ msgstr "endast ändringar i gemener och versaler"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "är för likt det gamla"
+
+#~ msgid "is too simple"
+#~ msgstr "är för enkelt"
+
+#~ msgid "is rotated"
+#~ msgstr "är roterat"
+
+#~ msgid "not enough character classes"
+#~ msgstr "för få teckenklasser"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "innehåller för många tecken av samma sort i följd"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "innehåller en för lång monoton teckensekvens"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "innehåller användarnamnet i någon form"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "DÅLIGT LÖSENORD: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Kontot är temporärt låst (%ld sekunder kvar)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Autentiseringsfel"
+
+#~ msgid "Service error"
+#~ msgstr "Tjänstefel"
+
+#~ msgid "Unknown user"
+#~ msgstr "Okänd användare"
+
+#~ msgid "Unknown error"
+#~ msgstr "Okänt fel"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Felaktigt nummer till --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Okänd flagga %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file absolut-filnamn] [--user användarnamn] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Kan inte ställa om alla användare till nollskilt värde\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Inloggning Misslyck Senaste fel Från\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f absolut-filnamn] [--file absolut-filnamn]\n"
+#~ " [-u användarnamn] [--user användarnamn]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ta.gmo b/po/ta.gmo
index dafbe71b..163bd992 100644
--- a/po/ta.gmo
+++ b/po/ta.gmo
Binary files differ
diff --git a/po/ta.po b/po/ta.po
index 519a42da..04ae62ed 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-06 23:59+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Tamil <https://translate.fedoraproject.org/projects/linux-pam/"
@@ -25,21 +25,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.11.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "... நேரம௠போய௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à®¿à®±à®¤à¯...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "... உஙà¯à®•à®³à¯ நேரம௠மà¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "பிழையான உரையாடல௠(%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯:"
@@ -221,99 +208,56 @@ msgstr "பயனà¯à®ªà®¾à®Ÿà¯ libpam ஠மீணà¯à®Ÿà¯à®®à¯ அழைà®
msgid "Unknown PAM error"
msgstr "தெரியாத PAM பிழை"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "இத௠பழையதைப௠போல உளà¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "நினைவக ஒதà¯à®•à¯à®•à¯€à®Ÿà¯à®Ÿà®¿à®²à¯ பிழை"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "இத௠ஒர௠palindrome"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "எழà¯à®¤à¯à®¤à¯ வகை மாறà¯à®±à®™à¯à®•à®³à¯ மடà¯à®Ÿà¯à®®à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "இத௠பழையதை ஒதà¯à®¤à¯‡ உளà¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "இத௠மிகவà¯à®®à¯ எளிதாக உளà¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "இத௠சà¯à®´à®²à®•à¯à®•à¯‚டியதà¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "போதிய எழà¯à®¤à¯à®¤à¯ வகà¯à®ªà¯à®ªà¯à®•à®³à¯ இலà¯à®²à¯ˆ"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "நிறைய அதே எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯ தொடரà¯à®¨à¯à®¤à¯ கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "நீளமான ஒர௠மோனோடோனிக௠எழà¯à®¤à¯à®¤à¯à®¤à¯ தொடரைக௠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "சில வடிவல௠பயனர௠பெயரை கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "... நேரம௠போய௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à®¿à®±à®¤à¯...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "... உஙà¯à®•à®³à¯ நேரம௠மà¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "தவறான கடவà¯à®šà¯à®šà¯Šà®²à¯: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "பிழையான உரையாடல௠(%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s செயலிழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: வெளியேறà¯à®®à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s செயலிழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: சிகà¯à®©à®²à¯ %d%s பிடிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s செயலிழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: தெரியாத நிலை 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u தோலà¯à®µà®¿ பà¯à®•à¯à®ªà®¤à®¿à®µà¯à®•à®³à®¾à®²à¯ கணகà¯à®•à¯ பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -365,7 +309,7 @@ msgstr[1] "கடைசி பà¯à®•à¯à®ªà®¤à®¿à®µà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ %
msgid "There were %d failed login attempts since the last successful login."
msgstr "கடைசி பà¯à®•à¯à®ªà®¤à®¿à®µà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ %d பà¯à®•à¯à®ªà®¤à®¿à®µà¯ à®®à¯à®¯à®±à¯à®šà®¿ தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¨à¯à®¤à®©."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s'கà¯à®•à¯ பல பà¯à®•à¯à®ªà®¤à®¿à®µà¯à®•à®³à¯ உளà¯à®³à®©."
@@ -407,22 +351,22 @@ msgstr "உஙà¯à®•à®³à¯à®•à¯à®•à¯ %s அடைவில௠பழைய à®…
msgid "You have mail in folder %s."
msgstr "உஙà¯à®•à®³à¯à®•à¯à®•à¯ %s அடைவில௠அஞà¯à®šà®²à¯ உளà¯à®³à®¤à¯."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "அடைவ௠'%s'஠உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "அடைவ௠'%s'஠உரà¯à®µà®¾à®•à¯à®• மறà¯à®±à¯à®®à¯ தà¯à®µà®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ à®à®±à¯à®•à®©à®µà¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. வேறொனà¯à®±à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ à®à®±à¯à®•à®©à®µà¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯."
@@ -458,12 +402,12 @@ msgstr "இத௠சரியான பாதà¯à®•à®¾à®ªà¯à®ªà¯ சூழல
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "பாதà¯à®•à®¾à®ªà¯à®ªà¯ சூழல௠%s ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "விசை உரà¯à®µà®¾à®•à¯à®• சூழல௠%s ஒதà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
@@ -483,66 +427,7 @@ msgstr "pam_set_item() செயலிழகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯\n"
msgid "login: failure forking: %m"
msgstr "login: failure forking: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "கணகà¯à®•à¯ தறà¯à®•à®¾à®²à®¿à®•à®®à®¾à®• பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ (%ld விநாடிகள௠உளà¯à®³à®©)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "உரிம பிழை"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "சேவை பிழை"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "தெரியாத பயனரà¯"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "தெரியாத பிழை"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: தவறான எண௠--reset= கà¯à®•à¯ கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: à®…à®™à¯à®•à¯€à®•à®°à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®¾à®¤ விரà¯à®ªà¯à®ªà®®à¯ %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: பூஜà¯à®œà®¿à®¯à®®à®¿à®²à¯à®²à®¾à®¤à®¤à®±à¯à®•à¯ அனைதà¯à®¤à¯ பயனரà¯à®•à®³à¯ˆà®¯à¯à®®à¯ மற௠அமைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "பà¯à®•à¯à®ªà®¤à®¿à®µà¯ கடைசி தோலà¯à®µà®¿ தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¨à¯à®¤à®¤à¯ இஙà¯à®•à®¿à®°à¯à®¨à¯à®¤à¯\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "அணà¯à®•à®²à¯ வழஙà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (கடைசி அணà¯à®•à®²à¯ %ld விநாடிகளà¯à®•à¯à®•à¯ à®®à¯à®©à¯)."
@@ -565,7 +450,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "நீஙà¯à®•à®³à¯ உஙà¯à®•à®³à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ உடனடியாக மாறà¯à®± வேணà¯à®Ÿà¯à®®à¯ (கடவà¯à®šà¯à®šà¯Šà®²à¯ மூபà¯à®ªà®¾à®•à®¿à®µà®¿à®Ÿà¯à®Ÿà®¤à¯)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -573,7 +458,7 @@ msgstr[0] "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கடவà¯à®šà¯à®šà¯Šà®²à¯ %d ந
msgstr[1] "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கடவà¯à®šà¯à®šà¯Šà®²à¯ %d நாடà¯à®•à®³à®¿à®²à¯ à®®à¯à®Ÿà®¿à®µà¯à®±à¯à®®à¯"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கடவà¯à®šà¯à®šà¯Šà®²à¯ %d நாடà¯à®•à®³à®¿à®²à¯ à®®à¯à®Ÿà®¿à®µà¯à®±à¯à®®à¯"
@@ -582,6 +467,16 @@ msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: கடவà¯à®šà¯à®šà¯Šà®²à¯ %d நா
msgid "NIS password could not be changed."
msgstr "NIS கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "கடவà¯à®šà¯à®šà¯Šà®²à¯ கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "கà¯à®±à¯à®•à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ நீஙà¯à®•à®³à¯ தேரà¯à®µà¯ செயà¯à®¯ வேணà¯à®Ÿà¯à®®à¯."
@@ -600,3 +495,81 @@ msgstr "%sகà¯à®•à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à¯à®
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "உஙà¯à®•à®³à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®± சிறித௠காதà¯à®¤à®¿à®°à¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "இத௠பழையதைப௠போல உளà¯à®³à®¤à¯"
+
+#~ msgid "memory allocation error"
+#~ msgstr "நினைவக ஒதà¯à®•à¯à®•à¯€à®Ÿà¯à®Ÿà®¿à®²à¯ பிழை"
+
+#~ msgid "is a palindrome"
+#~ msgstr "இத௠ஒர௠palindrome"
+
+#~ msgid "case changes only"
+#~ msgstr "எழà¯à®¤à¯à®¤à¯ வகை மாறà¯à®±à®™à¯à®•à®³à¯ மடà¯à®Ÿà¯à®®à¯"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "இத௠பழையதை ஒதà¯à®¤à¯‡ உளà¯à®³à®¤à¯"
+
+#~ msgid "is too simple"
+#~ msgstr "இத௠மிகவà¯à®®à¯ எளிதாக உளà¯à®³à®¤à¯"
+
+#~ msgid "is rotated"
+#~ msgstr "இத௠சà¯à®´à®²à®•à¯à®•à¯‚டியதà¯"
+
+#~ msgid "not enough character classes"
+#~ msgstr "போதிய எழà¯à®¤à¯à®¤à¯ வகà¯à®ªà¯à®ªà¯à®•à®³à¯ இலà¯à®²à¯ˆ"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "நிறைய அதே எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯ தொடரà¯à®¨à¯à®¤à¯ கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "நீளமான ஒர௠மோனோடோனிக௠எழà¯à®¤à¯à®¤à¯à®¤à¯ தொடரைக௠கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "சில வடிவல௠பயனர௠பெயரை கொணà¯à®Ÿà¯à®³à¯à®³à®¤à¯"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "தவறான கடவà¯à®šà¯à®šà¯Šà®²à¯: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "கணகà¯à®•à¯ தறà¯à®•à®¾à®²à®¿à®•à®®à®¾à®• பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ (%ld விநாடிகள௠உளà¯à®³à®©)"
+
+#~ msgid "Authentication error"
+#~ msgstr "உரிம பிழை"
+
+#~ msgid "Service error"
+#~ msgstr "சேவை பிழை"
+
+#~ msgid "Unknown user"
+#~ msgstr "தெரியாத பயனரà¯"
+
+#~ msgid "Unknown error"
+#~ msgstr "தெரியாத பிழை"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: தவறான எண௠--reset= கà¯à®•à¯ கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: à®…à®™à¯à®•à¯€à®•à®°à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®¾à®¤ விரà¯à®ªà¯à®ªà®®à¯ %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: பூஜà¯à®œà®¿à®¯à®®à®¿à®²à¯à®²à®¾à®¤à®¤à®±à¯à®•à¯ அனைதà¯à®¤à¯ பயனரà¯à®•à®³à¯ˆà®¯à¯à®®à¯ மற௠அமைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "பà¯à®•à¯à®ªà®¤à®¿à®µà¯ கடைசி தோலà¯à®µà®¿ தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¨à¯à®¤à®¤à¯ இஙà¯à®•à®¿à®°à¯à®¨à¯à®¤à¯\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/te.gmo b/po/te.gmo
index b6ddfbd9..23bb6a17 100644
--- a/po/te.gmo
+++ b/po/te.gmo
Binary files differ
diff --git a/po/te.po b/po/te.po
index b7bad9e1..34c09966 100644
--- a/po/te.po
+++ b/po/te.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2013-04-30 07:58-0400\n"
"Last-Translator: sudheesh001 <sudheesh1995@outlook.com>\n"
"Language-Team: Telugu (http://www.transifex.com/projects/p/fedora/language/"
@@ -22,21 +22,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...సమయం అయిపోతోంది...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...à°•à±à°·à°®à°¿à°‚చాలి, మీ సమయం అయిపోయింది!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "తపà±à°ªà±à°¡à± సంభాషణలౠ(%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "సంకేతపదమà±: "
@@ -218,99 +205,56 @@ msgstr "libpamనౠఅనà±à°µà°°à±à°¤à°¨à°®à± మరలా కాలà±â€Œ
msgid "Unknown PAM error"
msgstr "తెలియని PAM దోషమà±"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "ఇది పాతదేనా"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "సంభాషణా దోషమà±"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "పాలిండà±à°°à±‹à°®à°¾"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "కేసౠమారà±à°ªà±à°²à± మాతà±à°°à°®à±‡"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "పాతదానికి మరీ దగà±à°—రపోలికగావà±à°‚ది"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "మరీ సరళంగావà±à°‚ది"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ఇది పరà±à°¯à°¾à°¯à°‚గానా"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "సరిపోవà±à°¨à°‚à°¤ కారెకà±à°Ÿà°°à± à°•à±à°²à°¾à°¸à±†à°¸à± లేవà±"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "ఒకదానితరà±à°µà°¾à°¤ వొకటి అదే à°…à°•à±à°·à°°à°¾à°²à± చాలావà±à°¨à±à°¨à°¾à°¯à°¿"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "ఒకదానితరà±à°µà°¾à°¤ వొకటి అదే à°…à°•à±à°·à°°à°¾à°²à± చాలావà±à°¨à±à°¨à°¾à°¯à°¿"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "à°’à°•à°°à°•à°‚à°—à°¾ వినియోగదారి నామమà±à°¨à± కలిగివà±à°‚ది"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ సంకేతపదమౠయివà±à°µà°²à±‡à°¦à±"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...సమయం అయిపోతోంది...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS సంకేతపదమౠమారà±à°šà°¬à°¡ లేకపోయింది."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...à°•à±à°·à°®à°¿à°‚చాలి, మీ సమయం అయిపోయింది!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "చెడà±à°¡ సంకేతపదమà±: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "తపà±à°ªà±à°¡à± సంభాషణలౠ(%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s విఫలమైంది: బహిషà±à°•à°°à°£ కోడౠ%d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s విఫలమైంది: సంకేతమౠ%d%s పొదింది"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s విఫలమైంది: తెలియని à°¸à±à°¥à°¿à°¤à°¿ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u లాగినà±â€Œà°² వైఫలà±à°¯à°‚ కారణంగా ఖాతా లాకà±à°…యింది"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -362,7 +306,7 @@ msgstr[1] "చివరి సమరà±à°§à°µà°‚తపౠలాగినà±â€Œà
msgid "There were %d failed login attempts since the last successful login."
msgstr "చివరి సమరà±à°§à°µà°‚తపౠలాగినà±â€Œà°¨à±à°‚à°¡à°¿ ఆకà±à°•à°¡ %d విఫల లాగినౠపà±à°°à°¯à°¤à±à°¨à°¾à°²à± à°µà±à°¨à±à°¨à°¾à°¯à°¿."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "'%s' కొరకౠమరీయెకà±à°•à±à°µ లాగినà±â€Œà°²à±"
@@ -404,22 +348,22 @@ msgstr "మీరౠఫోలà±à°¡à°°à± %sనందౠపాతమెయిà
msgid "You have mail in folder %s."
msgstr "మీరౠఫోలà±à°¡à°°à± %sనందౠమెయిలà±â€Œà°¨à± కలిగివà±à°¨à±à°¨à°¾à°°à±."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "డెరెకà±à°Ÿà°°à±€ '%s' సృషà±à°Ÿà°¿à°‚à°šà±à°Ÿ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "డైరెకà±à°Ÿà°°à±€ %sనౠసృషà±à°Ÿà°¿à°‚చలేక పోయింది మరియౠసిదà±à°¦à±€à°•à°°à°¿à°‚చలేక పోయింది."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "సంకేతపదమౠయిపà±à°ªà°Ÿà°¿à°•à±‡ à°µà±à°ªà°¯à±‹à°—ించబడింది. మరియొకదానిని యెంచà±à°•à±Šà°¨à±à°®à±."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "సంకేతపదమౠయిపà±à°ªà°Ÿà°¿à°•à±‡ à°µà±à°ªà°¯à±‹à°—ించబడింది."
@@ -455,12 +399,12 @@ msgstr "విలà±à°µà±ˆà°¨ à°°à°•à±à°·à°£ సందరà±à°­à°®à±à°•à°¾à°¦à
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "à°°à°•à±à°·à°£ సందరà±à°­à°®à± %s à°…à°ªà±à°ªà°—ించబడింది"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "à°•à±€ సృషà±à°Ÿà±€à°•à°°à°£ సందరà±à°­à°®à± %s à°…à°ªà±à°ªà°—ించబడింది"
@@ -480,66 +424,7 @@ msgstr "pam_set_item() విఫలమైంది\n"
msgid "login: failure forking: %m"
msgstr "login: failure forking: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "ఖాతా తాతà±à°•à°¾à°²à°¿à°•à°‚à°—à°¾ లాకà±â€Œà°šà±‡à°¯à°¬à°¡à°¿à°‚ది (%ld సెకనà±à°²à± మిగిలినవి)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "దృవీకరణం దోషమà±"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "సేవ దోషమà±"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "తెలియని వినియోగదారి"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "తెలియని దోషమà±"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s:చెడà±à°¡ సంఖà±à°¯ యివà±à°µà°¬à°¡à°¿à°‚ది --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: à°—à±à°°à±à°¤à°¿à°‚చని à°à°šà±à°šà°¿à°•à°®à± %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: వినియోగదారà±à°²à°¨à°‚దరిని à°¸à±à°¨à±à°¨à°¾-కానిదానికి తిరిగివà±à°‚చలేమà±\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "లాగినౠవిఫలమైంది సరికొతà±à°¤ వైఫలà±à°¯à°‚ దీనినà±à°‚à°¡à°¿\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "యాకà±à°¸à°¿à°¸à± యివà±à°µà°¬à°¡à°¿à°‚ది (చివరిగా యాకà±à°¸à°¿à°¸à± చేసినది %ld సెకనà±à°² à°•à±à°°à°¿à°¤à°‚)."
@@ -562,7 +447,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "మీరౠమీ సంకేతపదమà±à°¨à± తకà±à°·à°£à°®à±‡ మారà±à°šà°µà°²à°¸à°¿à°µà±à°‚ది (password aged)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -570,7 +455,7 @@ msgstr[0] "హెచà±à°šà°°à°¿à°•: మీ సంకేతపదమౠ%d à°°à±
msgstr[1] "హెచà±à°šà°°à°¿à°•: మీ సంకేతపదమౠ%d రోజà±à°²à°²à±‹ కాలమà±à°¤à±€à°°à±à°¤à±à°‚ది"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "హెచà±à°šà°°à°¿à°•: మీ సంకేతపదమౠ%d రోజà±à°²à°²à±‹ కాలమà±à°¤à±€à°°à±à°¤à±à°‚ది"
@@ -579,6 +464,16 @@ msgstr "హెచà±à°šà°°à°¿à°•: మీ సంకేతపదమౠ%d రోà°
msgid "NIS password could not be changed."
msgstr "NIS సంకేతపదమౠమారà±à°šà°¬à°¡ లేకపోయింది."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ సంకేతపదమౠయివà±à°µà°²à±‡à°¦à±"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS సంకేతపదమౠమారà±à°šà°¬à°¡ లేకపోయింది."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "మీరౠతపà±à°ªà°¨à°¿à°¸à°°à°¿à°—à°¾ తకà±à°•à±à°µ పాసà±â€Œà°µà°°à±à°¡à±â€Œà°¨à± à°Žà°‚à°šà±à°•à±‹à°µà°¾à°²à°¿."
@@ -597,3 +492,81 @@ msgstr "%s కొరకౠసంకేతపదమà±à°¨à± మారà±à°šà±à
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "మీ సంకేతపదమà±à°¨à± మారà±à°šà±à°Ÿà°•à± మీరౠఎకà±à°•à±à°µà°¸à±‡à°ªà± వేచివà±à°‚డాలి"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "ఇది పాతదేనా"
+
+#~ msgid "memory allocation error"
+#~ msgstr "సంభాషణా దోషమà±"
+
+#~ msgid "is a palindrome"
+#~ msgstr "పాలిండà±à°°à±‹à°®à°¾"
+
+#~ msgid "case changes only"
+#~ msgstr "కేసౠమారà±à°ªà±à°²à± మాతà±à°°à°®à±‡"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "పాతదానికి మరీ దగà±à°—రపోలికగావà±à°‚ది"
+
+#~ msgid "is too simple"
+#~ msgstr "మరీ సరళంగావà±à°‚ది"
+
+#~ msgid "is rotated"
+#~ msgstr "ఇది పరà±à°¯à°¾à°¯à°‚గానా"
+
+#~ msgid "not enough character classes"
+#~ msgstr "సరిపోవà±à°¨à°‚à°¤ కారెకà±à°Ÿà°°à± à°•à±à°²à°¾à°¸à±†à°¸à± లేవà±"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "ఒకదానితరà±à°µà°¾à°¤ వొకటి అదే à°…à°•à±à°·à°°à°¾à°²à± చాలావà±à°¨à±à°¨à°¾à°¯à°¿"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "ఒకదానితరà±à°µà°¾à°¤ వొకటి అదే à°…à°•à±à°·à°°à°¾à°²à± చాలావà±à°¨à±à°¨à°¾à°¯à°¿"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "à°’à°•à°°à°•à°‚à°—à°¾ వినియోగదారి నామమà±à°¨à± కలిగివà±à°‚ది"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "చెడà±à°¡ సంకేతపదమà±: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "ఖాతా తాతà±à°•à°¾à°²à°¿à°•à°‚à°—à°¾ లాకà±â€Œà°šà±‡à°¯à°¬à°¡à°¿à°‚ది (%ld సెకనà±à°²à± మిగిలినవి)"
+
+#~ msgid "Authentication error"
+#~ msgstr "దృవీకరణం దోషమà±"
+
+#~ msgid "Service error"
+#~ msgstr "సేవ దోషమà±"
+
+#~ msgid "Unknown user"
+#~ msgstr "తెలియని వినియోగదారి"
+
+#~ msgid "Unknown error"
+#~ msgstr "తెలియని దోషమà±"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s:చెడà±à°¡ సంఖà±à°¯ యివà±à°µà°¬à°¡à°¿à°‚ది --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: à°—à±à°°à±à°¤à°¿à°‚చని à°à°šà±à°šà°¿à°•à°®à± %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: వినియోగదారà±à°²à°¨à°‚దరిని à°¸à±à°¨à±à°¨à°¾-కానిదానికి తిరిగివà±à°‚చలేమà±\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "లాగినౠవిఫలమైంది సరికొతà±à°¤ వైఫలà±à°¯à°‚ దీనినà±à°‚à°¡à°¿\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/tg.po b/po/tg.po
index d8a79680..7107cfca 100644
--- a/po/tg.po
+++ b/po/tg.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Tajik (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -355,7 +301,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -396,22 +342,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -446,12 +392,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -471,62 +417,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -546,7 +437,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -554,7 +445,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -563,6 +454,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/th.po b/po/th.po
index 9c9dd990..80cd6b02 100644
--- a/po/th.po
+++ b/po/th.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Thai (http://www.transifex.com/projects/p/fedora/language/"
@@ -20,21 +20,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -214,96 +201,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +299,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +340,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +390,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +415,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,14 +435,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -561,6 +451,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/tr.gmo b/po/tr.gmo
index 1d73f488..fbe099cd 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 417c2616..45d154b7 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -9,13 +9,13 @@
# Onuralp SEZER <thunderbirdtr@gmail.com>, 2012
# Selim Åžumlu <selim@sum.lu>, 2012
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# OÄŸuz Ersen <oguzersen@protonmail.com>, 2020.
+# OÄŸuz Ersen <oguzersen@protonmail.com>, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-02 09:40+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:28+0000\n"
"Last-Translator: OÄŸuz Ersen <oguzersen@protonmail.com>\n"
"Language-Team: Turkish <https://translate.fedoraproject.org/projects/linux-"
"pam/master/tr/>\n"
@@ -24,23 +24,10 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n>1);\n"
-"X-Generator: Weblate 4.0.1\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Zaman geçiyor...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Üzgünüm, süreniz doldu!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "hatalı etkileşim (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Parola: "
@@ -220,84 +207,35 @@ msgstr "Uygulamanın libpam kütüphanesini yeniden çağırması gerekiyor"
msgid "Unknown PAM error"
msgstr "Bilinmeyen PAM hatası"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "eskisi ile aynı"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "bellek ayırma hatası"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "bir palindrom (iki yönden aynı şekilde okunuyor)"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "sadece büyük-küçük harf değişimi"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "eskisine çok benziyor"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "çok basit"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "deÄŸiÅŸtirilmiÅŸ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "yetersiz karakter sınıfı"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "aynı karakterleri arka arkaya içeriyor"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "çok uzun tekdüze karakter sırası içeriyor"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "kullanıcı adını bir biçimde içeriyor"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Parola belirtilmedi."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Zaman geçiyor...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Parola deÄŸiÅŸtirilmedi."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Üzgünüm, süreniz doldu!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "KÖTÜ PAROLA: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "hatalı etkileşim (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s başarısız: çıkış kodu %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s başarısız: %d%s sinyali yakalandı"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s başarısız: bilinmeyen durum 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -305,13 +243,21 @@ msgstr ""
"Kullanım: %s [--dir KayıtlarınTutulduğuDizininYolu] [--user KullanıcıAdı] [--"
"reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "%u başarısız oturum açma nedeniyle hesap kilitlendi."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(kilidi açmak için %d dakika kaldı)"
+msgstr[1] "(kilidi açmak için %d dakika kaldı)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(kilidi açmak için %d dakika kaldı)"
@@ -364,7 +310,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Son başarılı girişten itibaren %d başarısız kimlik doğrulama girişimi oldu."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "%s için çok fazla giriş var."
@@ -405,22 +351,22 @@ msgstr "%s dizininde eski/okunmuÅŸ iletiniz var."
msgid "You have mail in folder %s."
msgstr "%s dizininde iletiniz var."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "%s dizini oluÅŸturuluyor."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "%s dizini oluşturulamadı."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Parola kullanımda. Lütfen başka bir parola seçin."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Parola önceden kullanılmıştır."
@@ -455,12 +401,12 @@ msgstr "Bu geçerli bir güvenlik bağlamı değil."
msgid "A valid context for %s could not be obtained."
msgstr "%s için geçerli bir bağlam alınamadı."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "%s güvenlik bağlamı atandı."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "%s anahtar oluşturma bağlamı atandı."
@@ -480,66 +426,7 @@ msgstr "pam_set_item() çalıştırılamadı\n"
msgid "login: failure forking: %m"
msgstr "giriş: çatallama yapılamadı: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Hesap geçici olarak kilitlendi (%ld saniye kaldı)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Yetkilendirme hatası"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Hizmet hatası"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Bilinmeyen kullanıcı"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Bilinmeyen hata"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: --reset argümanına geçersiz sayı verildi\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Tanınmayan seçenek %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file DosyanınTamYolu] [--user KullanıcıAdı] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Tüm kullanıcılara sıfır olmayan bir değer atanamadı\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "GiriÅŸ Hatalar Son hata Kim\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f kök-dosya-adı] [--file kök-dosya-adı]\n"
-" [-u kullanıcı-adı] [--user kullanıcı-adı]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Erişim izni verildi (son erişim %ld saniye önce)."
@@ -561,7 +448,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Parolanızı hemen değiştirmeniz gerekmektedir (parolanın süresi doldu)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -569,7 +456,7 @@ msgstr[0] "Uyarı: parolanızın süresi %d gün içinde dolacak."
msgstr[1] "Uyarı: parolanızın süresi %d gün içinde dolacak."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Uyarı: parolanızın süresi %d gün içinde dolacak."
@@ -578,6 +465,14 @@ msgstr "Uyarı: parolanızın süresi %d gün içinde dolacak."
msgid "NIS password could not be changed."
msgstr "NIS parolası değiştirilemedi."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Parola belirtilmedi."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Parola deÄŸiÅŸtirilmedi."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Daha kısa bir şifre seçmelisiniz."
@@ -594,3 +489,81 @@ msgstr "%s kullanıcısının parolası değiştiriliyor."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Parolanızı değiştirmek için daha uzun süre beklemelisiniz."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "eskisi ile aynı"
+
+#~ msgid "memory allocation error"
+#~ msgstr "bellek ayırma hatası"
+
+#~ msgid "is a palindrome"
+#~ msgstr "bir palindrom (iki yönden aynı şekilde okunuyor)"
+
+#~ msgid "case changes only"
+#~ msgstr "sadece büyük-küçük harf değişimi"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "eskisine çok benziyor"
+
+#~ msgid "is too simple"
+#~ msgstr "çok basit"
+
+#~ msgid "is rotated"
+#~ msgstr "deÄŸiÅŸtirilmiÅŸ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "yetersiz karakter sınıfı"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "aynı karakterleri arka arkaya içeriyor"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "çok uzun tekdüze karakter sırası içeriyor"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "kullanıcı adını bir biçimde içeriyor"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "KÖTÜ PAROLA: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Hesap geçici olarak kilitlendi (%ld saniye kaldı)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Yetkilendirme hatası"
+
+#~ msgid "Service error"
+#~ msgstr "Hizmet hatası"
+
+#~ msgid "Unknown user"
+#~ msgstr "Bilinmeyen kullanıcı"
+
+#~ msgid "Unknown error"
+#~ msgstr "Bilinmeyen hata"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: --reset argümanına geçersiz sayı verildi\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Tanınmayan seçenek %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file DosyanınTamYolu] [--user KullanıcıAdı] [--reset[=n]] [--"
+#~ "quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Tüm kullanıcılara sıfır olmayan bir değer atanamadı\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "GiriÅŸ Hatalar Son hata Kim\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f kök-dosya-adı] [--file kök-dosya-adı]\n"
+#~ " [-u kullanıcı-adı] [--user kullanıcı-adı]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 12ea17fc..9c69aa08 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 623c09f6..0dd79230 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4,15 +4,15 @@
#
# Translators:
# Ivan Petrouchtchak <ivanpetrouchtchak@yahoo.com>, 2006
-# Yuri Chornoivan <yurchor@ukr.net>, 2010,2012, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 2010,2012, 2020, 2021.
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
-# Yuri Chornoivan <yurchor@ukr.net>, 2016. #zanata, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 2016. #zanata, 2020, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-05-02 09:40+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-07-22 00:28+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/linux-"
"pam/master/uk/>\n"
@@ -22,23 +22,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.0.1\n"
+"X-Generator: Weblate 4.7.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÑƒÑ”Ñ‚ÑŒÑÑ...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Вибачте, ваш Ñ‡Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð²ÑÑ!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "помилкова розмова (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Пароль: "
@@ -218,84 +205,35 @@ msgstr "Програмі потрібно знов викликати libpam"
msgid "Unknown PAM error"
msgstr "Ðевідома помилка PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "такий Ñамий, Ñк Ñ– Ñтарий"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¾Ð±Ð»Ð°ÑÑ‚Ñ– у пам’ÑÑ‚Ñ–"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "— це паліндром"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "тільки зміни в регіÑтрі"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "занадто подібний до Ñтарого"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "занадто проÑтий"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "чергуєтьÑÑ"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "недоÑтатнє викориÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ñів Ñимволів"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "міÑтить забагато поÑлідовних однакових Ñимволів"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "міÑтить надто довгу монотонну поÑлідовніÑÑ‚ÑŒ Ñимволів"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "міÑтить Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача з форми"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "Ðе було надано жодного паролÑ."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÑƒÑ”Ñ‚ÑŒÑÑ...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "Пароль не було змінено."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Вибачте, ваш Ñ‡Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð²ÑÑ!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ПОГÐÐИЙ ПÐРОЛЬ: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "помилкова розмова (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "Помилка %s: коди виходу %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "Помилка %s: отримано Ñигнал %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "Помилка %s: невідомий Ñтан 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -303,13 +241,22 @@ msgstr ""
"КориÑтуваннÑ: %s [--dir /шлÑÑ…/до/каталогу/tally] [--user ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача] "
"[--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾ через %u помилок під Ñ‡Ð°Ñ Ñпроби входу."
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(лишилоÑÑ %d хвилина до розблокуваннÑ)"
+msgstr[1] "(лишилоÑÑ %d хвилини до розблокуваннÑ)"
+msgstr[2] "(лишилоÑÑ %d хвилин до розблокуваннÑ)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(лишилоÑÑ %d хвилин до розблокуваннÑ)"
@@ -370,7 +317,7 @@ msgstr ""
"ПіÑÐ»Ñ Ð¾Ñтаннього уÑпішного входу було виконано %d Ñпроби входу, Ñкі "
"завершилиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð¼Ð¸."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "Забагато входів в Ð´Ð»Ñ Â«%s»."
@@ -411,22 +358,22 @@ msgstr "У теці %s Ñ” Ñтарі поштові повідомленнÑ."
msgid "You have mail in folder %s."
msgstr "У теці %s Ñ” поштові повідомленнÑ."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ «%s»."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Ðе вдалоÑÑ Ñтворити Ñ– ініціалізувати каталог «%s»."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Цей пароль вже викориÑтано. Виберіть інший."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "Пароль вже викориÑтовувавÑÑ."
@@ -461,12 +408,12 @@ msgstr "Цей контекÑÑ‚ безпеки Ñ” некоректним."
msgid "A valid context for %s could not be obtained."
msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ коректний контекÑÑ‚ Ð´Ð»Ñ %s."
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "Призначено контекÑÑ‚ безпеки %s."
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "Призначено контекÑÑ‚ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² %s."
@@ -486,67 +433,7 @@ msgstr "помилка pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "вхід: помилка розгалуженнÑ: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñово заблоковано (ще на %ld Ñекунд)."
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Помилка розпізнаваннÑ"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Помилка Ñлужби"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Ðевідомий кориÑтувач"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Ðевідома помилка"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: вказано помилкове чиÑло --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: нерозпізнано параметр %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file назва-файла-кориÑтувача-root] [--user ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача] [--"
-"reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: не вдаєтьÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "КориÑтувач Помилок ОÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° З\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f назва-файла-кориÑтувача-root] [--file назва-файла-кориÑтувача-root]\n"
-" [-u кориÑтувач] [--user кориÑтувач]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Ðадано доÑтуп (оÑÑ‚Ð°Ð½Ð½Ñ Ñпроба доÑтупу ÑталаÑÑ %ld Ñекунд тому)."
@@ -569,7 +456,7 @@ msgid ""
msgstr ""
"Вам необхідно негайно змінити пароль (Ñтрок дії поточного Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾)."
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -578,7 +465,7 @@ msgstr[1] "ПопередженнÑ: Ñтрок дії вашого паролÑ
msgstr[2] "ПопередженнÑ: Ñтрок дії вашого Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð±ÑƒÐ´Ðµ вичерпано за %d днів."
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "ПопередженнÑ: Ñтрок дії вашого Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð±ÑƒÐ´Ðµ вичерпано за %d днів."
@@ -587,6 +474,14 @@ msgstr "ПопередженнÑ: Ñтрок дії вашого Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð±
msgid "NIS password could not be changed."
msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ пароль NIS."
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "Ðе було надано жодного паролÑ."
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "Пароль не було змінено."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Ðеобхідно вибрати коротший пароль."
@@ -603,3 +498,83 @@ msgstr "Зміна Ð¿Ð°Ñ€Ð¾Ð»Ñ %s."
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "Ви Ñлід ще трохи зачекати, щоб змінити ваш пароль."
+
+#~ msgid "is the same as the old one"
+#~ msgstr "такий Ñамий, Ñк Ñ– Ñтарий"
+
+#~ msgid "memory allocation error"
+#~ msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¾Ð±Ð»Ð°ÑÑ‚Ñ– у пам’ÑÑ‚Ñ–"
+
+#~ msgid "is a palindrome"
+#~ msgstr "— це паліндром"
+
+#~ msgid "case changes only"
+#~ msgstr "тільки зміни в регіÑтрі"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "занадто подібний до Ñтарого"
+
+#~ msgid "is too simple"
+#~ msgstr "занадто проÑтий"
+
+#~ msgid "is rotated"
+#~ msgstr "чергуєтьÑÑ"
+
+#~ msgid "not enough character classes"
+#~ msgstr "недоÑтатнє викориÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ñів Ñимволів"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "міÑтить забагато поÑлідовних однакових Ñимволів"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "міÑтить надто довгу монотонну поÑлідовніÑÑ‚ÑŒ Ñимволів"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "міÑтить Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача з форми"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ПОГÐÐИЙ ПÐРОЛЬ: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñово заблоковано (ще на %ld Ñекунд)."
+
+#~ msgid "Authentication error"
+#~ msgstr "Помилка розпізнаваннÑ"
+
+#~ msgid "Service error"
+#~ msgstr "Помилка Ñлужби"
+
+#~ msgid "Unknown user"
+#~ msgstr "Ðевідомий кориÑтувач"
+
+#~ msgid "Unknown error"
+#~ msgstr "Ðевідома помилка"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: вказано помилкове чиÑло --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: нерозпізнано параметр %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file назва-файла-кориÑтувача-root] [--user ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача] [--"
+#~ "reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: не вдаєтьÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ ненульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "КориÑтувач Помилок ОÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° З\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f назва-файла-кориÑтувача-root] [--file назва-файла-кориÑтувача-"
+#~ "root]\n"
+#~ " [-u кориÑтувач] [--user кориÑтувач]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/ur.po b/po/ur.po
index a9f9e817..2cb1caa4 100644
--- a/po/ur.po
+++ b/po/ur.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Urdu <trans-urdu@lists.fedoraproject.org>\n"
@@ -19,21 +19,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -213,96 +200,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -354,7 +300,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -395,22 +341,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -445,12 +391,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -470,62 +416,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -545,7 +436,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -553,7 +444,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -562,6 +453,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/vi.gmo b/po/vi.gmo
index 213658c4..b7004dba 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 881d4abb..db2839f8 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2012-11-30 06:03-0500\n"
"Last-Translator: mattheu_9x <mattheu.9x@gmail.com>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/fedora/"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Thá»i gian Ä‘ang dần hết...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Xin lá»—i, đã hết thá»i gian!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "hội thoại sai (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Mật khẩu : "
@@ -217,87 +204,35 @@ msgstr "Ứng dụng cần gá»i libpam lần nữa"
msgid "Unknown PAM error"
msgstr "Không biết lỗi PAM"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "là giống như cũ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "Lỗi cấp phát bộ nhớ"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "là một xâu palindrome"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "chỉ thay đổi chữ thÆ°á»ng/hoa"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "quá giống cái cũ"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "quá đơn giản"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "được sử dụng lại"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "không đủ các lớp nhân vật"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "chứa quá nhiá»u kí tá»± giống nhau liên tiếp"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-#, fuzzy
-msgid "contains too long of a monotonic character sequence"
-msgstr "chứa quá nhiá»u kí tá»± giống nhau liên tiếp"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "chứa tên user trong một số biểu mẫu"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Không có mật khẩu được cung cấp"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Thá»i gian Ä‘ang dần hết...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "NIS mật khẩu không thể được thay đổi."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Xin lá»—i, đã hết thá»i gian!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "Mật khẩu không an toàn: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "hội thoại sai (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s thất bại: lối ra mã %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s thất bại: bắt tín hiệu %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s thất bại: không rõ tình trạng 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
@@ -305,13 +240,20 @@ msgstr ""
"%s: [- tập bắt rá»…-filename] [- ngÆ°á»i sá»­ dụng tên ngÆ°á»i dùng] [- đặt lại [= "
"n]] [- yên tĩnh]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, fuzzy, c-format
msgid "The account is locked due to %u failed logins."
msgstr "Tài khoản bị khóa do đăng nhập %u không thành công"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -364,7 +306,7 @@ msgid "There were %d failed login attempts since the last successful login."
msgstr ""
"Có %d lần đăng nhập không thành công kể từ lần đăng nhập thành công trước."
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Quá nhiá»u lần đăng nhập cho '%s'."
@@ -406,22 +348,22 @@ msgstr "Bạn có thư cũ trong thư mục %s."
msgid "You have mail in folder %s."
msgstr "Bạn có thư trong thư mục %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "Tạo thư mục '%s'."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "Không thể khởi tạo thư mục '%s'."
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Mật khẩu đã được dùng. Hãy chá»n mật khẩu khác."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "Mật khẩu đã được dùng. Hãy chá»n mật khẩu khác."
@@ -458,12 +400,12 @@ msgstr "Không phải là một bối cảnh an ninh hợp lệ"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Bối cảnh an ninh %s Giao"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Sáng tạo Context phím %s Giao"
@@ -483,67 +425,7 @@ msgstr "không pam_set_item ()\n"
msgid "login: failure forking: %m"
msgstr "đăng nhập: thất bại forking: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "Tài khoản tạm thá»i bị khóa (%ld giây còn lại)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Xác thực lỗi"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Lỗi dịch vụ"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "NgÆ°á»i dùng không rõ"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Lỗi không rõ"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Xấu số cho --cài lại=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Äược thừa nhận lá»±a chá»n%s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [- tập bắt rá»…-filename] [- ngÆ°á»i sá»­ dụng tên ngÆ°á»i dùng] [- đặt lại [= "
-"n]] [- yên tĩnh]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: Không thể thiết lập lại tất cả các ngÆ°á»i dùng khác không\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Äang nhập Thất bại Thất bại cuốie Từ \n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "Äược phép truy cập (lần truy cập trÆ°á»›c %ld giây trÆ°á»›c)"
@@ -567,14 +449,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "Bạn phải thay đổi ngay mật khẩu (mật khẩu quá cũ)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, fuzzy, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] "Cảnh báo: mật khẩu của bạn sẽ hết hạn trong %d ngày"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, fuzzy, c-format
msgid "Warning: your password will expire in %d days."
msgstr "Cảnh báo: mật khẩu của bạn sẽ hết hạn trong %d ngày"
@@ -583,6 +465,16 @@ msgstr "Cảnh báo: mật khẩu của bạn sẽ hết hạn trong %d ngày"
msgid "NIS password could not be changed."
msgstr "NIS mật khẩu không thể được thay đổi."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Không có mật khẩu được cung cấp"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "NIS mật khẩu không thể được thay đổi."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Bạn phải chá»n má»™t mật khẩu ngắn hÆ¡n."
@@ -601,3 +493,83 @@ msgstr "Thay đổi mật khẩu cho %s."
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Bạn phải đợi thêm nữa, để thay đổi mật khẩu"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "là giống như cũ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "Lỗi cấp phát bộ nhớ"
+
+#~ msgid "is a palindrome"
+#~ msgstr "là một xâu palindrome"
+
+#~ msgid "case changes only"
+#~ msgstr "chỉ thay đổi chữ thÆ°á»ng/hoa"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "quá giống cái cũ"
+
+#~ msgid "is too simple"
+#~ msgstr "quá đơn giản"
+
+#~ msgid "is rotated"
+#~ msgstr "được sử dụng lại"
+
+#~ msgid "not enough character classes"
+#~ msgstr "không đủ các lớp nhân vật"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "chứa quá nhiá»u kí tá»± giống nhau liên tiếp"
+
+#, fuzzy
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "chứa quá nhiá»u kí tá»± giống nhau liên tiếp"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "chứa tên user trong một số biểu mẫu"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "Mật khẩu không an toàn: %s"
+
+#, fuzzy
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "Tài khoản tạm thá»i bị khóa (%ld giây còn lại)"
+
+#~ msgid "Authentication error"
+#~ msgstr "Xác thực lỗi"
+
+#~ msgid "Service error"
+#~ msgstr "Lỗi dịch vụ"
+
+#~ msgid "Unknown user"
+#~ msgstr "NgÆ°á»i dùng không rõ"
+
+#~ msgid "Unknown error"
+#~ msgstr "Lỗi không rõ"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Xấu số cho --cài lại=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Äược thừa nhận lá»±a chá»n%s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [- tập bắt rá»…-filename] [- ngÆ°á»i sá»­ dụng tên ngÆ°á»i dùng] [- đặt lại "
+#~ "[= n]] [- yên tĩnh]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: Không thể thiết lập lại tất cả các ngÆ°á»i dùng khác không\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Äang nhập Thất bại Thất bại cuốie Từ \n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/yo.po b/po/yo.po
index b5831214..52e753ee 100644
--- a/po/yo.po
+++ b/po/yo.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM 1.2.1\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Yoruba\n"
@@ -18,21 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -212,96 +199,55 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -352,7 +298,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -393,22 +339,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -443,12 +389,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -468,62 +414,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -543,7 +434,7 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -551,7 +442,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -560,6 +451,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index c6fc6b26..8b45db8b 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index b7d2c832..4f8e0405 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,13 +9,15 @@
# Xi HUANG <xhuang@redhat.com>, 2007
# Tomáš Mráz <tmraz@fedoraproject.org>, 2016. #zanata
# Dmitry V. Levin <ldv@altlinux.org>, 2020.
+# Charles Lee <lchopn@gmail.com>, 2020.
+# Chenbo Pan <panchenbo@uniontech.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
-"PO-Revision-Date: 2020-03-06 23:59+0000\n"
-"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
+"PO-Revision-Date: 2021-08-02 02:19+0000\n"
+"Last-Translator: Chenbo Pan <panchenbo@uniontech.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
"projects/linux-pam/master/zh_CN/>\n"
"Language: zh_CN\n"
@@ -23,53 +25,39 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.11.2\n"
+"X-Generator: Weblate 4.1.1\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...时间å³å°†è€—å°½...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...对ä¸èµ·ï¼Œæ‚¨çš„时间已ç»è€—å°½ï¼\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "æœ‰é”™è¯¯çš„è½¬æ¢ (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
-msgstr "密ç ï¼š"
+msgstr "密ç ï¼š "
#: libpam/pam_get_authtok.c:41
-#, fuzzy, c-format
+#, c-format
msgid "Current %s password: "
-msgstr "æ–°çš„ %s 密ç ï¼š"
+msgstr "当å‰çš„ %s 密ç ï¼š "
#: libpam/pam_get_authtok.c:42
-#, fuzzy
msgid "Current password: "
-msgstr "æ–°çš„ 密ç ï¼š"
+msgstr "当å‰çš„密ç ï¼š "
#: libpam/pam_get_authtok.c:44
#, c-format
msgid "New %s password: "
-msgstr "æ–°çš„ %s 密ç ï¼š"
+msgstr "æ–°çš„ %s 密ç ï¼š "
#: libpam/pam_get_authtok.c:45
msgid "New password: "
-msgstr "æ–°çš„ 密ç ï¼š"
+msgstr "新的密ç ï¼š "
#: libpam/pam_get_authtok.c:47
#, c-format
msgid "Retype new %s password: "
-msgstr "é‡æ–°è¾“入新的 %s 密ç ï¼š"
+msgstr "é‡æ–°è¾“入新的 %s 密ç ï¼š "
#: libpam/pam_get_authtok.c:48
msgid "Retype new password: "
-msgstr "é‡æ–°è¾“入新的 密ç ï¼š"
+msgstr "é‡æ–°è¾“入新的密ç ï¼š "
#: libpam/pam_get_authtok.c:49
msgid "Sorry, passwords do not match."
@@ -81,9 +69,8 @@ msgid "Retype %s"
msgstr "é‡æ–°è¾“å…¥ %s"
#: libpam/pam_get_authtok.c:178 libpam/pam_get_authtok.c:258
-#, fuzzy
msgid "Password change has been aborted."
-msgstr "密ç æ›´æ”¹å–消。"
+msgstr "密ç æ›´æ”¹å·²å–消。"
#: libpam/pam_item.c:311
msgid "login:"
@@ -151,7 +138,7 @@ msgstr "用户å¸æˆ·å·²å¤±æ•ˆ"
#: libpam/pam_strerror.c:70
msgid "Cannot make/remove an entry for the specified session"
-msgstr "无法为指定的会è¯åˆ›å»º/去除项。"
+msgstr "无法为指定的会è¯åˆ›å»º/移除项"
#: libpam/pam_strerror.c:72
msgid "Authentication service cannot retrieve user credentials"
@@ -221,101 +208,58 @@ msgstr "应用程åºéœ€è¦å†æ¬¡è°ƒç”¨ libpam"
msgid "Unknown PAM error"
msgstr "未知的 PAM 错误"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "与旧密ç ç›¸åŒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "内存分é…错误"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "是回文"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "仅更改了大å°å†™"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "与旧密ç è¿‡äºŽç›¸ä¼¼"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "过于简å•"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "是旧密ç çš„循环"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "没有足够的字符分类"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "包å«è¿‡å¤šè¿žç»­ç›¸åŒçš„字符"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "包å«è¿‡é•¿çš„å•ä¸€å­—符åºåˆ—"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "以æŸäº›å½¢å¼åŒ…å«ç”¨æˆ·å"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "密ç æœªæä¾›"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...时间å³å°†è€—å°½...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "无法更改 NIS 密ç ã€‚"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...对ä¸èµ·ï¼Œæ‚¨çš„时间已ç»è€—å°½ï¼\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "无效的密ç ï¼š %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "æœ‰é”™è¯¯çš„è½¬æ¢ (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s å¤±è´¥ï¼šé€€å‡ºä»£ç  %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s 失败:æ•èŽ·çš„ä¿¡å· %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s å¤±è´¥ï¼šæœªçŸ¥çš„çŠ¶æ€ 0x%x"
-#: modules/pam_faillock/main.c:104
-#, fuzzy, c-format
+#: modules/pam_faillock/main.c:103
+#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-msgstr "%s: [--文件 根文件å] [--用户 用户å] [--é‡è®¾ç½®[=n]] [--安é™]\n"
+msgstr ""
+"用法:%s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
-#, fuzzy, c-format
+#: modules/pam_faillock/pam_faillock.c:618
+#, c-format
msgid "The account is locked due to %u failed logins."
-msgstr "因为 %u 失败登录而é”定å¸æˆ·"
+msgstr "由于 %u 次登录失败,此å¸æˆ·å·²é”定。"
+
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d 分钟åŽè§£é”)"
-#: modules/pam_faillock/pam_faillock.c:650
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
-msgstr ""
+msgstr "(%d 分钟åŽè§£é”)"
#. TRANSLATORS: "strftime options for date of last login"
#: modules/pam_lastlog/pam_lastlog.c:318 modules/pam_lastlog/pam_lastlog.c:579
@@ -355,23 +299,22 @@ msgstr "最åŽä¸€æ¬¡å¤±è´¥çš„登录:%s%s%s"
msgid "There was %d failed login attempt since the last successful login."
msgid_plural ""
"There were %d failed login attempts since the last successful login."
-msgstr[0] "最有一次æˆåŠŸç™»å½•åŽæœ‰ %d 次失败的登录å°è¯•ã€‚"
+msgstr[0] "自上次æˆåŠŸç™»å½•ä»¥æ¥ï¼Œæœ‰%d 次失败的登录å°è¯•ã€‚"
#. TRANSLATORS: only used if dngettext is not supported
#: modules/pam_lastlog/pam_lastlog.c:631
#, c-format
msgid "There were %d failed login attempts since the last successful login."
-msgstr "最有一次æˆåŠŸç™»å½•åŽæœ‰ %d 次失败的登录å°è¯•ã€‚"
+msgstr "自上次æˆåŠŸç™»å½•ä»¥æ¥ï¼Œæœ‰%d 次失败的登录å°è¯•ã€‚"
-#: modules/pam_limits/pam_limits.c:1088
-#, fuzzy, c-format
+#: modules/pam_limits/pam_limits.c:1164
+#, c-format
msgid "There were too many logins for '%s'."
-msgstr "'%s'登录过多。"
+msgstr "'%s' 的登录次数过多。"
#: modules/pam_mail/pam_mail.c:289
-#, fuzzy
msgid "You have no mail."
-msgstr "您有新邮件。"
+msgstr "您没有新邮件。"
#: modules/pam_mail/pam_mail.c:292
msgid "You have new mail."
@@ -405,29 +348,29 @@ msgstr "您在文件夹 %s 中有旧邮件。"
msgid "You have mail in folder %s."
msgstr "您在文件夹 %s 中有邮件。"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "创建目录 '%s'。"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "无法创建和åˆå§‹åŒ–目录 '%s'。"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "密ç å·²ä½¿ç”¨ã€‚请选择其他密ç ã€‚"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "密ç å·²è¢«ä½¿ç”¨ã€‚"
#: modules/pam_selinux/pam_selinux.c:172
-#, fuzzy, c-format
+#, c-format
msgid "The default security context is %s."
-msgstr "默认安全性环境 %s\n"
+msgstr "默认的安全上下文是 %s。"
#: modules/pam_selinux/pam_selinux.c:176
msgid "Would you like to enter a different role or level?"
@@ -438,33 +381,32 @@ msgid "role:"
msgstr "角色:"
#: modules/pam_selinux/pam_selinux.c:193
-#, fuzzy, c-format
+#, c-format
msgid "There is no default type for role %s."
-msgstr "没有角色 %s 默认类型\n"
+msgstr "角色 %s 没有默认类型。"
#: modules/pam_selinux/pam_selinux.c:225
msgid "level:"
msgstr "级别:"
#: modules/pam_selinux/pam_selinux.c:259
-#, fuzzy
msgid "This is not a valid security context."
-msgstr "ä¸æ˜¯æœ‰æ•ˆçš„安全性环境"
+msgstr "è¿™ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„安全上下文。"
#: modules/pam_selinux/pam_selinux.c:509
#, c-format
msgid "A valid context for %s could not be obtained."
-msgstr ""
+msgstr "无法å–å¾— %s 的有效上下文。"
-#: modules/pam_selinux/pam_selinux.c:629
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:640
+#, c-format
msgid "Security context %s has been assigned."
-msgstr "已指派安全性环境 %s"
+msgstr "安全上下文 %s 已指派。"
-#: modules/pam_selinux/pam_selinux.c:645
-#, fuzzy, c-format
+#: modules/pam_selinux/pam_selinux.c:656
+#, c-format
msgid "Key creation context %s has been assigned."
-msgstr "已分é…密钥生æˆçŽ¯å¢ƒ %s"
+msgstr "密钥生æˆä¸Šä¸‹æ–‡ %s 已分é…。"
#: modules/pam_selinux/pam_selinux_check.c:99
#, c-format
@@ -481,111 +423,57 @@ msgstr "未能 pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "登录:故障派生:%m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, fuzzy, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "å¸æˆ·æš‚æ—¶é”ä½ï¼ˆè¿˜æœ‰ %ld 秒)"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "鉴定错误"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "æœåŠ¡é”™è¯¯"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "未知的用户"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "未知的错误"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: 给定的数字无效 --é‡è®¾ç½®=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: 未识别的选项 %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr "%s: [--文件 根文件å] [--用户 用户å] [--é‡è®¾ç½®[=n]] [--安é™]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: 无法将所有用户é‡è®¾ç½®ä¸ºéžé›¶\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Failures Latest failure From\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
-#, fuzzy, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
-msgstr "å¯ä»¥è®¿é—®ï¼ˆä¸Šæ¬¡è®¿é—®æ˜¯ %ld 秒之å‰ï¼‰ã€‚"
+msgstr "访问已被准许(上次访问是 %ld 秒之å‰ï¼‰ã€‚"
#: modules/pam_unix/pam_unix_acct.c:230 modules/pam_unix/pam_unix_acct.c:252
-#, fuzzy
msgid "Your account has expired; please contact your system administrator."
-msgstr "您的å¸æˆ·å·²å¤±æ•ˆï¼›è¯·ä¸Žç³»ç»Ÿç®¡ç†å‘˜å–å¾—è”ç³»"
+msgstr "您的å¸æˆ·å·²è¿‡æœŸï¼›è¯·è”系您的系统管ç†å‘˜ã€‚"
#: modules/pam_unix/pam_unix_acct.c:238
-#, fuzzy
msgid ""
"You are required to change your password immediately (administrator "
"enforced)."
-msgstr "您需è¦ç«‹å³æ›´æ”¹å¯†ç ï¼ˆroot 强制)"
+msgstr "您必须立å³æ›´æ”¹å¯†ç ï¼ˆç®¡ç†å‘˜å¼ºåˆ¶ï¼‰ã€‚"
#: modules/pam_unix/pam_unix_acct.c:244
-#, fuzzy
msgid ""
"You are required to change your password immediately (password expired)."
-msgstr "您需è¦ç«‹å³æ›´æ”¹å¯†ç ï¼ˆå¯†ç è¿‡æœŸï¼‰"
+msgstr "您必须立å³æ›´æ”¹å¯†ç ï¼ˆå¯†ç å·²ç»è¿‡æœŸï¼‰ã€‚"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
+#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
-msgstr[0] "警告:您的密ç å°†åœ¨ %d 天åŽè¿‡æœŸ"
+msgstr[0] "警告:您的密ç å°†åœ¨ %d 天åŽè¿‡æœŸã€‚"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
-#, fuzzy, c-format
+#: modules/pam_unix/pam_unix_acct.c:281
+#, c-format
msgid "Warning: your password will expire in %d days."
-msgstr "警告:您的密ç å°†åœ¨ %d 天åŽè¿‡æœŸ"
+msgstr "警告:您的密ç å°†åœ¨ %d 天åŽè¿‡æœŸã€‚"
#: modules/pam_unix/pam_unix_passwd.c:465
msgid "NIS password could not be changed."
msgstr "无法更改 NIS 密ç ã€‚"
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "未æ供密ç ã€‚"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "密ç æœªè¢«æ›´æ”¹ã€‚"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "您必须选择较短的密ç ã€‚"
#: modules/pam_unix/pam_unix_passwd.c:585
-#, fuzzy
msgid "You must choose a longer password."
-msgstr "必须选择更长的密ç "
+msgstr "您必须选择一个更长的密ç ã€‚"
#: modules/pam_unix/pam_unix_passwd.c:692
#, c-format
@@ -593,6 +481,81 @@ msgid "Changing password for %s."
msgstr "为 %s 更改 STRESS 密ç ã€‚"
#: modules/pam_unix/pam_unix_passwd.c:722
-#, fuzzy
msgid "You must wait longer to change your password."
-msgstr "您必须等待更长时间以更改密ç "
+msgstr "您必须等待更长时间以更改密ç ã€‚"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "与旧密ç ç›¸åŒ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "内存分é…错误"
+
+#~ msgid "is a palindrome"
+#~ msgstr "是回文"
+
+#~ msgid "case changes only"
+#~ msgstr "仅更改了大å°å†™"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "与旧密ç è¿‡äºŽç›¸ä¼¼"
+
+#~ msgid "is too simple"
+#~ msgstr "过于简å•"
+
+#~ msgid "is rotated"
+#~ msgstr "是旧密ç çš„循环"
+
+#~ msgid "not enough character classes"
+#~ msgstr "没有足够的字符分类"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "包å«è¿‡å¤šè¿žç»­ç›¸åŒçš„字符"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "包å«è¿‡é•¿çš„å•ä¸€å­—符åºåˆ—"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "以æŸäº›å½¢å¼åŒ…å«ç”¨æˆ·å"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "无效的密ç ï¼š %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "å¸æˆ·æš‚æ—¶é”定(剩余 %ld 秒)。"
+
+#~ msgid "Authentication error"
+#~ msgstr "鉴定错误"
+
+#~ msgid "Service error"
+#~ msgstr "æœåŠ¡é”™è¯¯"
+
+#~ msgid "Unknown user"
+#~ msgstr "未知的用户"
+
+#~ msgid "Unknown error"
+#~ msgstr "未知的错误"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: 给定的数字无效 --é‡è®¾ç½®=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: 未识别的选项 %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr "%s: [--文件 根文件å] [--用户 用户å] [--é‡è®¾ç½®[=n]] [--安é™]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: 无法将所有用户é‡è®¾ç½®ä¸ºéžé›¶\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Failures Latest failure From\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/zh_HK.po b/po/zh_HK.po
index 7301956f..2a378108 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2011-11-30 06:56-0500\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese (Hong Kong) <chinese@lists.fedoraproject.org>\n"
@@ -19,21 +19,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Zanata 3.8.3\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr ""
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr ""
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr ""
@@ -213,96 +200,54 @@ msgstr ""
msgid "Unknown PAM error"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
msgstr ""
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
+msgid "erroneous conversation (%d)\n"
msgstr ""
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -353,7 +298,7 @@ msgstr[0] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr ""
@@ -394,22 +339,22 @@ msgstr ""
msgid "You have mail in folder %s."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr ""
@@ -444,12 +389,12 @@ msgstr ""
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr ""
@@ -469,62 +414,7 @@ msgstr ""
msgid "login: failure forking: %m"
msgstr ""
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -544,14 +434,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr ""
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -560,6 +450,14 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr ""
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr ""
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr ""
+
#: modules/pam_unix/pam_unix_passwd.c:581
#, fuzzy
msgid "You must choose a shorter password."
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 7b8f491b..40d376af 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 59766d40..bff84bfd 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-05-24 12:40+0000\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/"
@@ -23,21 +23,8 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.0.4\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...時間已經超éŽ...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...抱歉,您的時間已到ï¼\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "錯誤的交談 (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "密碼: "
@@ -217,97 +204,55 @@ msgstr "應用程å¼éœ€è¦å†æ¬¡å‘¼å« libpam"
msgid "Unknown PAM error"
msgstr "未知的 PAM 錯誤"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "與舊的密碼相åŒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr "記憶體分é…錯誤"
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "是一個回文"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "僅變更大å°å¯«"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "與舊的密碼太相似"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "太簡單"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "已旋轉"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr "字元類別ä¸è¶³"
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr "包å«äº†å¤ªå¤šé€£çºŒçš„相åŒå­—å…ƒ"
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr "包å«éŽå¤šçš„單調字元åºæ®µ"
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr "包å«äº†æŸäº›æ ¼å¼çš„用戶å稱"
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-msgid "No password has been supplied."
-msgstr "未æ供密碼。"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...時間已經超éŽ...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-msgid "The password has not been changed."
-msgstr "未變更密碼。"
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...抱歉,您的時間已到ï¼\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "ä¸è‰¯çš„密碼: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "錯誤的交談 (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr "%s 失敗:退出編碼 %d"
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr "%s 失敗:æ•æ‰åˆ°ä¿¡è™Ÿ %d%s"
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr "%s 失敗:ä¸æ˜Žç‹€æ…‹ 0x%x"
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"用法:%s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr "因為 %u 次登入皆失敗,帳號已鎖定。"
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, fuzzy, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] "(%d 分é˜å¾Œè§£éŽ–)"
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr "(%d 分é˜å¾Œè§£éŽ–)"
@@ -358,7 +303,7 @@ msgstr[0] "自上次æˆåŠŸç™»å…¥å¾Œï¼Œæœ‰ %d 次試圖登入但失敗的紀錄ã€
msgid "There were %d failed login attempts since the last successful login."
msgstr "自從上次æˆåŠŸç™»å…¥å¾Œæœ‰ %d 次嘗試登入失敗。"
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, c-format
msgid "There were too many logins for '%s'."
msgstr "登入 '%s' 太多次。"
@@ -399,22 +344,22 @@ msgstr "資料夾 %s 中有您的舊郵件。"
msgid "You have mail in folder %s."
msgstr "資料夾 %s 中有您的郵件。"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr "建立目錄「%sã€ã€‚"
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr "無法建立和åˆå§‹åŒ–「%sã€ç›®éŒ„。"
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "密碼已經由其他使用者使用。請é¸æ“‡å…¶ä»–密碼。"
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
msgid "Password has been already used."
msgstr "密碼已被使用éŽã€‚"
@@ -449,12 +394,12 @@ msgstr "æ­¤éžæœ‰æ•ˆçš„安全性情境。"
msgid "A valid context for %s could not be obtained."
msgstr "無法å–å¾— %s 的有效情境。"
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, c-format
msgid "Security context %s has been assigned."
msgstr "已指定 %s 安全情境。"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, c-format
msgid "Key creation context %s has been assigned."
msgstr "已指定 %s 金鑰建立情境。"
@@ -474,66 +419,7 @@ msgstr "pam_set_item() 失敗\n"
msgid "login: failure forking: %m"
msgstr "登入:失敗的分å‰ï¼š%m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr "帳號被暫時鎖定(剩餘 %ld 秒)。"
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "驗證錯誤"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "æœå‹™éŒ¯èª¤"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "未知的使用者"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "未知的錯誤"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: ä¸è‰¯çš„號碼æ供至 --reset=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: 未識別的é¸é … %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr "%s: 無法將所有使用者é‡æ–°è¨­å®šç‚ºéžé›¶\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr "Login Failures Latest failure From\n"
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr "已賦予存å–權é™ï¼ˆæœ€å¾Œä¸€æ¬¡å­˜å–為 %ld 秒å‰ï¼‰ã€‚"
@@ -553,14 +439,14 @@ msgid ""
"You are required to change your password immediately (password expired)."
msgstr "您必須立刻變更您的密碼(密碼已經éŽæœŸï¼‰ã€‚"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
msgstr[0] "警告:您的密碼將在 %d 天後éŽæœŸã€‚"
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr "警告:您的密碼將在 %d 天後éŽæœŸã€‚"
@@ -569,6 +455,14 @@ msgstr "警告:您的密碼將在 %d 天後éŽæœŸã€‚"
msgid "NIS password could not be changed."
msgstr "無法變更 NIS 密碼。"
+#: modules/pam_unix/pam_unix_passwd.c:563
+msgid "No password has been supplied."
+msgstr "未æ供密碼。"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+msgid "The password has not been changed."
+msgstr "未變更密碼。"
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "您必須é¸æ“‡è¼ƒçŸ­çš„密碼。"
@@ -585,3 +479,80 @@ msgstr "正在更改 %s 的 STRESS 密碼。"
#: modules/pam_unix/pam_unix_passwd.c:722
msgid "You must wait longer to change your password."
msgstr "請您ç¨ç­‰ä¸€é™£å­å¾Œå†è®Šæ›´å¯†ç¢¼ã€‚"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "與舊的密碼相åŒ"
+
+#~ msgid "memory allocation error"
+#~ msgstr "記憶體分é…錯誤"
+
+#~ msgid "is a palindrome"
+#~ msgstr "是一個回文"
+
+#~ msgid "case changes only"
+#~ msgstr "僅變更大å°å¯«"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "與舊的密碼太相似"
+
+#~ msgid "is too simple"
+#~ msgstr "太簡單"
+
+#~ msgid "is rotated"
+#~ msgstr "已旋轉"
+
+#~ msgid "not enough character classes"
+#~ msgstr "字元類別ä¸è¶³"
+
+#~ msgid "contains too many same characters consecutively"
+#~ msgstr "包å«äº†å¤ªå¤šé€£çºŒçš„相åŒå­—å…ƒ"
+
+#~ msgid "contains too long of a monotonic character sequence"
+#~ msgstr "包å«éŽå¤šçš„單調字元åºæ®µ"
+
+#~ msgid "contains the user name in some form"
+#~ msgstr "包å«äº†æŸäº›æ ¼å¼çš„用戶å稱"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "ä¸è‰¯çš„密碼: %s"
+
+#~ msgid "The account is temporarily locked (%ld seconds left)."
+#~ msgstr "帳號被暫時鎖定(剩餘 %ld 秒)。"
+
+#~ msgid "Authentication error"
+#~ msgstr "驗證錯誤"
+
+#~ msgid "Service error"
+#~ msgstr "æœå‹™éŒ¯èª¤"
+
+#~ msgid "Unknown user"
+#~ msgstr "未知的使用者"
+
+#~ msgid "Unknown error"
+#~ msgstr "未知的錯誤"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: ä¸è‰¯çš„號碼æ供至 --reset=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: 未識別的é¸é … %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr "%s: 無法將所有使用者é‡æ–°è¨­å®šç‚ºéžé›¶\n"
+
+#~ msgid "Login Failures Latest failure From\n"
+#~ msgstr "Login Failures Latest failure From\n"
+
+#~ msgid ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [-f rooted-filename] [--file rooted-filename]\n"
+#~ " [-u username] [--user username]\n"
+#~ " [-r] [--reset[=n]] [--quiet]\n"
diff --git a/po/zu.gmo b/po/zu.gmo
index 4affa76d..8f70af4e 100644
--- a/po/zu.gmo
+++ b/po/zu.gmo
Binary files differ
diff --git a/po/zu.po b/po/zu.po
index 1dd2d9ed..023f065a 100644
--- a/po/zu.po
+++ b/po/zu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Linux-PAM\n"
"Report-Msgid-Bugs-To: https://github.com/linux-pam/linux-pam/issues\n"
-"POT-Creation-Date: 2020-06-08 10:18+0000\n"
+"POT-Creation-Date: 2021-07-20 20:00+0000\n"
"PO-Revision-Date: 2020-03-06 23:59+0000\n"
"Last-Translator: Dmitry V. Levin <ldv@altlinux.org>\n"
"Language-Team: Zulu <https://translate.fedoraproject.org/projects/linux-pam/"
@@ -21,21 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 3.11.2\n"
-#: libpam_misc/misc_conv.c:33
-msgid "...Time is running out...\n"
-msgstr "...Isikhathi siyaphela...\n"
-
-#: libpam_misc/misc_conv.c:34
-msgid "...Sorry, your time is up!\n"
-msgstr "...Uxolo, isikhathi sakho sesiphelile!\n"
-
-#: libpam_misc/misc_conv.c:346
-#, c-format
-msgid "erroneous conversation (%d)\n"
-msgstr "ingxoxo enephutha (%d)\n"
-
-#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:178
-#: modules/pam_userdb/pam_userdb.c:55
+#: libpam/pam_get_authtok.c:39 modules/pam_exec/pam_exec.c:181
+#: modules/pam_userdb/pam_userdb.c:53
msgid "Password: "
msgstr "Iphasiwedi: "
@@ -217,99 +204,56 @@ msgstr "Uhlelo ludinga ukubiza i-libpam futhi"
msgid "Unknown PAM error"
msgstr "Iphutha le-PAM elingaziwa"
-#: modules/pam_cracklib/pam_cracklib.c:601
-msgid "is the same as the old one"
-msgstr "iyafana nendala"
-
-#: modules/pam_cracklib/pam_cracklib.c:607
-#: modules/pam_cracklib/pam_cracklib.c:611
-#: modules/pam_cracklib/pam_cracklib.c:621
-msgid "memory allocation error"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:626
-msgid "is a palindrome"
-msgstr "iyi-palindrome"
-
-#: modules/pam_cracklib/pam_cracklib.c:629
-msgid "case changes only"
-msgstr "kushintshe onobumba kuphela"
-
-#: modules/pam_cracklib/pam_cracklib.c:632
-msgid "is too similar to the old one"
-msgstr "ifana kakhulu nendala"
-
-#: modules/pam_cracklib/pam_cracklib.c:635
-msgid "is too simple"
-msgstr "ilula kakhulu"
-
-#: modules/pam_cracklib/pam_cracklib.c:638
-msgid "is rotated"
-msgstr "ijikelezisiwe"
-
-#: modules/pam_cracklib/pam_cracklib.c:641
-msgid "not enough character classes"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:644
-msgid "contains too many same characters consecutively"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:647
-msgid "contains too long of a monotonic character sequence"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:650
-msgid "contains the user name in some form"
-msgstr ""
-
-#: modules/pam_cracklib/pam_cracklib.c:684
-#: modules/pam_unix/pam_unix_passwd.c:563
-#, fuzzy
-msgid "No password has been supplied."
-msgstr "Ayikho iphasiwedi enikeziwe"
+#: libpam_misc/misc_conv.c:33
+msgid "...Time is running out...\n"
+msgstr "...Isikhathi siyaphela...\n"
-#: modules/pam_cracklib/pam_cracklib.c:685
-#: modules/pam_unix/pam_unix_passwd.c:564
-#, fuzzy
-msgid "The password has not been changed."
-msgstr "Iphasiwedi ye-NIS ayivumanga ukushintshwa."
+#: libpam_misc/misc_conv.c:34
+msgid "...Sorry, your time is up!\n"
+msgstr "...Uxolo, isikhathi sakho sesiphelile!\n"
-#: modules/pam_cracklib/pam_cracklib.c:706
-#: modules/pam_cracklib/pam_cracklib.c:788
+#: libpam_misc/misc_conv.c:348
#, c-format
-msgid "BAD PASSWORD: %s"
-msgstr "IPHASIWEDI ENGASEBENZI: %s"
+msgid "erroneous conversation (%d)\n"
+msgstr "ingxoxo enephutha (%d)\n"
-#: modules/pam_exec/pam_exec.c:275
+#: modules/pam_exec/pam_exec.c:279
#, c-format
msgid "%s failed: exit code %d"
msgstr ""
-#: modules/pam_exec/pam_exec.c:284
+#: modules/pam_exec/pam_exec.c:289
#, c-format
msgid "%s failed: caught signal %d%s"
msgstr ""
-#: modules/pam_exec/pam_exec.c:293
+#: modules/pam_exec/pam_exec.c:299
#, c-format
msgid "%s failed: unknown status 0x%x"
msgstr ""
-#: modules/pam_faillock/main.c:104
+#: modules/pam_faillock/main.c:103
#, fuzzy, c-format
msgid ""
"Usage: %s [--dir /path/to/tally-directory] [--user username] [--reset]\n"
msgstr ""
"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-#: modules/pam_faillock/pam_faillock.c:645 modules/pam_tally/pam_tally.c:553
-#: modules/pam_tally2/pam_tally2.c:562
+#: modules/pam_faillock/pam_faillock.c:618
#, c-format
msgid "The account is locked due to %u failed logins."
msgstr ""
-#: modules/pam_faillock/pam_faillock.c:650
+#: modules/pam_faillock/pam_faillock.c:627
+#: modules/pam_faillock/pam_faillock.c:633
+#, c-format
+msgid "(%d minute left to unlock)"
+msgid_plural "(%d minutes left to unlock)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: only used if dngettext is not supported.
+#: modules/pam_faillock/pam_faillock.c:636
#, c-format
msgid "(%d minutes left to unlock)"
msgstr ""
@@ -361,7 +305,7 @@ msgstr[1] ""
msgid "There were %d failed login attempts since the last successful login."
msgstr ""
-#: modules/pam_limits/pam_limits.c:1088
+#: modules/pam_limits/pam_limits.c:1164
#, fuzzy, c-format
msgid "There were too many logins for '%s'."
msgstr "Kuningi kakhulu ukungena kwi- '%s' osekwenziwe."
@@ -403,22 +347,22 @@ msgstr "Unemeyili endala kwifolda %s."
msgid "You have mail in folder %s."
msgstr "Unemeyili kwifolda %s."
-#: modules/pam_mkhomedir/pam_mkhomedir.c:107
+#: modules/pam_mkhomedir/pam_mkhomedir.c:123
#, c-format
msgid "Creating directory '%s'."
msgstr ""
-#: modules/pam_mkhomedir/pam_mkhomedir.c:174
+#: modules/pam_mkhomedir/pam_mkhomedir.c:206
#, c-format
msgid "Unable to create and initialize directory '%s'."
msgstr ""
-#: modules/pam_pwhistory/pam_pwhistory.c:211
+#: modules/pam_pwhistory/pam_pwhistory.c:371
#: modules/pam_unix/pam_unix_passwd.c:589
msgid "Password has been already used. Choose another."
msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye."
-#: modules/pam_pwhistory/pam_pwhistory.c:218
+#: modules/pam_pwhistory/pam_pwhistory.c:378
#, fuzzy
msgid "Password has been already used."
msgstr "Le phasiwedi isetshenziswa ngothile. Khetha enye."
@@ -455,12 +399,12 @@ msgstr "Akuyona indawo yokuphepha esemthethweni"
msgid "A valid context for %s could not be obtained."
msgstr ""
-#: modules/pam_selinux/pam_selinux.c:629
+#: modules/pam_selinux/pam_selinux.c:640
#, fuzzy, c-format
msgid "Security context %s has been assigned."
msgstr "Indawo %s Yokuphepha Yabelwe"
-#: modules/pam_selinux/pam_selinux.c:645
+#: modules/pam_selinux/pam_selinux.c:656
#, fuzzy, c-format
msgid "Key creation context %s has been assigned."
msgstr "Indawo %s Yokuphepha Yabelwe"
@@ -480,65 +424,7 @@ msgstr "Ihlulekile ukwenza i-pam_set_item()\n"
msgid "login: failure forking: %m"
msgstr "ngena: Ihlulekile ukuhlukanisa: %m"
-#: modules/pam_tally/pam_tally.c:528 modules/pam_tally2/pam_tally2.c:580
-#, c-format
-msgid "The account is temporarily locked (%ld seconds left)."
-msgstr ""
-
-#: modules/pam_tally/pam_tally.c:729 modules/pam_tally2/pam_tally2.c:846
-msgid "Authentication error"
-msgstr "Iphutha lokugunyaza"
-
-#: modules/pam_tally/pam_tally.c:730 modules/pam_tally2/pam_tally2.c:847
-msgid "Service error"
-msgstr "Iphutha lesevisi"
-
-#: modules/pam_tally/pam_tally.c:731 modules/pam_tally2/pam_tally2.c:848
-msgid "Unknown user"
-msgstr "Umsebenzisi ongaziwa"
-
-#: modules/pam_tally/pam_tally.c:732 modules/pam_tally2/pam_tally2.c:849
-msgid "Unknown error"
-msgstr "Iphutha elingaziwa"
-
-#: modules/pam_tally/pam_tally.c:751 modules/pam_tally2/pam_tally2.c:871
-#, c-format
-msgid "%s: Bad number given to --reset=\n"
-msgstr "%s: Inombolo eyiphutha enikeziwe ukuba --uqale kabusha=\n"
-
-#: modules/pam_tally/pam_tally.c:755 modules/pam_tally2/pam_tally2.c:875
-#, c-format
-msgid "%s: Unrecognised option %s\n"
-msgstr "%s: Okukhethile okungaziwa %s\n"
-
-#: modules/pam_tally/pam_tally.c:767
-#, c-format
-msgid ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-msgstr ""
-"%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
-
-#: modules/pam_tally/pam_tally.c:841 modules/pam_tally2/pam_tally2.c:1014
-#, c-format
-msgid "%s: Can't reset all users to non-zero\n"
-msgstr ""
-"%s: Ayikwazi ukusetha kabusha bonke abasebenzisi ibase enombolweni ongelona "
-"iqanda\n"
-
-#: modules/pam_tally2/pam_tally2.c:903
-#, c-format
-msgid "Login Failures Latest failure From\n"
-msgstr ""
-
-#: modules/pam_tally2/pam_tally2.c:919
-#, c-format
-msgid ""
-"%s: [-f rooted-filename] [--file rooted-filename]\n"
-" [-u username] [--user username]\n"
-" [-r] [--reset[=n]] [--quiet]\n"
-msgstr ""
-
-#: modules/pam_timestamp/pam_timestamp.c:354
+#: modules/pam_timestamp/pam_timestamp.c:361
#, c-format
msgid "Access has been granted (last access was %ld seconds ago)."
msgstr ""
@@ -566,7 +452,7 @@ msgid ""
msgstr ""
"Kudingeka ukuba ushintshe iphasiwedi yakho ngokushesha (iphasiwedi indala)"
-#: modules/pam_unix/pam_unix_acct.c:265 modules/pam_unix/pam_unix_acct.c:272
+#: modules/pam_unix/pam_unix_acct.c:269 modules/pam_unix/pam_unix_acct.c:276
#, c-format
msgid "Warning: your password will expire in %d day."
msgid_plural "Warning: your password will expire in %d days."
@@ -574,7 +460,7 @@ msgstr[0] ""
msgstr[1] ""
#. TRANSLATORS: only used if dngettext is not supported
-#: modules/pam_unix/pam_unix_acct.c:277
+#: modules/pam_unix/pam_unix_acct.c:281
#, c-format
msgid "Warning: your password will expire in %d days."
msgstr ""
@@ -583,6 +469,16 @@ msgstr ""
msgid "NIS password could not be changed."
msgstr "Iphasiwedi ye-NIS ayivumanga ukushintshwa."
+#: modules/pam_unix/pam_unix_passwd.c:563
+#, fuzzy
+msgid "No password has been supplied."
+msgstr "Ayikho iphasiwedi enikeziwe"
+
+#: modules/pam_unix/pam_unix_passwd.c:564
+#, fuzzy
+msgid "The password has not been changed."
+msgstr "Iphasiwedi ye-NIS ayivumanga ukushintshwa."
+
#: modules/pam_unix/pam_unix_passwd.c:581
msgid "You must choose a shorter password."
msgstr "Kumele ukhethe iphasiwedi emifushane."
@@ -601,3 +497,52 @@ msgstr ""
#, fuzzy
msgid "You must wait longer to change your password."
msgstr "Kumelwe ulinde isikhashana ukuze ushintshe iphasiwedi yakho"
+
+#~ msgid "is the same as the old one"
+#~ msgstr "iyafana nendala"
+
+#~ msgid "is a palindrome"
+#~ msgstr "iyi-palindrome"
+
+#~ msgid "case changes only"
+#~ msgstr "kushintshe onobumba kuphela"
+
+#~ msgid "is too similar to the old one"
+#~ msgstr "ifana kakhulu nendala"
+
+#~ msgid "is too simple"
+#~ msgstr "ilula kakhulu"
+
+#~ msgid "is rotated"
+#~ msgstr "ijikelezisiwe"
+
+#~ msgid "BAD PASSWORD: %s"
+#~ msgstr "IPHASIWEDI ENGASEBENZI: %s"
+
+#~ msgid "Authentication error"
+#~ msgstr "Iphutha lokugunyaza"
+
+#~ msgid "Service error"
+#~ msgstr "Iphutha lesevisi"
+
+#~ msgid "Unknown user"
+#~ msgstr "Umsebenzisi ongaziwa"
+
+#~ msgid "Unknown error"
+#~ msgstr "Iphutha elingaziwa"
+
+#~ msgid "%s: Bad number given to --reset=\n"
+#~ msgstr "%s: Inombolo eyiphutha enikeziwe ukuba --uqale kabusha=\n"
+
+#~ msgid "%s: Unrecognised option %s\n"
+#~ msgstr "%s: Okukhethile okungaziwa %s\n"
+
+#~ msgid ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+#~ msgstr ""
+#~ "%s: [--file rooted-filename] [--user username] [--reset[=n]] [--quiet]\n"
+
+#~ msgid "%s: Can't reset all users to non-zero\n"
+#~ msgstr ""
+#~ "%s: Ayikwazi ukusetha kabusha bonke abasebenzisi ibase enombolweni "
+#~ "ongelona iqanda\n"
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 09b560d0..e143b4bb 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -102,18 +102,21 @@ TESTS = tst-pam_start$(EXEEXT) tst-pam_end$(EXEEXT) \
check_PROGRAMS = $(am__EXEEXT_1) tst-dlopen$(EXEEXT)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -467,6 +470,7 @@ am__set_TESTS_bases = \
bases='$(TEST_LOGS)'; \
bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
TEST_SUITE_LOG = test-suite.log
@@ -511,6 +515,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -524,6 +531,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -543,7 +552,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -590,8 +598,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -602,6 +608,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -651,7 +658,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -659,9 +665,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -671,6 +674,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -1009,7 +1013,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
fi; \
echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
echo "$${col}$$br$${std}"; \
create_testsuite_report --maybe-color; \
echo "$$col$$br$$std"; \
diff --git a/tests/tst-pam_end.c b/tests/tst-pam_end.c
index 93c2fc32..d79df7c6 100644
--- a/tests/tst-pam_end.c
+++ b/tests/tst-pam_end.c
@@ -46,7 +46,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
diff --git a/tests/tst-pam_fail_delay.c b/tests/tst-pam_fail_delay.c
index c4323178..d81c5765 100644
--- a/tests/tst-pam_fail_delay.c
+++ b/tests/tst-pam_fail_delay.c
@@ -46,7 +46,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
diff --git a/tests/tst-pam_get_item.c b/tests/tst-pam_get_item.c
index 2b0cc7e2..c6e3d9fa 100644
--- a/tests/tst-pam_get_item.c
+++ b/tests/tst-pam_get_item.c
@@ -66,7 +66,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
unsigned int i;
diff --git a/tests/tst-pam_getenvlist.c b/tests/tst-pam_getenvlist.c
index d24a9bf9..a1184f1a 100644
--- a/tests/tst-pam_getenvlist.c
+++ b/tests/tst-pam_getenvlist.c
@@ -48,7 +48,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
char **ptr;
diff --git a/tests/tst-pam_set_data.c b/tests/tst-pam_set_data.c
index 9acab6a6..d1eaa3ea 100644
--- a/tests/tst-pam_set_data.c
+++ b/tests/tst-pam_set_data.c
@@ -275,7 +275,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
void *dataptr;
int retval;
diff --git a/tests/tst-pam_set_item.c b/tests/tst-pam_set_item.c
index bd17e11a..3457b49c 100644
--- a/tests/tst-pam_set_item.c
+++ b/tests/tst-pam_set_item.c
@@ -67,7 +67,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
unsigned int i;
diff --git a/tests/tst-pam_start.c b/tests/tst-pam_start.c
index ce013633..8fa18f74 100644
--- a/tests/tst-pam_start.c
+++ b/tests/tst-pam_start.c
@@ -46,7 +46,7 @@ main (void)
{
const char *service = "dummy";
const char *user = "root";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
diff --git a/tests/tst-pam_start_confdir.c b/tests/tst-pam_start_confdir.c
index e40b6e70..f731b2a5 100644
--- a/tests/tst-pam_start_confdir.c
+++ b/tests/tst-pam_start_confdir.c
@@ -50,7 +50,7 @@ main (void)
const char *user = "root";
const char *confdir;
const char *xconfdir = "/nonexistent-confdir";
- struct pam_conv conv;
+ struct pam_conv conv = { NULL, NULL };
pam_handle_t *pamh;
int retval;
diff --git a/xtests/Makefile.am b/xtests/Makefile.am
index 2e942e8d..70f8441e 100644
--- a/xtests/Makefile.am
+++ b/xtests/Makefile.am
@@ -13,7 +13,6 @@ CLEANFILES = *~ $(XTESTS)
EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
tst-pam_dispatch3.pamd tst-pam_dispatch4.pamd \
tst-pam_dispatch5.pamd \
- tst-pam_cracklib1.pamd tst-pam_cracklib2.pamd \
tst-pam_unix1.pamd tst-pam_unix2.pamd tst-pam_unix3.pamd \
tst-pam_unix4.pamd \
tst-pam_unix1.sh tst-pam_unix2.sh tst-pam_unix3.sh \
@@ -40,7 +39,6 @@ EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \
tst-pam_dispatch4 tst-pam_dispatch5 \
- tst-pam_cracklib1 tst-pam_cracklib2 \
tst-pam_unix1 tst-pam_unix2 tst-pam_unix3 tst-pam_unix4 \
tst-pam_access1 tst-pam_access2 tst-pam_access3 \
tst-pam_access4 tst-pam_limits1 tst-pam_succeed_if1 \
diff --git a/xtests/Makefile.in b/xtests/Makefile.in
index 02723870..4f69baee 100644
--- a/xtests/Makefile.in
+++ b/xtests/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -94,18 +94,21 @@ host_triplet = @host@
EXTRA_PROGRAMS = $(am__EXEEXT_1)
subdir = xtests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/japhar_grep_cflags.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/attribute.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/jh_path_xml_catalog.m4 \
$(top_srcdir)/m4/ld-O1.m4 $(top_srcdir)/m4/ld-as-needed.m4 \
- $(top_srcdir)/m4/ld-no-undefined.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/ld-no-undefined.m4 \
+ $(top_srcdir)/m4/ld-z-now.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libprelude.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
- $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/warn_lang_flags.m4 \
+ $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -115,8 +118,7 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__EXEEXT_1 = tst-pam_dispatch1$(EXEEXT) tst-pam_dispatch2$(EXEEXT) \
tst-pam_dispatch3$(EXEEXT) tst-pam_dispatch4$(EXEEXT) \
- tst-pam_dispatch5$(EXEEXT) tst-pam_cracklib1$(EXEEXT) \
- tst-pam_cracklib2$(EXEEXT) tst-pam_unix1$(EXEEXT) \
+ tst-pam_dispatch5$(EXEEXT) tst-pam_unix1$(EXEEXT) \
tst-pam_unix2$(EXEEXT) tst-pam_unix3$(EXEEXT) \
tst-pam_unix4$(EXEEXT) tst-pam_access1$(EXEEXT) \
tst-pam_access2$(EXEEXT) tst-pam_access3$(EXEEXT) \
@@ -159,16 +161,6 @@ tst_pam_authsucceed_OBJECTS = tst-pam_authsucceed.$(OBJEXT)
tst_pam_authsucceed_LDADD = $(LDADD)
tst_pam_authsucceed_DEPENDENCIES = $(top_builddir)/libpam/libpam.la \
$(top_builddir)/libpam_misc/libpam_misc.la
-tst_pam_cracklib1_SOURCES = tst-pam_cracklib1.c
-tst_pam_cracklib1_OBJECTS = tst-pam_cracklib1.$(OBJEXT)
-tst_pam_cracklib1_LDADD = $(LDADD)
-tst_pam_cracklib1_DEPENDENCIES = $(top_builddir)/libpam/libpam.la \
- $(top_builddir)/libpam_misc/libpam_misc.la
-tst_pam_cracklib2_SOURCES = tst-pam_cracklib2.c
-tst_pam_cracklib2_OBJECTS = tst-pam_cracklib2.$(OBJEXT)
-tst_pam_cracklib2_LDADD = $(LDADD)
-tst_pam_cracklib2_DEPENDENCIES = $(top_builddir)/libpam/libpam.la \
- $(top_builddir)/libpam_misc/libpam_misc.la
tst_pam_dispatch1_SOURCES = tst-pam_dispatch1.c
tst_pam_dispatch1_OBJECTS = tst-pam_dispatch1.$(OBJEXT)
tst_pam_dispatch1_LDADD = $(LDADD)
@@ -263,8 +255,6 @@ am__depfiles_remade = ./$(DEPDIR)/tst-pam_access1.Po \
./$(DEPDIR)/tst-pam_access2.Po ./$(DEPDIR)/tst-pam_access3.Po \
./$(DEPDIR)/tst-pam_access4.Po ./$(DEPDIR)/tst-pam_authfail.Po \
./$(DEPDIR)/tst-pam_authsucceed.Po \
- ./$(DEPDIR)/tst-pam_cracklib1.Po \
- ./$(DEPDIR)/tst-pam_cracklib2.Po \
./$(DEPDIR)/tst-pam_dispatch1.Po \
./$(DEPDIR)/tst-pam_dispatch2.Po \
./$(DEPDIR)/tst-pam_dispatch3.Po \
@@ -297,20 +287,18 @@ am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = tst-pam_access1.c tst-pam_access2.c tst-pam_access3.c \
tst-pam_access4.c tst-pam_authfail.c tst-pam_authsucceed.c \
- tst-pam_cracklib1.c tst-pam_cracklib2.c tst-pam_dispatch1.c \
- tst-pam_dispatch2.c tst-pam_dispatch3.c tst-pam_dispatch4.c \
- tst-pam_dispatch5.c tst-pam_group1.c tst-pam_limits1.c \
- tst-pam_motd.c tst-pam_pwhistory1.c tst-pam_succeed_if1.c \
- tst-pam_time1.c tst-pam_unix1.c tst-pam_unix2.c \
- tst-pam_unix3.c tst-pam_unix4.c
+ tst-pam_dispatch1.c tst-pam_dispatch2.c tst-pam_dispatch3.c \
+ tst-pam_dispatch4.c tst-pam_dispatch5.c tst-pam_group1.c \
+ tst-pam_limits1.c tst-pam_motd.c tst-pam_pwhistory1.c \
+ tst-pam_succeed_if1.c tst-pam_time1.c tst-pam_unix1.c \
+ tst-pam_unix2.c tst-pam_unix3.c tst-pam_unix4.c
DIST_SOURCES = tst-pam_access1.c tst-pam_access2.c tst-pam_access3.c \
tst-pam_access4.c tst-pam_authfail.c tst-pam_authsucceed.c \
- tst-pam_cracklib1.c tst-pam_cracklib2.c tst-pam_dispatch1.c \
- tst-pam_dispatch2.c tst-pam_dispatch3.c tst-pam_dispatch4.c \
- tst-pam_dispatch5.c tst-pam_group1.c tst-pam_limits1.c \
- tst-pam_motd.c tst-pam_pwhistory1.c tst-pam_succeed_if1.c \
- tst-pam_time1.c tst-pam_unix1.c tst-pam_unix2.c \
- tst-pam_unix3.c tst-pam_unix4.c
+ tst-pam_dispatch1.c tst-pam_dispatch2.c tst-pam_dispatch3.c \
+ tst-pam_dispatch4.c tst-pam_dispatch5.c tst-pam_group1.c \
+ tst-pam_limits1.c tst-pam_motd.c tst-pam_pwhistory1.c \
+ tst-pam_succeed_if1.c tst-pam_time1.c tst-pam_unix1.c \
+ tst-pam_unix2.c tst-pam_unix3.c tst-pam_unix4.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -356,6 +344,9 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPT_CFLAGS = @CRYPT_CFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -369,6 +360,8 @@ ECONF_CFLAGS = @ECONF_CFLAGS@
ECONF_LIBS = @ECONF_LIBS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+EXE_CFLAGS = @EXE_CFLAGS@
+EXE_LDFLAGS = @EXE_LDFLAGS@
FGREP = @FGREP@
FO2PDF = @FO2PDF@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
@@ -388,7 +381,6 @@ LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
LIBAUDIT = @LIBAUDIT@
-LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBDB = @LIBDB@
LIBDL = @LIBDL@
@@ -435,8 +427,6 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
-PIE_CFLAGS = @PIE_CFLAGS@
-PIE_LDFLAGS = @PIE_LDFLAGS@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
@@ -447,6 +437,7 @@ SECUREDIR = @SECUREDIR@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+STRINGPARAM_HMAC = @STRINGPARAM_HMAC@
STRINGPARAM_VENDORDIR = @STRINGPARAM_VENDORDIR@
STRIP = @STRIP@
TIRPC_CFLAGS = @TIRPC_CFLAGS@
@@ -496,7 +487,6 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
-libc_cv_fpie = @libc_cv_fpie@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
@@ -504,9 +494,6 @@ localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
-pam_cv_ld_O1 = @pam_cv_ld_O1@
-pam_cv_ld_as_needed = @pam_cv_ld_as_needed@
-pam_cv_ld_no_undefined = @pam_cv_ld_no_undefined@
pam_xauth_path = @pam_xauth_path@
pdfdir = @pdfdir@
prefix = @prefix@
@@ -516,6 +503,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
+systemdunitdir = @systemdunitdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
@@ -531,7 +519,6 @@ CLEANFILES = *~ $(XTESTS)
EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
tst-pam_dispatch3.pamd tst-pam_dispatch4.pamd \
tst-pam_dispatch5.pamd \
- tst-pam_cracklib1.pamd tst-pam_cracklib2.pamd \
tst-pam_unix1.pamd tst-pam_unix2.pamd tst-pam_unix3.pamd \
tst-pam_unix4.pamd \
tst-pam_unix1.sh tst-pam_unix2.sh tst-pam_unix3.sh \
@@ -558,7 +545,6 @@ EXTRA_DIST = run-xtests.sh tst-pam_dispatch1.pamd tst-pam_dispatch2.pamd \
XTESTS = tst-pam_dispatch1 tst-pam_dispatch2 tst-pam_dispatch3 \
tst-pam_dispatch4 tst-pam_dispatch5 \
- tst-pam_cracklib1 tst-pam_cracklib2 \
tst-pam_unix1 tst-pam_unix2 tst-pam_unix3 tst-pam_unix4 \
tst-pam_access1 tst-pam_access2 tst-pam_access3 \
tst-pam_access4 tst-pam_limits1 tst-pam_succeed_if1 \
@@ -626,14 +612,6 @@ tst-pam_authsucceed$(EXEEXT): $(tst_pam_authsucceed_OBJECTS) $(tst_pam_authsucce
@rm -f tst-pam_authsucceed$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(tst_pam_authsucceed_OBJECTS) $(tst_pam_authsucceed_LDADD) $(LIBS)
-tst-pam_cracklib1$(EXEEXT): $(tst_pam_cracklib1_OBJECTS) $(tst_pam_cracklib1_DEPENDENCIES) $(EXTRA_tst_pam_cracklib1_DEPENDENCIES)
- @rm -f tst-pam_cracklib1$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(tst_pam_cracklib1_OBJECTS) $(tst_pam_cracklib1_LDADD) $(LIBS)
-
-tst-pam_cracklib2$(EXEEXT): $(tst_pam_cracklib2_OBJECTS) $(tst_pam_cracklib2_DEPENDENCIES) $(EXTRA_tst_pam_cracklib2_DEPENDENCIES)
- @rm -f tst-pam_cracklib2$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(tst_pam_cracklib2_OBJECTS) $(tst_pam_cracklib2_LDADD) $(LIBS)
-
tst-pam_dispatch1$(EXEEXT): $(tst_pam_dispatch1_OBJECTS) $(tst_pam_dispatch1_DEPENDENCIES) $(EXTRA_tst_pam_dispatch1_DEPENDENCIES)
@rm -f tst-pam_dispatch1$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(tst_pam_dispatch1_OBJECTS) $(tst_pam_dispatch1_LDADD) $(LIBS)
@@ -706,8 +684,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_access4.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_authfail.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_authsucceed.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_cracklib1.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_cracklib2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_dispatch1.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_dispatch2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tst-pam_dispatch3.Po@am__quote@ # am--include-marker
@@ -888,8 +864,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/tst-pam_access4.Po
-rm -f ./$(DEPDIR)/tst-pam_authfail.Po
-rm -f ./$(DEPDIR)/tst-pam_authsucceed.Po
- -rm -f ./$(DEPDIR)/tst-pam_cracklib1.Po
- -rm -f ./$(DEPDIR)/tst-pam_cracklib2.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch1.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch2.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch3.Po
@@ -956,8 +930,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/tst-pam_access4.Po
-rm -f ./$(DEPDIR)/tst-pam_authfail.Po
-rm -f ./$(DEPDIR)/tst-pam_authsucceed.Po
- -rm -f ./$(DEPDIR)/tst-pam_cracklib1.Po
- -rm -f ./$(DEPDIR)/tst-pam_cracklib2.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch1.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch2.Po
-rm -f ./$(DEPDIR)/tst-pam_dispatch3.Po
diff --git a/xtests/tst-pam_cracklib1.c b/xtests/tst-pam_cracklib1.c
deleted file mode 100644
index 1a219c83..00000000
--- a/xtests/tst-pam_cracklib1.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, and the entire permission notice in its entirety,
- * including the disclaimer of warranties.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * ALTERNATIVELY, this product may be distributed under the terms of
- * the GNU Public License, in which case the provisions of the GPL are
- * required INSTEAD OF the above restrictions. (This clause is
- * necessary due to a potential bad interaction between the GPL and
- * the restrictions contained in a BSD-style copyright.)
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <security/pam_appl.h>
-
-/* A conversation function which uses an internally-stored value for
- the responses. */
-static int
-fake_conv (int num_msg, const struct pam_message **msgm UNUSED,
- struct pam_response **response, void *appdata_ptr UNUSED)
-{
- static int calls = 0;
- struct pam_response *reply;
- int count;
-
- /* Sanity test. */
- if (num_msg <= 0)
- return PAM_CONV_ERR;
-
- /* Allocate memory for the responses. */
- reply = calloc (num_msg, sizeof (struct pam_response));
- if (reply == NULL)
- return PAM_CONV_ERR;
-
- /* Each prompt elicits the same response. */
- for (count = 0; count < num_msg; ++count)
- {
- reply[count].resp_retcode = 0;
- /* first call get a password, second one NULL */
- if (calls)
- reply[count].resp = NULL;
- else
- {
- ++calls;
- reply[count].resp = strdup ("Kindergarten");
- }
- }
-
- /* Set the pointers in the response structure and return. */
- *response = reply;
- return PAM_SUCCESS;
-}
-
-static struct pam_conv conv = {
- fake_conv,
- NULL
-};
-
-
-/* Check that pam_cracklib does not seg.fault on empty passwords. */
-
-int
-main(int argc, char *argv[])
-{
- pam_handle_t *pamh=NULL;
- const char *user="root";
- int retval;
- int debug = 0;
-
- if (argc > 1 && strcmp (argv[1], "-d") == 0)
- debug = 1;
-
- retval = pam_start("tst-pam_cracklib1", user, &conv, &pamh);
- if (retval != PAM_SUCCESS)
- {
- if (debug)
- fprintf (stderr, "cracklib1: pam_start returned %d\n", retval);
- return 1;
- }
-
- /* Try one, first input is correct, second is NULL */
- retval = pam_chauthtok (pamh, 0);
- if (retval != PAM_AUTHTOK_ERR)
- {
- if (debug)
- fprintf (stderr, "cracklib1-1: pam_chauthtok returned %d\n", retval);
- return 1;
- }
-
- /* Try two, second input is NULL */
- retval = pam_chauthtok (pamh, 0);
- if (retval != PAM_AUTHTOK_ERR)
- {
- if (debug)
- fprintf (stderr, "cracklib1-2: pam_chauthtok returned %d\n", retval);
- return 1;
- }
-
-
- retval = pam_end (pamh,retval);
- if (retval != PAM_SUCCESS)
- {
- if (debug)
- fprintf (stderr, "cracklib1: pam_end returned %d\n", retval);
- return 1;
- }
- return 0;
-}
diff --git a/xtests/tst-pam_cracklib1.pamd b/xtests/tst-pam_cracklib1.pamd
deleted file mode 100644
index 41a9188d..00000000
--- a/xtests/tst-pam_cracklib1.pamd
+++ /dev/null
@@ -1,2 +0,0 @@
-#%PAM-1.0
-password required pam_cracklib.so
diff --git a/xtests/tst-pam_cracklib2.c b/xtests/tst-pam_cracklib2.c
deleted file mode 100644
index 84b4ef64..00000000
--- a/xtests/tst-pam_cracklib2.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, and the entire permission notice in its entirety,
- * including the disclaimer of warranties.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * ALTERNATIVELY, this product may be distributed under the terms of
- * the GNU Public License, in which case the provisions of the GPL are
- * required INSTEAD OF the above restrictions. (This clause is
- * necessary due to a potential bad interaction between the GPL and
- * the restrictions contained in a BSD-style copyright.)
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* This test case checks
- Patch 1688777: pam_cracklib support for minimum character classes */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <security/pam_appl.h>
-
-int debug = 0;
-
-/* A conversation function which uses an internally-stored value for
- the responses. */
-static int
-fake_conv (int num_msg, const struct pam_message **msgm,
- struct pam_response **response, void *appdata_ptr UNUSED)
-{
- static int calls = 0;
- struct pam_response *reply;
- int count;
-
- /* Sanity test. */
- if (num_msg <= 0)
- return PAM_CONV_ERR;
-
- /* Allocate memory for the responses. */
- reply = calloc (num_msg, sizeof (struct pam_response));
- if (reply == NULL)
- return PAM_CONV_ERR;
-
- /* Each prompt elicits the same response. */
- for (count = 0; count < num_msg; ++count)
- {
- if (debug)
- fprintf(stderr,"Query: %s\n", (*msgm)[count].msg);
- reply[count].resp_retcode = 0;
- /* first tow calls get a correct password, second a too
- easy one. */
- if (calls > 1)
- reply[count].resp = strdup ("too easy");
- else
- {
- ++calls;
- reply[count].resp = strdup ("1a9C*8dK");
- }
- if (debug)
- fprintf(stderr,"Response: %s\n", reply[count].resp);
- }
-
- /* Set the pointers in the response structure and return. */
- *response = reply;
- return PAM_SUCCESS;
-}
-
-static struct pam_conv conv = {
- fake_conv,
- NULL
-};
-
-
-int
-main(int argc, char *argv[])
-{
- pam_handle_t *pamh=NULL;
- const char *user="root";
- int retval;
-
- if (argc > 1 && strcmp (argv[1], "-d") == 0)
- debug = 1;
-
- retval = pam_start("tst-pam_cracklib2", user, &conv, &pamh);
- if (retval != PAM_SUCCESS)
- {
- if (debug)
- fprintf (stderr, "cracklib2: pam_start returned %d\n", retval);
- return 1;
- }
-
- /* Try one, first input is correct */
- retval = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
- if (retval != PAM_SUCCESS)
- {
- if (debug)
- fprintf (stderr, "cracklib2-1: pam_chauthtok returned %d\n", retval);
- return 1;
- }
-
- /* Try two, second input is wrong */
- retval = pam_chauthtok (pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
- if (retval != PAM_AUTHTOK_ERR)
- {
- if (debug)
- fprintf (stderr, "cracklib2-2: pam_chauthtok returned %d\n", retval);
- return 1;
- }
-
-
- retval = pam_end (pamh,retval);
- if (retval != PAM_SUCCESS)
- {
- if (debug)
- fprintf (stderr, "cracklib2: pam_end returned %d\n", retval);
- return 1;
- }
- return 0;
-}
diff --git a/xtests/tst-pam_cracklib2.pamd b/xtests/tst-pam_cracklib2.pamd
deleted file mode 100644
index 5915aecd..00000000
--- a/xtests/tst-pam_cracklib2.pamd
+++ /dev/null
@@ -1,2 +0,0 @@
-#%PAM-1.0
-password required pam_cracklib.so minclass=4