diff options
489 files changed, 19433 insertions, 28341 deletions
@@ -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) @@ -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 @@ -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 @@ -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/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='[0;31m'; \ - grn='[0;32m'; \ - lgn='[1;32m'; \ - blu='[1;34m'; \ - mgn='[0;35m'; \ - brg='[1m'; \ - std='[m'; \ - 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 >= 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 < 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 >= 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 < 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 >= 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 < 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 >= 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 < 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 <gafton@redhat.com> - </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 <savrus@mexmat.net>. </para> <para> - 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>. </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 <morgan@linux.kernel.org>. + The man page for pam_stress was written by + Lucas Ramage <ramage.lucas@protonmail.com>. + </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='[0;31m'; \ - grn='[0;32m'; \ - lgn='[1;32m'; \ - blu='[1;34m'; \ - mgn='[0;35m'; \ - brg='[1m'; \ - std='[m'; \ - 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='[0;31m'; \ - grn='[0;32m'; \ - lgn='[1;32m'; \ - blu='[1;34m'; \ - mgn='[0;35m'; \ - brg='[1m'; \ - std='[m'; \ - 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 @@ -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." @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" @@ -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 "" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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 Binary files differindex aca51432..60578a7e 100644 --- a/po/bn_IN.gmo +++ b/po/bn_IN.gmo 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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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." @@ -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." Binary files differ@@ -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 "" Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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 "უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ" Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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 "" @@ -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." @@ -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." @@ -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." @@ -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." Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" @@ -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." @@ -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." Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" Binary files differ@@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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 Binary files differindex 63b46195..524bfe9e 100644 --- a/po/pt_BR.gmo +++ b/po/pt_BR.gmo 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" Binary files differ@@ -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." Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." @@ -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." Binary files differ@@ -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 Binary files differindex ce08261d..1a05b4d3 100644 --- a/po/sr@latin.gmo +++ b/po/sr@latin.gmo 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" Binary files differ@@ -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" Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." @@ -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." Binary files differ@@ -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" Binary files differ@@ -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" @@ -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." Binary files differ@@ -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" @@ -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 Binary files differindex c6fc6b26..8b45db8b 100644 --- a/po/zh_CN.gmo +++ b/po/zh_CN.gmo 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 Binary files differindex 7b8f491b..40d376af 100644 --- a/po/zh_TW.gmo +++ b/po/zh_TW.gmo 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" Binary files differ@@ -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 |