diff options
author | Todd C. Miller <Todd.Miller@sudo.ws> | 2021-09-09 12:25:13 -0600 |
---|---|---|
committer | Todd C. Miller <Todd.Miller@sudo.ws> | 2021-09-09 12:25:13 -0600 |
commit | 8a7eb15dafad519860fc41c2baa1224bf3fcac84 (patch) | |
tree | 90067c4b7e8247fd6d8ff06bb26a029ba46901b6 | |
parent | cd90b5d6b6b2334d753f855c0f75a425057a2212 (diff) | |
parent | c419b5ba270a4673ac6e9ab6eaaa426b95cbffbd (diff) | |
download | sudo-8a7eb15dafad519860fc41c2baa1224bf3fcac84.tar.gz |
Merge sudo 1.9.8 from tipSUDO_1_9_8
204 files changed, 28235 insertions, 16571 deletions
diff --git a/.clang-format b/.clang-format index cdb6710e1..4e850b8ba 100644 --- a/.clang-format +++ b/.clang-format @@ -8,7 +8,7 @@ BreakBeforeBinaryOperators: None ColumnLimit: 80 IndentWidth: 4 ContinuationIndentWidth: 8 -ForEachMacros: +ForEachMacros: - HLTQ_FOREACH - HLTQ_FOREACH_REVERSE - HLTQ_FOREACH_REVERSE_SAFE diff --git a/.gitignore b/.gitignore index b47cb5879..3bd5b3552 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ src/sudo src/sesh src/check_noexec src/check_ttyname +src/intercept.exp src/sudo_usage.h lib/eventlog/check_wrap @@ -51,7 +52,9 @@ lib/iolog/fuzz_iolog_[a-z]* lib/iolog/host_port_test lib/util/mksiglist +lib/util/mksiglist.h lib/util/mksigname +lib/util/mksigname.h lib/util/siglist.c lib/util/signame.c lib/util/util.exp @@ -37,6 +37,7 @@ Makefile$ ^src/sudo$ ^src/sesh$ ^src/check_(noexec|ttyname)$ +^src/intercept\.exp$ ^src/sudo_usage\.h$ ^lib/eventlog/check_wrap$ @@ -47,7 +48,9 @@ Makefile$ ^lib/iolog/host_port_test$ ^lib/util/mksiglist$ +^lib/util/mksiglist.h$ ^lib/util/mksigname$ +^lib/util/mksigname.h$ ^lib/util/siglist\.c$ ^lib/util/signame\.c$ ^lib/util/util\.exp$ @@ -257,8 +257,8 @@ Compilation options: policy and I/O logging plugins. If the --disable-shared option is specified, this support is disabled and the default sudoers policy and I/O plugins are embedded in the sudo - binary itself. This will also disable the noexec option - as it too relies on dynamic shared object support. + binary itself. This will also disable the intercept and noexec + options as they also rely on dynamic shared object support. --disable-shared-libutil Disable the use of the dynamic libsudo_util library. By @@ -274,8 +274,8 @@ Compilation options: dynamic shared object. When the --enable-static-sudoers option is specified, the sudoers plugin is compiled directly into the sudo binary. Unlike --disable-shared, this does - not prevent other plugins from being used and the noexec - option will continue to function. + not prevent other plugins from being used and the intercept + and noexec options will continue to function. --enable-tmpfiles.d=DIR Set the directory to be used when installing the sudo @@ -381,18 +381,33 @@ Optional features: not work, which may be the case on some SysV-based OS's using STREAMS. + --enable-intercept[=PATH] + Enable support for the "intercept" functionality which + allows sudo to perform a policy check when a dynamically-linked + program run by sudo attempts to execute another program. + This is also used to support the "log_subcmds" sudoers + setting. For example, this means that for a shell run + through sudo, the individual commands run by the shell are + also subject to rules in the sudoers file. Please see the + "Preventing Shell Escapes" section in the sudoers man page + for details. If specified, PATH should be a fully qualified + path name, e.g. /usr/local/libexec/sudo/sudo_intercept.so. + If PATH is "no", intercept support will not be compiled in. + The default is to compile intercept support if libtool + supports building shared objects on your system. + --with-noexec[=PATH] Enable support for the "noexec" functionality which prevents a dynamically-linked program being run by sudo from executing another program (think shell escapes). Please see the - "PREVENTING SHELL ESCAPES" section in the sudoers man page + "Preventing Shell Escapes" section in the sudoers man page for details. If specified, PATH should be a fully qualified path name, e.g. /usr/local/libexec/sudo/sudo_noexec.so. If PATH is "no", noexec support will not be compiled in. The default is to compile noexec support if libtool supports building - shared objects on your OS. + shared objects on your system. - --with-selinux + --with-selinux Enable support for role based access control (RBAC) on systems that support SELinux. @@ -81,6 +81,7 @@ include/compat/nss_dbdefs.h include/compat/sha2.h include/compat/stdbool.h include/hostcheck.h +include/intercept.pb-c.h include/log_server.pb-c.h include/protobuf-c/protobuf-c.h include/sudo_compat.h @@ -156,7 +157,7 @@ lib/iolog/regress/fuzz/fuzz_iolog_json.c lib/iolog/regress/fuzz/fuzz_iolog_json.dict lib/iolog/regress/fuzz/fuzz_iolog_legacy.c lib/iolog/regress/fuzz/fuzz_iolog_timing.c -lib/iolog/regress/host_port/host_port_test.c +lib/iolog/regress/host_port/host_port_test.c lib/iolog/regress/iolog_json/check_iolog_json.c lib/iolog/regress/iolog_json/test1.in lib/iolog/regress/iolog_json/test2.in @@ -169,7 +170,8 @@ lib/iolog/regress/iolog_timing/check_iolog_timing.c lib/logsrv/Makefile.in lib/logsrv/log_server.pb-c.c lib/logsrv/log_server.proto -lib/logsrv/protobuf-c.c +lib/protobuf-c/Makefile.in +lib/protobuf-c/protobuf-c.c lib/util/Makefile.in lib/util/aix.c lib/util/arc4random.c @@ -215,9 +217,7 @@ lib/util/logpri.c lib/util/memrchr.c lib/util/mkdir_parents.c lib/util/mksiglist.c -lib/util/mksiglist.h lib/util/mksigname.c -lib/util/mksigname.h lib/util/mktemp.c lib/util/nanosleep.c lib/util/openat.c @@ -285,7 +285,7 @@ lib/util/regress/sudo_parseln/test5.out.ok lib/util/regress/sudo_parseln/test6.in lib/util/regress/sudo_parseln/test6.out.ok lib/util/regress/tailq/hltq_test.c -lib/util/regress/vsyslog/vsyslog_test.c +lib/util/regress/uuid/uuid_test.c lib/util/roundup.c lib/util/secure_path.c lib/util/setgroups.c @@ -307,6 +307,8 @@ lib/util/strtonum.c lib/util/sudo_conf.c lib/util/sudo_debug.c lib/util/sudo_dso.c +lib/util/sys_siglist.h +lib/util/sys_signame.h lib/util/term.c lib/util/ttyname_dev.c lib/util/ttysize.c @@ -314,7 +316,6 @@ lib/util/unlinkat.c lib/util/util.exp.in lib/util/utimens.c lib/util/uuid.c -lib/util/vsyslog.c lib/zlib/Makefile.in lib/zlib/adler32.c lib/zlib/compress.c @@ -372,6 +373,7 @@ m4/ax_check_compile_flag.m4 m4/ax_check_link_flag.m4 m4/ax_func_getaddrinfo.m4 m4/ax_func_snprintf.m4 +m4/ax_prog_cc_for_build.m4 m4/libtool.m4 m4/ltoptions.m4 m4/ltsugar.m4 @@ -1103,11 +1105,16 @@ src/edit_open.c src/env_hooks.c src/exec.c src/exec_common.c +src/exec_intercept.c src/exec_monitor.c src/exec_nopty.c +src/exec_preload.c src/exec_pty.c src/get_pty.c src/hooks.c +src/intercept.exp.in +src/intercept.pb-c.c +src/intercept.proto src/limits.c src/load_plugins.c src/net_ifs.c @@ -1127,6 +1134,8 @@ src/sudo.h src/sudo_edit.c src/sudo_edit.h src/sudo_exec.h +src/sudo_intercept.c +src/sudo_intercept_common.c src/sudo_noexec.c src/sudo_plugin_int.h src/sudo_usage.h.in diff --git a/Makefile.in b/Makefile.in index b8c450295..e004280bc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -56,10 +56,10 @@ shlib_mode = @SHLIB_MODE@ # Version of python detected by configure (major.minor) python_version = @PYTHON_VERSION@ -SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/fuzzstub lib/iolog @LOGSRV_SRC@ \ - @LOGSRVD_SRC@ plugins/audit_json plugins/group_file \ - plugins/sample_approval plugins/sudoers plugins/system_group \ - @PYTHON_PLUGIN_SRC@ src include doc examples +SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/fuzzstub lib/iolog \ + lib/protobuf-c @LOGSRV_SRC@ @LOGSRVD_SRC@ plugins/audit_json \ + plugins/group_file plugins/sample_approval plugins/sudoers \ + plugins/system_group @PYTHON_PLUGIN_SRC@ src include doc examples SAMPLES = plugins/sample @@ -213,9 +213,9 @@ depend: siglist.c signame.c lib/util/Makefile.in lib/zlib/Makefile.in \ lib/fuzzstub/Makefile.in lib/eventlog/Makefile.in \ lib/iolog/Makefile.in lib/logsrv/Makefile.in logsrvd/Makefile.in \ - plugins/group_file/Makefile.in plugins/sample/Makefile.in \ - plugins/sudoers/Makefile.in plugins/system_group/Makefile.in \ - plugins/python/Makefile.in \ + lib/protobuf-c/Makefile.in plugins/group_file/Makefile.in \ + plugins/sample/Makefile.in plugins/sudoers/Makefile.in \ + plugins/system_group/Makefile.in plugins/python/Makefile.in \ src/Makefile.in && \ $(top_builddir)/config.status --file $(top_builddir)/lib/util/Makefile \ --file $(top_builddir)/lib/zlib/Makefile \ @@ -223,6 +223,7 @@ depend: siglist.c signame.c --file $(top_builddir)/lib/fuzzstub/Makefile \ --file $(top_builddir)/lib/iolog/Makefile \ --file $(top_builddir)/lib/logsrv/Makefile \ + --file $(top_builddir)/lib/protobuf-c/Makefile \ --file $(top_builddir)/logsrvd/Makefile \ --file $(top_builddir)/plugins/sample/Makefile \ --file $(top_builddir)/plugins/group_file/Makefile \ @@ -1,3 +1,66 @@ +What's new in Sudo 1.9.8 + + * It is now possible to transparently intercepting sub-commands + executed by the original command run via sudo. Intercept support + is implemented using LD_PRELOAD (or the equivalent supported by + the system) and so has some limitations. The two main limitations + are that only dynamic executables are supported and only the + execl, execle, execlp, execv, execve, execvp, and execvpe library + functions are currently intercepted. Its main use case is to + support restricting privileged shells run via sudo. + + To support this, there is a new "intercept" Defaults setting and + an INTERCEPT command tag that can be used in sudoers. For example: + + Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh + Defaults!SHELLS intercept + + would cause sudo to run the listed shells in intercept mode. + This can also be set on a per-rule basis. For example: + + Cmnd_Alias SHELLS=/bin/bash, /bin/sh, /bin/csh, /bin/ksh, /bin/zsh + chuck ALL = INTERCEPT: SHELLS + + would only apply intercept mode to user "chuck" when running one + of the listed shells. + + In intercept mode, sudo will not prompt for a password before + running a sub-command and will not allow a set-user-ID or + set-group-ID program to be run by default. The new + intercept_authenticate and intercept_allow_setid sudoers settings + can be used to change this behavior. + + * The new "log_subcmds" sudoers setting can be used to log additional + commands run in a privileged shell. It uses the same mechanism as + the intercept support described above and has the same limitations. + + * Support for logging sudo_logsrvd errors via syslog or to a file. + Previously, most sudo_logsrvd errors were only visible in the + debug log. + + * Better diagnostics when there is a TLS certificate validation error. + + * Using the "+=" or "-=" operators in a Defaults setting that takes + a string, not a list, now produces a warning from sudo and a + syntax error from inside visudo. + + * Fixed a bug where the "iolog_mode" setting in sudoers and sudo_logsrvd + had no effect when creating I/O log parent directories if the I/O log + file name ended with the string "XXXXXX". + + * Fixed a bug in the sudoers custom prompt code where the size + parameter that was passed to the strlcpy() function was incorrect. + No overflow was possible since the correct amount of memory was + already pre-allocated. + + * The mksigname and mksiglist helper programs are now built with + the host compiler, not the target compiler, when cross-compiling. + Bug #989. + + * Fixed compilation error when the --enable-static-sudoers configure + option was specified. This was due to a typo introduced in sudo + 1.9.7. GitHub PR #113. + What's new in Sudo 1.9.7p2 * When formatting JSON output, octal numbers are now stored as diff --git a/aclocal.m4 b/aclocal.m4 index a2058192c..d636ead69 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -17,6 +17,7 @@ m4_include([m4/ax_check_compile_flag.m4]) m4_include([m4/ax_check_link_flag.m4]) m4_include([m4/ax_func_getaddrinfo.m4]) m4_include([m4/ax_func_snprintf.m4]) +m4_include([m4/ax_prog_cc_for_build.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) diff --git a/autogen.sh b/autogen.sh index 0037c6005..d844cd935 100755 --- a/autogen.sh +++ b/autogen.sh @@ -4,10 +4,10 @@ # If the user hasn't chosen one themselves, we do here. if [ "`/usr/bin/uname 2>&1`" = "OpenBSD" ]; then if [ X"$AUTOMAKE_VERSION" = X"" ]; then - AUTOMAKE_VERSION=1.16; export AUTOMAKE_VERSION + AUTOMAKE_VERSION=1.16; export AUTOMAKE_VERSION fi if [ X"$AUTOCONF_VERSION" = X"" ]; then - AUTOCONF_VERSION=2.69; export AUTOCONF_VERSION + AUTOCONF_VERSION=2.69; export AUTOCONF_VERSION fi fi diff --git a/config.h.in b/config.h.in index 22f8d55e0..c22bdd7f5 100644 --- a/config.h.in +++ b/config.h.in @@ -129,6 +129,10 @@ don't. */ #undef HAVE_DECL_GETRESUID +/* Define to 1 if you have the declaration of `getusershell', and to 0 if you + don't. */ +#undef HAVE_DECL_GETUSERSHELL + /* Define to 1 if you have the declaration of `h_errno', and to 0 if you don't. */ #undef HAVE_DECL_H_ERRNO @@ -149,6 +153,14 @@ don't. */ #undef HAVE_DECL_PATH_MAX +/* Define to 1 if you have the declaration of `pread64', and to 0 if you + don't. */ +#undef HAVE_DECL_PREAD64 + +/* Define to 1 if you have the declaration of `pwrite64', and to 0 if you + don't. */ +#undef HAVE_DECL_PWRITE64 + /* Define to 1 if you have the declaration of `QUAD_MAX', and to 0 if you don't. */ #undef HAVE_DECL_QUAD_MAX @@ -298,7 +310,7 @@ /* Define to 1 if you have the `freezero' function. */ #undef HAVE_FREEZERO -/* Define to 1 if you have the `fseeko' function. */ +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO /* Define to 1 if you have the `fstatat' function. */ @@ -647,6 +659,9 @@ /* Define to 1 if you have the `pread' function. */ #undef HAVE_PREAD +/* Define to 1 if you have the `pread64' function. */ +#undef HAVE_PREAD64 + /* Define to 1 if you have the `priv_set' function. */ #undef HAVE_PRIV_SET @@ -674,6 +689,9 @@ /* Define to 1 if you have the `pwrite' function. */ #undef HAVE_PWRITE +/* Define to 1 if you have the `pwrite64' function. */ +#undef HAVE_PWRITE64 + /* Define to 1 if you have the `pw_dup' function. */ #undef HAVE_PW_DUP @@ -970,9 +988,6 @@ /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF -/* Define to 1 if you have the `vsyslog' function. */ -#undef HAVE_VSYSLOG - /* Define to 1 if you have the <wchar.h> header file. */ #undef HAVE_WCHAR_H @@ -1329,6 +1344,9 @@ /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for sudo 1.9.7p2. +# Generated by GNU Autoconf 2.71 for sudo 1.9.8. # # Report bugs to <https://bugzilla.sudo.ws/>. # @@ -621,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.9.7p2' -PACKAGE_STRING='sudo 1.9.7p2' +PACKAGE_VERSION='1.9.8' +PACKAGE_STRING='sudo 1.9.8' PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/' PACKAGE_URL='' @@ -709,6 +709,14 @@ host_os host_vendor host_cpu host +LDFLAGS_FOR_BUILD +CPPFLAGS_FOR_BUILD +CFLAGS_FOR_BUILD +BUILD_OBJEXT +BUILD_EXEEXT +CPP_FOR_BUILD +ac_ct_CC_FOR_BUILD +CC_FOR_BUILD build_os build_vendor build_cpu @@ -763,6 +771,7 @@ relay_dir logpath log_dir iolog_dir +INTERCEPT_EXP FUZZ_LD FUZZ_ENGINE PPFILES @@ -808,14 +817,18 @@ LDAP SELINUX_USAGE BSDAUTH_USAGE DONT_LEAK_PATH_INFO -NOEXEC_MODULE -CHECK_NOEXEC +PRELOAD_MODULE +CHECK_INTERCEPT INSTALL_NOEXEC +INSTALL_INTERCEPT INSTALL_BACKUP sesh_file noexec_file NOEXECDIR NOEXECFILE +intercept_file +INTERCEPTDIR +INTERCEPTFILE mansectform mansectsu devdir @@ -1041,6 +1054,7 @@ with_gnu_ld with_sysroot enable_libtool_lock with_libtool +enable_intercept with_noexec with_netsvc enable_sia @@ -1617,7 +1631,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 sudo 1.9.7p2 to adapt to many kinds of systems. +\`configure' configures sudo 1.9.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1683,7 +1697,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.9.7p2:";; + short | recursive ) echo "Configuration of sudo 1.9.8:";; esac cat <<\_ACEOF @@ -1751,6 +1765,7 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) + --enable-intercept fully qualified pathname of sudo_intercept.so --disable-sia Disable SIA on Digital UNIX --disable-largefile omit support for large files --disable-pam-session Disable PAM session support @@ -1967,7 +1982,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.9.7p2 +sudo configure 1.9.8 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2624,7 +2639,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 sudo $as_me 1.9.7p2, which was +It was created by sudo $as_me 1.9.8, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3232,7 +3247,6 @@ as_fn_append ac_func_c_list " nl_langinfo HAVE_NL_LANGINFO" as_fn_append ac_func_c_list " faccessat HAVE_FACCESSAT" as_fn_append ac_func_c_list " wordexp HAVE_WORDEXP" as_fn_append ac_func_c_list " getauxval HAVE_GETAUXVAL" -as_fn_append ac_func_c_list " fseeko HAVE_FSEEKO" as_fn_append ac_func_c_list " seteuid HAVE_SETEUID" # Auxiliary files required by this configure script. @@ -3540,6 +3554,11 @@ ac_config_headers="$ac_config_headers config.h pathnames.h" + + + + + # # Begin initial values for man page substitution # @@ -3580,6 +3599,7 @@ path_info=on ldap_conf=/etc/ldap.conf ldap_secret=/etc/ldap.secret netsvc_conf=/etc/netsvc.conf +intercept_file="$libexecdir/sudo/sudo_intercept.so" noexec_file="$libexecdir/sudo/sudo_noexec.so" sesh_file="$libexecdir/sudo/sesh" nsswitch_conf=/etc/nsswitch.conf @@ -3593,9 +3613,10 @@ devsearch="/dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev" # End initial values for man page substitution # INSTALL_BACKUP= +INSTALL_INTERCEPT= INSTALL_NOEXEC= -CHECK_NOEXEC= -NOEXEC_MODULE=-module +CHECK_INTERCEPT= +PRELOAD_MODULE=-module exampledir='$(docdir)/examples' devdir='$(srcdir)' PROGS="sudo" @@ -3632,6 +3653,7 @@ COMPAT_EXP= SIGNAME= FUZZ_ENGINE= FUZZ_LD='$(CC)' +INTERCEPT_EXP= WEAK_ALIAS=no CHECKSHADOW=true shadow_funcs= @@ -7316,17 +7338,6 @@ if test X"$AR" = X"false"; then as_fn_error $? "the \"ar\" utility is required to build sudo" "$LINENO" 5 fi -if test "x$ac_cv_prog_cc_c89" = "xno"; then - as_fn_error $? "Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build." "$LINENO" 5 -fi - -if test "$enable_static" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring --disable-static, sudo does not install static libs" >&5 -printf "%s\n" "$as_me: WARNING: ignoring --disable-static, sudo does not install static libs" >&2;} - enable_static=yes -fi - - # Make sure we can run config.sub. @@ -7368,6 +7379,1180 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +cross_compiling_build=no + +ac_build_tool_prefix= +if test -n "$build" +then : + ac_build_tool_prefix="$build-" +elif test -n "$build_alias" +then : + ac_build_tool_prefix="$build_alias-" +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + +was_set_ac_cv_c_compiler_gnu=${ac_cv_c_compiler_gnu+y} +if test ${was_set_ac_cv_c_compiler_gnu} +then : + saved_ac_cv_c_compiler_gnu=$ac_cv_c_compiler_gnu + { ac_cv_c_compiler_gnu=; unset ac_cv_c_compiler_gnu;} +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +else + CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD" +fi + +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + fi +fi +if test -z "$CC_FOR_BUILD"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC_FOR_BUILD="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC_FOR_BUILD + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC_FOR_BUILD to just the basename; use the full file name. + shift + ac_cv_prog_CC_FOR_BUILD="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_build_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="$ac_build_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC_FOR_BUILD" && break + done +fi +if test -z "$CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC_FOR_BUILD" && break +done + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +fi + +fi +if test -z "$CC_FOR_BUILD"; then + if test -n "$ac_build_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_build_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC_FOR_BUILD"; then + ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_FOR_BUILD="${ac_build_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD +if test -n "$CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5 +printf "%s\n" "$CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC_FOR_BUILD"; then + ac_ct_CC_FOR_BUILD=$CC_FOR_BUILD + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC_FOR_BUILD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC_FOR_BUILD"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="$ac_ct_CC_FOR_BUILD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC_FOR_BUILD="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC_FOR_BUILD=$ac_cv_prog_ac_ct_CC_FOR_BUILD +if test -n "$ac_ct_CC_FOR_BUILD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC_FOR_BUILD" >&5 +printf "%s\n" "$ac_ct_CC_FOR_BUILD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC_FOR_BUILD" = x; then + CC_FOR_BUILD="" + else + case $cross_compiling_build:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with build triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with build triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC_FOR_BUILD=$ac_ct_CC_FOR_BUILD + fi +else + CC_FOR_BUILD="$ac_cv_prog_CC_FOR_BUILD" +fi + +fi + + +test -z "$CC_FOR_BUILD" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC_FOR_BUILD=yes +else + GCC_FOR_BUILD= +fi +ac_test_CFLAGS=${CFLAGS_FOR_BUILD+y} +ac_save_CFLAGS=$CFLAGS_FOR_BUILD +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC_FOR_BUILD accepts -g" >&5 +printf %s "checking whether $CC_FOR_BUILD accepts -g... " >&6; } +if test ${ac_cv_build_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_build_prog_cc_g=no + CFLAGS_FOR_BUILD="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_g=yes +else $as_nop + CFLAGS_FOR_BUILD="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS_FOR_BUILD="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS_FOR_BUILD=$ac_save_CFLAGS +elif test $ac_cv_build_prog_cc_g = yes; then + if test "$GCC_FOR_BUILD" = yes; then + CFLAGS_FOR_BUILD="-g -O2" + else + CFLAGS_FOR_BUILD="-g" + fi +else + if test "$GCC_FOR_BUILD" = yes; then + CFLAGS_FOR_BUILD="-O2" + else + CFLAGS_FOR_BUILD= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C11 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C11 features... " >&6; } +if test ${ac_cv_build_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c11=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c11" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C99 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C99 features... " >&6; } +if test ${ac_cv_build_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c99=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c99" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC_FOR_BUILD option to enable C89 features" >&5 +printf %s "checking for $CC_FOR_BUILD option to enable C89 features... " >&6; } +if test ${ac_cv_build_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_build_prog_cc_c89=no +ac_save_CC=$CC_FOR_BUILD +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC_FOR_BUILD="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_build_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_build_objext conftest.beam + test "x$ac_cv_build_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC_FOR_BUILD=$ac_save_CC +fi + +if test "x$ac_cv_build_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_build_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_build_prog_cc_c89" >&6; } + CC_FOR_BUILD="$CC_FOR_BUILD $ac_cv_build_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_build_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + +if test ${was_set_ac_cv_c_compiler_gnu} +then : + ac_cv_c_compiler_gnu=saved_ac_cv_c_compiler_gnu +fi + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test ${ac_cv_build_exeext+y} && test "$ac_cv_build_exeext" != no; + then :; else + ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_build_exeext" = no && ac_cv_build_exeext= + +else $as_nop + ac_file='' +fi +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } +ac_build_exeext=$ac_cv_build_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_build_exeext b.out +ac_clean_files=$ac_clean_files_save +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_build_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_build_exeext +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_exeext" >&5 +printf "%s\n" "$ac_cv_build_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_build_exeext +ac_build_exeext=$BUILD_EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <stdio.h> +int +main (void) +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling_build" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_build_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling_build=no + else + if test "$cross_compiling_build" = maybe; then + cross_compiling_build=yes + else + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. +If you meant to cross compile, use \`--build'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling_build" >&5 +printf "%s\n" "$cross_compiling_build" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_build_exeext conftest.out +ac_clean_files=$ac_clean_files_save + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_build_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_build_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_build_objext conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build_objext" >&5 +printf "%s\n" "$ac_cv_build_objext" >&6; } +OBJEXT=$ac_cv_build_objext +ac_build_objext=$BUILD_OBJEXT + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP_FOR_BUILD" && test -d "$CPP_FOR_BUILD"; then + CPP_FOR_BUILD= +fi +if test -z "$CPP_FOR_BUILD"; then + if test ${ac_cv_build_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP_FOR_BUILD in "$CC_FOR_BUILD -E" "$CC_FOR_BUILD -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_build_prog_CPP=$CPP_FOR_BUILD + +fi + CPP_FOR_BUILD=$ac_cv_build_prog_CPP +else + ac_cv_build_prog_CPP=$CPP_FOR_BUILD +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP_FOR_BUILD" >&5 +printf "%s\n" "$CPP_FOR_BUILD" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <limits.h> + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP_FOR_BUILD\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP_FOR_BUILD $CPPFLAGS_FOR_BUILD' +ac_compile='$CC_FOR_BUILD -c $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD conftest.$ac_ext >&5' +ac_link='$CC_FOR_BUILD -o conftest$ac_build_exeext $CFLAGS_FOR_BUILD $CPPFLAGS_FOR_BUILD $LDFLAGS_FOR_BUILD conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_build_c_compiler_gnu + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +if test "x$ac_cv_prog_cc_c89" = "xno"; then + as_fn_error $? "Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build." "$LINENO" 5 +fi + +if test "$enable_static" = "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ignoring --disable-static, sudo does not install static libs" >&5 +printf "%s\n" "$as_me: WARNING: ignoring --disable-static, sudo does not install static libs" >&2;} + enable_static=yes +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} @@ -15534,6 +16719,7 @@ fi if test "$enable_shared" = "no"; then + enable_intercept=no with_noexec=no enable_dlopen=no lt_cv_dlopen=none @@ -15544,6 +16730,23 @@ fi LIBDL="$lt_cv_dlopen_libs" SHLIB_ENABLE="$enable_dlopen" +# Check whether --enable-intercept was given. +if test ${enable_intercept+y} +then : + enableval=$enable_intercept; case "$enableval" in + yes) ;; + no) ;; + *) intercept_file="$enableval" + ;; + esac + +else $as_nop + enable_intercept="$intercept_file" +fi + +INTERCEPTFILE="sudo_intercept.so" +INTERCEPTDIR="`echo $intercept_file|sed -e 's:^${\([^}]*\)}:$(\1):' -e 's:^\(.*\)/[^/]*:\1:'`" + # Check whether --with-noexec was given. if test ${with_noexec+y} @@ -16609,7 +17812,7 @@ done # Build sudo_noexec.so as a shared library, not a module. # On Darwin, modules and shared libraries are incompatible. - NOEXEC_MODULE= + PRELOAD_MODULE= # Mach monotonic timer that runs while sleeping ac_fn_c_check_func "$LINENO" "mach_continuous_time" "ac_cv_func_mach_continuous_time" @@ -16787,13 +17990,19 @@ if test X"$enable_pvs_studio" = X"yes"; then EOF fi -if test X"$with_noexec" != X"no"; then +if test X"$enable_intercept" = X"no"; then + intercept_file=disabled +fi +if test X"$with_noexec" = X"no"; then + noexec_file=disabled +fi +if test X"${intercept_file} ${noexec_file}" != X"disabled disabled"; then cat >>confdefs.h <<EOF #define RTLD_PRELOAD_VAR "$RTLD_PRELOAD_VAR" EOF cat >>confdefs.h <<EOF -#define RTLD_PRELOAD_DELIM "$RTLD_PRELOAD_DELIM" +#define RTLD_PRELOAD_DELIM '$RTLD_PRELOAD_DELIM' EOF if test -n "$RTLD_PRELOAD_DEFAULT"; then @@ -16808,8 +18017,6 @@ EOF EOF fi -else - noexec_file=disabled fi AUTH_REG=${AUTH_REG# } @@ -18599,7 +19806,8 @@ if test ${sudo_cv_uid_t_len+y} then : printf %s "(cached) " >&6 else $as_nop - rm -f conftestdata + +rm -f conftestdata if test "$cross_compiling" = yes then : sudo_cv_uid_t_len=10 @@ -18638,10 +19846,9 @@ fi fi - -rm -f conftestdata { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_uid_t_len" >&5 printf "%s\n" "$sudo_cv_uid_t_len" >&6; } +rm -f conftestdata printf "%s\n" "#define MAX_UID_T_LEN $sudo_cv_uid_t_len" >>confdefs.h @@ -19670,6 +20877,75 @@ printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h esac LIBS=$ac_save_LIBS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } +if test ${ac_cv_sys_largefile_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/types.h> /* for off_t */ + #include <stdio.h> +int +main (void) +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_sys_largefile_source=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include <sys/types.h> /* for off_t */ + #include <stdio.h> +int +main (void) +{ +int (*fp) (FILE *, off_t, int) = fseeko; + return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_sys_largefile_source=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_cv_sys_largefile_source=unknown + break +done +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 +printf "%s\n" "$ac_cv_sys_largefile_source" >&6; } +case $ac_cv_sys_largefile_source in #( + no | unknown) ;; + *) +printf "%s\n" "#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source" >>confdefs.h +;; +esac +rm -rf conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +if test $ac_cv_sys_largefile_source != unknown; then + +printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h + +fi + ac_func= for ac_item in $ac_func_c_list do @@ -19691,6 +20967,21 @@ done + for ac_func in execvpe +do : + ac_fn_c_check_func "$LINENO" "execvpe" "ac_cv_func_execvpe" +if test "x$ac_cv_func_execvpe" = xyes +then : + printf "%s\n" "#define HAVE_EXECVPE 1" >>confdefs.h + + for _sym in execvpe; do + INTERCEPT_EXP="${INTERCEPT_EXP}${_sym} +" + done + +fi + +done for ac_func in pread do : @@ -19699,6 +20990,44 @@ if test "x$ac_cv_func_pread" = xyes then : printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h + # pread/pwrite on 32-bit HP-UX 11.x may not support large files + case "$host_os" in + hpux*|hiuxmpp*) + + for ac_func in pread64 pwrite64 +do : + as_ac_var=`printf "%s\n" "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 `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + + ac_fn_check_decl "$LINENO" "pread64" "ac_cv_have_decl_pread64" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_pread64" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_PREAD64 $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "pwrite64" "ac_cv_have_decl_pwrite64" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_pwrite64" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_PWRITE64 $ac_have_decl" >>confdefs.h + + +fi + +done + ;; + esac + else $as_nop case " $LIBOBJS " in @@ -19906,6 +21235,17 @@ if test "x$ac_cv_func_getusershell" = xyes then : printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h + # Older Solaris has getusershell() et al but does not declare it. + ac_fn_check_decl "$LINENO" "getusershell" "ac_cv_have_decl_getusershell" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_getusershell" = xyes +then : + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_GETUSERSHELL $ac_have_decl" >>confdefs.h + + else $as_nop case " $LIBOBJS " in @@ -20771,14 +22111,15 @@ done fi done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fnmatch with FNM_CASEFOLD" >&5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fnmatch with FNM_CASEFOLD" >&5 printf %s "checking for working fnmatch with FNM_CASEFOLD... " >&6; } if test ${sudo_cv_func_fnmatch+y} then : printf %s "(cached) " >&6 else $as_nop - rm -f conftestdata; > conftestdata -if test "$cross_compiling" = yes + + if test "$cross_compiling" = yes then : sudo_cv_func_fnmatch=no else $as_nop @@ -20797,12 +22138,11 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core core.* *.core -fi +fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_fnmatch" >&5 printf "%s\n" "$sudo_cv_func_fnmatch" >&6; } -if test $sudo_cv_func_fnmatch = yes + if test $sudo_cv_func_fnmatch = yes then : printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h @@ -20823,6 +22163,7 @@ esac COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }fnm_test" fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isblank" >&5 printf %s "checking for isblank... " >&6; } if test ${sudo_cv_func_isblank+y} @@ -21463,7 +22804,7 @@ esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5 printf %s "checking for optreset... " >&6; } - if test ${sudo_cv_optreset+y} +if test ${sudo_cv_optreset+y} then : printf %s "(cached) " >&6 else $as_nop @@ -21488,13 +22829,12 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi - +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_optreset" >&5 +printf "%s\n" "$sudo_cv_optreset" >&6; } if test "$sudo_cv_optreset" = "yes"; then printf "%s\n" "#define HAVE_OPTRESET 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_optreset" >&5 -printf "%s\n" "$sudo_cv_optreset" >&6; } fi @@ -21819,33 +23159,6 @@ fi fi - - for ac_func in vsyslog -do : - ac_fn_c_check_func "$LINENO" "vsyslog" "ac_cv_func_vsyslog" -if test "x$ac_cv_func_vsyslog" = xyes -then : - printf "%s\n" "#define HAVE_VSYSLOG 1" >>confdefs.h - -else $as_nop - - case " $LIBOBJS " in - *" vsyslog.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS vsyslog.$ac_objext" - ;; -esac - - - for _sym in sudo_vsyslog; do - COMPAT_EXP="${COMPAT_EXP}${_sym} -" - done - - COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }vsyslog_test" - -fi - -done ac_fn_c_check_func "$LINENO" "setpassent" "ac_cv_func_setpassent" if test "x$ac_cv_func_setpassent" = xyes then : @@ -23440,7 +24753,7 @@ else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __progname" >&5 printf %s "checking for __progname... " >&6; } - if test ${sudo_cv___progname+y} +if test ${sudo_cv___progname+y} then : printf %s "(cached) " >&6 else $as_nop @@ -23465,13 +24778,12 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi - +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___progname" >&5 +printf "%s\n" "$sudo_cv___progname" >&6; } if test "$sudo_cv___progname" = "yes"; then printf "%s\n" "#define HAVE___PROGNAME 1" >>confdefs.h fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___progname" >&5 -printf "%s\n" "$sudo_cv___progname" >&6; } for _sym in sudo_getprogname; do COMPAT_EXP="${COMPAT_EXP}${_sym} @@ -23515,7 +24827,6 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___func__" >&5 printf "%s\n" "$sudo_cv___func__" >&6; } if test "$sudo_cv___func__" = "yes"; then @@ -23524,7 +24835,7 @@ if test "$sudo_cv___func__" = "yes"; then elif test -n "$GCC"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __FUNCTION__" >&5 printf %s "checking for __FUNCTION__... " >&6; } - if test ${sudo_cv___FUNCTION__+y} +if test ${sudo_cv___FUNCTION__+y} then : printf %s "(cached) " >&6 else $as_nop @@ -23549,8 +24860,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___FUNCTION__" >&5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___FUNCTION__" >&5 printf "%s\n" "$sudo_cv___FUNCTION__" >&6; } if test "$sudo_cv___FUNCTION__" = "yes"; then printf "%s\n" "#define HAVE___FUNC__ 1" >>confdefs.h @@ -28350,6 +29660,39 @@ if test ${ASAN_LDFLAGS+y} then : case " $ASAN_LDFLAGS " in #( + *" -XCClinker "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains -XCClinker"; } >&5 + (: ASAN_LDFLAGS already contains -XCClinker) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append ASAN_LDFLAGS " -XCClinker" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5 + (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else $as_nop + + ASAN_LDFLAGS=-XCClinker + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5 + (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + + +if test ${ASAN_LDFLAGS+y} +then : + + case " $ASAN_LDFLAGS " in #( *" $enable_sanitizer "*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains \$enable_sanitizer"; } >&5 (: ASAN_LDFLAGS already contains $enable_sanitizer) 2>&5 @@ -28452,6 +29795,17 @@ fi printf "%s\n" "#define NO_LEAKS 1" >>confdefs.h + case `$CC --version 2>&1` in + *gcc*) + libasan=`$CC -print-file-name=libasan.so 2>/dev/null` + if test -n "$libasan" -a X"$libasan" != X"libasan.so"; then + cat >>confdefs.h <<EOF +#define _PATH_ASAN_LIB "$libasan" +EOF + + fi + ;; + esac else $as_nop @@ -28533,6 +29887,39 @@ if test ${ASAN_LDFLAGS+y} then : case " $ASAN_LDFLAGS " in #( + *" -XCClinker "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains -XCClinker"; } >&5 + (: ASAN_LDFLAGS already contains -XCClinker) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append ASAN_LDFLAGS " -XCClinker" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5 + (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else $as_nop + + ASAN_LDFLAGS=-XCClinker + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5 + (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + + +if test ${ASAN_LDFLAGS+y} +then : + + case " $ASAN_LDFLAGS " in #( *" -fsanitize=fuzzer-no-link "*) : { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains -fsanitize=fuzzer-no-link"; } >&5 (: ASAN_LDFLAGS already contains -fsanitize=fuzzer-no-link) 2>&5 @@ -28852,14 +30239,15 @@ if test x"$ax_cv_check_ldflags___pie" = xyes then : if test "$enable_pie" = "maybe"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working PIE support" >&5 + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working PIE support" >&5 printf %s "checking for working PIE support... " >&6; } if test ${sudo_cv_working_pie+y} then : printf %s "(cached) " >&6 else $as_nop - rm -f conftestdata; > conftestdata -if test "$cross_compiling" = yes + + if test "$cross_compiling" = yes then : sudo_cv_working_pie=no else $as_nop @@ -28878,15 +30266,15 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core core.* *.core -fi +fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_working_pie" >&5 printf "%s\n" "$sudo_cv_working_pie" >&6; } -if test $sudo_cv_working_pie = yes + if test $sudo_cv_working_pie = yes then : enable_pie=yes fi + fi if test "$enable_pie" = "yes"; then PIE_CFLAGS="-fPIE" @@ -29094,6 +30482,112 @@ printf "%s\n" "$sudo_cv_var_stack_protector" >&6; } fi fi if test "$enable_hardening" != "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fstack-clash-protection" >&5 +printf %s "checking whether the linker accepts -fstack-clash-protection... " >&6; } +if test ${ax_cv_check_ldflags___fstack_clash_protection+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -fstack-clash-protection" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_check_ldflags___fstack_clash_protection=yes +else $as_nop + ax_cv_check_ldflags___fstack_clash_protection=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fstack_clash_protection" >&5 +printf "%s\n" "$ax_cv_check_ldflags___fstack_clash_protection" >&6; } +if test x"$ax_cv_check_ldflags___fstack_clash_protection" = xyes +then : + + +if test ${SSP_CFLAGS+y} +then : + + case " $SSP_CFLAGS " in #( + *" -fstack-clash-protection "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_CFLAGS already contains -fstack-clash-protection"; } >&5 + (: SSP_CFLAGS already contains -fstack-clash-protection) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append SSP_CFLAGS " -fstack-clash-protection" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_CFLAGS=\"\$SSP_CFLAGS\""; } >&5 + (: SSP_CFLAGS="$SSP_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else $as_nop + + SSP_CFLAGS=-fstack-clash-protection + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_CFLAGS=\"\$SSP_CFLAGS\""; } >&5 + (: SSP_CFLAGS="$SSP_CFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + + +if test ${SSP_LDFLAGS+y} +then : + + case " $SSP_LDFLAGS " in #( + *" -Wc,-fstack-clash-protection "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_LDFLAGS already contains -Wc,-fstack-clash-protection"; } >&5 + (: SSP_LDFLAGS already contains -Wc,-fstack-clash-protection) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append SSP_LDFLAGS " -Wc,-fstack-clash-protection" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_LDFLAGS=\"\$SSP_LDFLAGS\""; } >&5 + (: SSP_LDFLAGS="$SSP_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else $as_nop + + SSP_LDFLAGS=-Wc,-fstack-clash-protection + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SSP_LDFLAGS=\"\$SSP_LDFLAGS\""; } >&5 + (: SSP_LDFLAGS="$SSP_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + + +else $as_nop + : +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5 printf %s "checking whether the linker accepts -Wl,-z,relro... " >&6; } if test ${ax_cv_check_ldflags___Wl__z_relro+y} @@ -29165,6 +30659,77 @@ else $as_nop : fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,noexecstack" >&5 +printf %s "checking whether the linker accepts -Wl,-z,noexecstack... " >&6; } +if test ${ax_cv_check_ldflags___Wl__z_noexecstack+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ax_check_save_flags=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ax_cv_check_ldflags___Wl__z_noexecstack=yes +else $as_nop + ax_cv_check_ldflags___Wl__z_noexecstack=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$ax_check_save_flags +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_noexecstack" >&5 +printf "%s\n" "$ax_cv_check_ldflags___Wl__z_noexecstack" >&6; } +if test x"$ax_cv_check_ldflags___Wl__z_noexecstack" = xyes +then : + +if test ${LDFLAGS+y} +then : + + case " $LDFLAGS " in #( + *" -Wl,-z,noexecstack "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-z,noexecstack"; } >&5 + (: LDFLAGS already contains -Wl,-z,noexecstack) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append LDFLAGS " -Wl,-z,noexecstack" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5 + (: LDFLAGS="$LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else $as_nop + + LDFLAGS=-Wl,-z,noexecstack + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5 + (: LDFLAGS="$LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + +fi + +else $as_nop + : +fi + fi case "$with_passwd" in @@ -29308,6 +30873,13 @@ if test "$exec_prefix" = '$(prefix)'; then fi fi +# Update exec_prefix in intercept_file +_intercept_file= +while test X"$intercept_file" != X"$_intercept_file"; do + _intercept_file="$intercept_file" + eval intercept_file="$_intercept_file" +done + # Update exec_prefix in noexec_file _noexec_file= while test X"$noexec_file" != X"$_noexec_file"; do @@ -29330,22 +30902,27 @@ while test X"$plugindir" != X"$_plugindir"; do done exec_prefix="$oexec_prefix" -if test X"$with_noexec" != X"no"; then - PROGS="${PROGS} sudo_noexec.la" - INSTALL_NOEXEC="install-noexec" +if test X"$enable_intercept" != X"no"; then + SUDO_OBJS="${SUDO_OBJS} intercept.pb-c.lo" + PROGS="${PROGS} sudo_intercept.la" + INSTALL_INTERCEPT="install-intercept" # Can't use sanitizers with LD_PRELOAD if test "$enable_sanitizer" != "yes"; then - CHECK_NOEXEC=check_noexec + CHECK_INTERCEPT=check_intercept fi cat >>confdefs.h <<EOF -#define _PATH_SUDO_NOEXEC "$noexec_file" +#define _PATH_SUDO_INTERCEPT "$intercept_file" EOF -else +fi +if test X"$with_noexec" != X"no"; then + PROGS="${PROGS} sudo_noexec.la" + INSTALL_NOEXEC="install-noexec" + cat >>confdefs.h <<EOF -#define _PATH_SUDO_NOEXEC NULL +#define _PATH_SUDO_NOEXEC "$noexec_file" EOF fi @@ -29388,7 +30965,7 @@ fi CFLAGS=${CFLAGS# } CPPFLAGS=${CPPFLAGS# } LDFLAGS=${LDFLAGS# } -SUDO_LDFLAGS=${SUDOERS_LDFLAGS# } +SUDO_LDFLAGS=${SUDO_LDFLAGS# } SUDOERS_LDFLAGS=${SUDOERS_LDFLAGS# } LIBS=${LIBS# } SUDO_LIBS=${SUDO_LIBS# } @@ -29418,7 +30995,7 @@ elif test X"$TMPFILES_D" != X""; then fi -ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers" +ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/protobuf-c/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/intercept.exp src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers" cat >confcache <<\_ACEOF @@ -29920,7 +31497,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 sudo $as_me 1.9.7p2, which was +This file was extended by sudo $as_me 1.9.8, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -29988,7 +31565,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -sudo config.status 1.9.7p2 +sudo config.status 1.9.8 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -30418,9 +31995,11 @@ do "lib/fuzzstub/Makefile") CONFIG_FILES="$CONFIG_FILES lib/fuzzstub/Makefile" ;; "lib/iolog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/iolog/Makefile" ;; "lib/logsrv/Makefile") CONFIG_FILES="$CONFIG_FILES lib/logsrv/Makefile" ;; + "lib/protobuf-c/Makefile") CONFIG_FILES="$CONFIG_FILES lib/protobuf-c/Makefile" ;; "lib/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/util/Makefile" ;; "lib/util/util.exp") CONFIG_FILES="$CONFIG_FILES lib/util/util.exp" ;; "logsrvd/Makefile") CONFIG_FILES="$CONFIG_FILES logsrvd/Makefile" ;; + "src/intercept.exp") CONFIG_FILES="$CONFIG_FILES src/intercept.exp" ;; "src/sudo_usage.h") CONFIG_FILES="$CONFIG_FILES src/sudo_usage.h" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "plugins/audit_json/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/audit_json/Makefile" ;; diff --git a/configure.ac b/configure.ac index 0fee6dcca..0ee501520 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dnl AC_PREREQ([2.70]) -AC_INIT([sudo], [1.9.7p2], [https://bugzilla.sudo.ws/], [sudo]) +AC_INIT([sudo], [1.9.8], [https://bugzilla.sudo.ws/], [sudo]) AC_CONFIG_HEADERS([config.h pathnames.h]) AC_CONFIG_SRCDIR([src/sudo.c]) AC_CONFIG_AUX_DIR([scripts]) @@ -69,14 +69,18 @@ AC_SUBST([SEMAN]) AC_SUBST([devdir]) AC_SUBST([mansectsu]) AC_SUBST([mansectform]) +AC_SUBST([INTERCEPTFILE]) +AC_SUBST([INTERCEPTDIR]) +AC_SUBST([intercept_file]) AC_SUBST([NOEXECFILE]) AC_SUBST([NOEXECDIR]) AC_SUBST([noexec_file]) AC_SUBST([sesh_file]) AC_SUBST([INSTALL_BACKUP]) +AC_SUBST([INSTALL_INTERCEPT]) AC_SUBST([INSTALL_NOEXEC]) -AC_SUBST([CHECK_NOEXEC]) -AC_SUBST([NOEXEC_MODULE]) +AC_SUBST([CHECK_INTERCEPT]) +AC_SUBST([PRELOAD_MODULE]) AC_SUBST([DONT_LEAK_PATH_INFO]) AC_SUBST([BSDAUTH_USAGE]) AC_SUBST([SELINUX_USAGE]) @@ -122,6 +126,7 @@ AC_SUBST([LIBLOGSRV]) AC_SUBST([PPFILES]) AC_SUBST([FUZZ_ENGINE]) AC_SUBST([FUZZ_LD]) +AC_SUBST([INTERCEPT_EXP]) dnl dnl Variables that get substituted in docs (not overridden by environment) @@ -209,6 +214,7 @@ path_info=on ldap_conf=/etc/ldap.conf ldap_secret=/etc/ldap.secret netsvc_conf=/etc/netsvc.conf +intercept_file="$libexecdir/sudo/sudo_intercept.so" noexec_file="$libexecdir/sudo/sudo_noexec.so" sesh_file="$libexecdir/sudo/sesh" nsswitch_conf=/etc/nsswitch.conf @@ -226,9 +232,10 @@ dnl Initial values for Makefile variables listed above dnl May be overridden by environment variables.. dnl INSTALL_BACKUP= +INSTALL_INTERCEPT= INSTALL_NOEXEC= -CHECK_NOEXEC= -NOEXEC_MODULE=-module +CHECK_INTERCEPT= +PRELOAD_MODULE=-module exampledir='$(docdir)/examples' devdir='$(srcdir)' PROGS="sudo" @@ -265,6 +272,7 @@ COMPAT_EXP= SIGNAME= FUZZ_ENGINE= FUZZ_LD='$(CC)' +INTERCEPT_EXP= dnl dnl Other variables dnl @@ -1590,6 +1598,7 @@ AC_CHECK_TOOL(RANLIB, ranlib, :) if test X"$AR" = X"false"; then AC_MSG_ERROR([the "ar" utility is required to build sudo]) fi +AX_PROG_CC_FOR_BUILD if test "x$ac_cv_prog_cc_c89" = "xno"; then AC_MSG_ERROR([Sudo version $PACKAGE_VERSION requires an ANSI C compiler to build.]) @@ -1657,9 +1666,10 @@ AC_ARG_WITH(libtool, [AS_HELP_STRING([--with-libtool=PATH], [specify path to lib esac]) dnl -dnl Defer with_noexec until after libtool magic runs +dnl Defer enable_intercept and with_noexec until after libtool magic runs dnl if test "$enable_shared" = "no"; then + enable_intercept=no with_noexec=no enable_dlopen=no lt_cv_dlopen=none @@ -1670,6 +1680,18 @@ fi LIBDL="$lt_cv_dlopen_libs" SHLIB_ENABLE="$enable_dlopen" +AC_ARG_ENABLE(intercept, +[AS_HELP_STRING([--enable-intercept], [fully qualified pathname of sudo_intercept.so])], +[ case "$enableval" in + yes) ;; + no) ;; + *) intercept_file="$enableval" + ;; + esac +], [enable_intercept="$intercept_file"]) +INTERCEPTFILE="sudo_intercept.so" +INTERCEPTDIR="`echo $intercept_file|sed -e 's:^${\([[^}]]*\)}:$(\1):' -e 's:^\(.*\)/[[^/]]*:\1:'`" + AC_ARG_WITH(noexec, [AS_HELP_STRING([--with-noexec[[=PATH]]], [fully qualified pathname of sudo_noexec.so])], [case $with_noexec in yes) ;; @@ -2174,7 +2196,7 @@ case "$host" in # Build sudo_noexec.so as a shared library, not a module. # On Darwin, modules and shared libraries are incompatible. - NOEXEC_MODULE= + PRELOAD_MODULE= # Mach monotonic timer that runs while sleeping AC_CHECK_FUNCS([mach_continuous_time]) @@ -2261,17 +2283,21 @@ fi dnl dnl Library preloading to support NOEXEC dnl -if test X"$with_noexec" != X"no"; then +if test X"$enable_intercept" = X"no"; then + intercept_file=disabled +fi +if test X"$with_noexec" = X"no"; then + noexec_file=disabled +fi +if test X"${intercept_file} ${noexec_file}" != X"disabled disabled"; then SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_VAR, "$RTLD_PRELOAD_VAR") - SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_DELIM, "$RTLD_PRELOAD_DELIM") + SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_DELIM, '$RTLD_PRELOAD_DELIM') if test -n "$RTLD_PRELOAD_DEFAULT"; then SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_DEFAULT, "$RTLD_PRELOAD_DEFAULT") fi if test -n "$RTLD_PRELOAD_ENABLE_VAR"; then SUDO_DEFINE_UNQUOTED(RTLD_PRELOAD_ENABLE_VAR, "$RTLD_PRELOAD_ENABLE_VAR") fi -else - noexec_file=disabled fi dnl @@ -2517,8 +2543,19 @@ dnl dnl Function checks dnl AC_FUNC_GETGROUPS -AC_CHECK_FUNCS_ONCE([fexecve fmemopen killpg nl_langinfo faccessat wordexp getauxval fseeko]) -AC_CHECK_FUNCS([pread], [], [ +AC_FUNC_FSEEKO +AC_CHECK_FUNCS_ONCE([fexecve fmemopen killpg nl_langinfo faccessat wordexp getauxval]) +AC_CHECK_FUNCS([execvpe], [SUDO_APPEND_INTERCEPT_EXP(execvpe)]) +AC_CHECK_FUNCS([pread], [ + # pread/pwrite on 32-bit HP-UX 11.x may not support large files + case "$host_os" in + hpux*|hiuxmpp*) + AC_CHECK_FUNCS([pread64 pwrite64], [ + AC_CHECK_DECLS([pread64, pwrite64]) + ]) + ;; + esac +], [ AC_LIBOBJ(pread) SUDO_APPEND_COMPAT_EXP(sudo_pread) ]) @@ -2577,7 +2614,10 @@ AC_CHECK_FUNCS([getdelim], [ SUDO_APPEND_COMPAT_EXP(sudo_getdelim) COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }getdelim_test" ]) -AC_CHECK_FUNCS([getusershell], [], [ +AC_CHECK_FUNCS([getusershell], [ + # Older Solaris has getusershell() et al but does not declare it. + AC_CHECK_DECLS([getusershell]) +], [ AC_LIBOBJ(getusershell) SUDO_APPEND_COMPAT_EXP(sudo_getusershell) ]) @@ -2811,13 +2851,11 @@ AC_CHECK_FUNCS([clock_gettime], [], [ AC_CHECK_FUNCS([getopt_long], [], [ AC_LIBOBJ(getopt_long) SUDO_APPEND_COMPAT_EXP(sudo_getopt_long sudo_getopt_long_only) - AC_MSG_CHECKING([for optreset]) - AC_CACHE_VAL(sudo_cv_optreset, [ + AC_CACHE_CHECK([for optreset], sudo_cv_optreset, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern int optreset; optreset = 1; return optreset;]])], [sudo_cv_optreset=yes], [sudo_cv_optreset=no])]) if test "$sudo_cv_optreset" = "yes"; then AC_DEFINE(HAVE_OPTRESET) fi - AC_MSG_RESULT($sudo_cv_optreset) ]) AC_CHECK_FUNCS([closefrom], [], [AC_LIBOBJ(closefrom) SUDO_APPEND_COMPAT_EXP(sudo_closefrom) @@ -2863,11 +2901,6 @@ AC_CHECK_MEMBER([struct stat.st_mtim], [AC_CHECK_MEMBER([struct stat.st_nmtime], AC_DEFINE(HAVE_ST_NMTIME))]) ] ) -AC_CHECK_FUNCS([vsyslog], [], [ - AC_LIBOBJ(vsyslog) - SUDO_APPEND_COMPAT_EXP(sudo_vsyslog) - COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }vsyslog_test" -]) dnl dnl 4.4BSD-based systems can force the password or group file to be held open dnl @@ -3258,30 +3291,24 @@ dnl AC_CHECK_FUNCS([getprogname], [ AC_CHECK_FUNCS([setprogname], [], [SUDO_APPEND_COMPAT_EXP(sudo_setprogname)]) ], [ - AC_MSG_CHECKING([for __progname]) - AC_CACHE_VAL(sudo_cv___progname, [ + AC_CACHE_CHECK([for __progname], sudo_cv___progname, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *__progname; if (__progname[0] == '\0') return 1;]])], [sudo_cv___progname=yes], [sudo_cv___progname=no])]) if test "$sudo_cv___progname" = "yes"; then AC_DEFINE(HAVE___PROGNAME) fi - AC_MSG_RESULT($sudo_cv___progname) SUDO_APPEND_COMPAT_EXP(sudo_getprogname) SUDO_APPEND_COMPAT_EXP(sudo_setprogname) ]) dnl dnl Check for __func__ or __FUNCTION__ dnl -AC_MSG_CHECKING([for __func__]) -AC_CACHE_VAL(sudo_cv___func__, [ +AC_CACHE_CHECK([for __func__], sudo_cv___func__, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[if (__func__[0] == '\0') return 1;]])], [sudo_cv___func__=yes], [sudo_cv___func__=no])]) -AC_MSG_RESULT($sudo_cv___func__) if test "$sudo_cv___func__" = "yes"; then AC_DEFINE(HAVE___FUNC__) elif test -n "$GCC"; then - AC_MSG_CHECKING([for __FUNCTION__]) - AC_CACHE_VAL(sudo_cv___FUNCTION__, [ + AC_CACHE_CHECK([for __FUNCTION__], sudo_cv___FUNCTION__, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[if(__FUNCTION__[0] == '\0') return 1;]])], [sudo_cv___FUNCTION__=yes], [sudo_cv___FUNCTION__=no])]) - AC_MSG_RESULT($sudo_cv___FUNCTION__) if test "$sudo_cv___FUNCTION__" = "yes"; then AC_DEFINE(HAVE___FUNC__) AC_DEFINE(__func__, __FUNCTION__, [Define to __FUNCTION__ if your compiler supports __FUNCTION__ but not __func__]) @@ -4486,11 +4513,24 @@ dnl if test "$enable_sanitizer" != "no"; then AX_CHECK_COMPILE_FLAG([$enable_sanitizer], [ AX_APPEND_FLAG([$enable_sanitizer], [ASAN_CFLAGS]) + AX_APPEND_FLAG([-XCClinker], [ASAN_LDFLAGS]) AX_APPEND_FLAG([$enable_sanitizer], [ASAN_LDFLAGS]) AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], [ AX_APPEND_FLAG([-fno-omit-frame-pointer], [CFLAGS]) ]) AC_DEFINE(NO_LEAKS) + dnl + dnl check for libasan.so so we can preload it before sudo_intercept.so + dnl gcc links asan dynamically, clang links it statically. + dnl + case `$CC --version 2>&1` in + *gcc*) + libasan=`$CC -print-file-name=libasan.so 2>/dev/null` + if test -n "$libasan" -a X"$libasan" != X"libasan.so"; then + SUDO_DEFINE_UNQUOTED(_PATH_ASAN_LIB, "$libasan", [Path to the libasan.so shared library]) + fi + ;; + esac ], [ AC_MSG_ERROR([$CC does not support the $enable_sanitizer flag]) ]) @@ -4498,6 +4538,7 @@ fi if test "$enable_fuzzer" = "yes"; then AX_CHECK_COMPILE_FLAG([-fsanitize=fuzzer-no-link], [ AX_APPEND_FLAG([-fsanitize=fuzzer-no-link], [ASAN_CFLAGS]) + AX_APPEND_FLAG([-XCClinker], [ASAN_LDFLAGS]) AX_APPEND_FLAG([-fsanitize=fuzzer-no-link], [ASAN_LDFLAGS]) if test -z "$FUZZ_ENGINE"; then FUZZ_ENGINE="-fsanitize=fuzzer" @@ -4622,7 +4663,12 @@ if test "$enable_hardening" != "no" && test "$enable_ssp" != "no"; then fi fi if test "$enable_hardening" != "no"; then + AX_CHECK_LINK_FLAG([-fstack-clash-protection], [ + AX_APPEND_FLAG([-fstack-clash-protection], [SSP_CFLAGS]) + AX_APPEND_FLAG([-Wc,-fstack-clash-protection], [SSP_LDFLAGS]) + ]) AX_CHECK_LINK_FLAG([-Wl,-z,relro], [AX_APPEND_FLAG([-Wl,-z,relro], [LDFLAGS])]) + AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [AX_APPEND_FLAG([-Wl,-z,noexecstack], [LDFLAGS])]) fi dnl @@ -4737,6 +4783,13 @@ if test "$exec_prefix" = '$(prefix)'; then fi fi +# Update exec_prefix in intercept_file +_intercept_file= +while test X"$intercept_file" != X"$_intercept_file"; do + _intercept_file="$intercept_file" + eval intercept_file="$_intercept_file" +done + # Update exec_prefix in noexec_file _noexec_file= while test X"$noexec_file" != X"$_noexec_file"; do @@ -4762,18 +4815,23 @@ exec_prefix="$oexec_prefix" dnl dnl Defer setting _PATH_SUDO_NOEXEC, etc until after exec_prefix is set dnl -if test X"$with_noexec" != X"no"; then - PROGS="${PROGS} sudo_noexec.la" - INSTALL_NOEXEC="install-noexec" +if test X"$enable_intercept" != X"no"; then + SUDO_OBJS="${SUDO_OBJS} intercept.pb-c.lo" + PROGS="${PROGS} sudo_intercept.la" + INSTALL_INTERCEPT="install-intercept" # Can't use sanitizers with LD_PRELOAD if test "$enable_sanitizer" != "yes"; then - CHECK_NOEXEC=check_noexec + CHECK_INTERCEPT=check_intercept fi + SUDO_DEFINE_UNQUOTED(_PATH_SUDO_INTERCEPT, "$intercept_file", [The fully qualified pathname of sudo_intercept.so]) +fi +if test X"$with_noexec" != X"no"; then + PROGS="${PROGS} sudo_noexec.la" + INSTALL_NOEXEC="install-noexec" + SUDO_DEFINE_UNQUOTED(_PATH_SUDO_NOEXEC, "$noexec_file", [The fully qualified pathname of sudo_noexec.so]) -else - SUDO_DEFINE_UNQUOTED(_PATH_SUDO_NOEXEC, NULL) fi if test X"$with_selinux" != X"no"; then SUDO_DEFINE_UNQUOTED(_PATH_SUDO_SESH, "$sesh_file") @@ -4806,7 +4864,7 @@ dnl CFLAGS=${CFLAGS# } CPPFLAGS=${CPPFLAGS# } LDFLAGS=${LDFLAGS# } -SUDO_LDFLAGS=${SUDOERS_LDFLAGS# } +SUDO_LDFLAGS=${SUDO_LDFLAGS# } SUDOERS_LDFLAGS=${SUDOERS_LDFLAGS# } LIBS=${LIBS# } SUDO_LIBS=${SUDO_LIBS# } @@ -4840,7 +4898,7 @@ elif test X"$TMPFILES_D" != X""; then AC_CONFIG_FILES([etc/init.d/sudo.conf]) fi -AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers]) +AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/protobuf-c/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/intercept.exp src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers]) AC_OUTPUT diff --git a/doc/CONTRIBUTORS b/doc/CONTRIBUTORS index 44e0d358c..ab8ac5139 100644 --- a/doc/CONTRIBUTORS +++ b/doc/CONTRIBUTORS @@ -242,4 +242,4 @@ https://translationproject.org for more details. The following people designed the artwork used on the sudo website: Shield logo: Badger, Trent - Sandwich logo: Stillman, Mark + Sandwich logo (inspired by xkcd): Stillman, Mark diff --git a/doc/HISTORY b/doc/HISTORY index 0ad951218..61f2c885e 100644 --- a/doc/HISTORY +++ b/doc/HISTORY @@ -63,9 +63,9 @@ Quest Sponsorship In 2010, Quest Software began sponsoring Sudo development by hiring Todd to work on Sudo as part of his full-time job. This enabled -the addition of I/O logging, the plugin interface, additional -regression tests, support for binary packages and more regular -releases. +the addition of I/O logging, the plugin API, the log server, +additional regression and fuzz tests, support for binary packages +and more regular releases. Present Day diff --git a/doc/LICENSE b/doc/LICENSE index 60f193f38..85e9a3d1f 100644 --- a/doc/LICENSE +++ b/doc/LICENSE @@ -20,13 +20,13 @@ Sudo is distributed under the following license: Materiel Command, USAF, under agreement number F39502-99-1-0512. The Python plugin bindings bear the following license: - + Copyright (c) 2019-2020 Robert Manner <robert.manner@oneidentity.com> - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -42,7 +42,7 @@ The files hostcheck.c and hostcheck.h bear the following license: Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -54,13 +54,13 @@ The files hostcheck.c and hostcheck.h bear the following license: The file redblack.c bears the following license: Copyright (c) 2001 Emin Martinian - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that neither the name of Emin Martinian nor the names of any contributors are be used to endorse or promote products derived from this software without specific prior written permission. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -76,13 +76,13 @@ The file redblack.c bears the following license: The file sssd.c bears the following license: Copyright (c) 2011 Daniel Kopecek <dkopecek@redhat.com> - + This code is derived from software contributed by Aaron Spangler. - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -94,11 +94,11 @@ The file sssd.c bears the following license: The files bsm_audit.c and bsm_audit.h bear the following license: Copyright (c) 2009 Christian S.J. Peron - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -110,11 +110,11 @@ The files bsm_audit.c and bsm_audit.h bear the following license: The files solaris_audit.c and solaris_audit.h bear the following license: Copyright (c) 2014, Oracle and/or its affiliates. - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -126,11 +126,11 @@ The files solaris_audit.c and solaris_audit.h bear the following license: The file reallocarray.c bears the following license: Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -173,7 +173,7 @@ The file fnmatch.c bears the following license: Copyright (c) 2011, VMware, 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: * Redistributions of source code must retain the above copyright @@ -184,7 +184,7 @@ The file fnmatch.c bears the following license: * Neither the name of the VMware, 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 THE COPYRIGHT HOLDERS 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 @@ -248,11 +248,11 @@ The file arc4random.c bears the following license: Copyright (c) 2008, Damien Miller <djm@openbsd.org> Copyright (c) 2013, Markus Friedl <markus@openbsd.org> Copyright (c) 2014, Theo de Raadt <deraadt@openbsd.org> - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -260,15 +260,15 @@ The file arc4random.c bears the following license: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - + The file arc4random_uniform.c bears the following license: Copyright (c) 2008, Damien Miller <djm@openbsd.org> - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -281,11 +281,11 @@ The file getentropy.c bears the following license: Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org> Copyright (c) 2014 Bob Beck <beck@obtuse.com> - + Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR @@ -321,19 +321,19 @@ The embedded copy of protobuf-c bears the following license: Copyright (c) 2008-2018, Dave Benson and the protobuf-c authors. All rights reserved. - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + * 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. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR diff --git a/doc/Makefile.in b/doc/Makefile.in index 69b802156..7f154282c 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -119,8 +119,8 @@ lint: all else \ rval=0; \ for m in $(DOCS); do \ - echo $(MANDOC) -Tlint -Wstyle $$m; \ - $(MANDOC) -Tlint -Wstyle $$m || rval=`expr $$rval + $$?`; \ + echo $(MANDOC) -Tlint -Wwarning $$m; \ + $(MANDOC) -Tlint -Wwarning $$m || rval=`expr $$rval + $$?`; \ done; \ exit $$rval; \ fi diff --git a/doc/sudo.conf.man.in b/doc/sudo.conf.man.in index 07b66e8da..af08e055a 100644 --- a/doc/sudo.conf.man.in +++ b/doc/sudo.conf.man.in @@ -17,7 +17,7 @@ .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .nr SL @SEMAN@ -.TH "SUDO.CONF" "@mansectform@" "March 2, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDO.CONF" "@mansectform@" "September 7, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -229,6 +229,7 @@ For example: .nf .sp .RS 6n +Path intercept @intercept_file@ Path noexec @noexec_file@ Path askpass /usr/X11R6/bin/ssh-askpass .RE @@ -286,6 +287,27 @@ functions, for example BSD, macOS and Solaris. .TP 10n +intercept +.br +The fully-qualified path to a shared library containing a wrappers for the +\fBexecl\fR(), +\fBexecle\fR(), +\fBexeclp\fR(), +\fBexecv\fR(), +\fBexecve\fR(), +\fBexecvp\fR(), +and +\fBexecvpe\fR() +library functions that intercepts attempts to run further commands and +performs a policy check before allowing them to be executed. +This is used to implement the +\fIintercept\fR +functionality on systems that support +\fRLD_PRELOAD\fR +or its equivalent. +The default value is +\fI@intercept_file@\fR. +.TP 10n noexec The fully-qualified path to a shared library containing wrappers for the @@ -295,6 +317,7 @@ for the \fBexect\fR(), \fBexecv\fR(), \fBexecve\fR(), +\fBexecveat\fR(), \fBexecvP\fR(), \fBexecvp\fR(), \fBexecvpe\fR(), @@ -538,10 +561,10 @@ This setting is only available in \fBsudo\fR version 1.8.10 and higher. .RE -.SS "Debug flags" +.SS "Debug settings" \fBsudo\fR versions 1.8.4 and higher support a flexible debugging framework -that can help track down what +that can log what \fBsudo\fR is doing internally if there is a problem. .PP @@ -549,20 +572,19 @@ A \fRDebug\fR line consists of the \fRDebug\fR -keyword, followed by the name of the program (or plugin) to debug -(\fBsudo\fR, \fBvisudo\fR, \fBsudoreplay\fR, \fBsudoers\fR), +keyword, followed by the name of the program, plugin or shared object to debug, the debug file name and a comma-separated list of debug flags. The debug flag syntax used by -\fBsudo\fR -and the +\fBsudo\fR, +the \fBsudoers\fR -plugin is +plugin and its associated programs and shared objects is \fIsubsystem\fR@\fIpriority\fR -but a plugin is free to use a different format so long as it does -not include a comma +but a third-party plugin is free to use a different format so long +as it does not include a comma (\(oq\&,\(cq). .PP -For example: +Examples: .nf .sp .RS 6n @@ -575,6 +597,18 @@ would log all debugging statements at the level and higher in addition to those at the \fIinfo\fR level for the plugin subsystem. +.nf +.sp +.RS 6n +Debug sudo_intercept.so /var/log/intercept_debug all@debug +.RE +.fi +.PP +would log all debugging statements, regardless of level, for the +\fIsudo_intercept.so\fR +shared object that implements +\fBsudo\fR's +intercept functionality. .PP As of \fBsudo\fR @@ -739,13 +773,28 @@ front end configuration #Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev # +# Sudo command interception: +# Path intercept /path/to/sudo_intercept.so +# +# Path to a shared library containing replacements for the execv() +# and execve() library functions that perform a policy check to verify +# the command is allowed and simply return an error if not. This is +# used to implement the "intercept" functionality on systems that +# support LD_PRELOAD or its equivalent. +# +# The compiled-in value is usually sufficient and should only be changed +# if you rename or move the sudo_intercept.so file. +# +#Path intercept @plugindir@/sudo_intercept.so + +# # Sudo noexec: # Path noexec /path/to/sudo_noexec.so # -# Path to a shared library containing replacements for the execv(), -# execve() and fexecve() library functions that just return an error. -# This is used to implement the "noexec" functionality on systems that -# support LD_PRELOAD or its equivalent. +# Path to a shared library containing replacements for the execv() +# family of library functions that just return an error. This is +# used to implement the "noexec" functionality on systems that support +# LD_PRELOAD or its equivalent. # # The compiled-in value is usually sufficient and should only be changed # if you rename or move the sudo_noexec.so file. diff --git a/doc/sudo.conf.mdoc.in b/doc/sudo.conf.mdoc.in index 3bd203dce..4d4247f1f 100644 --- a/doc/sudo.conf.mdoc.in +++ b/doc/sudo.conf.mdoc.in @@ -16,7 +16,7 @@ .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .nr SL @SEMAN@ -.Dd March 2, 2021 +.Dd September 7, 2021 .Dt SUDO.CONF @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -209,6 +209,7 @@ line consists of the keyword, followed by the name of the path to set and its value. For example: .Bd -literal -offset indent +Path intercept @intercept_file@ Path noexec @noexec_file@ Path askpass /usr/X11R6/bin/ssh-askpass .Ed @@ -262,6 +263,25 @@ or functions, for example .Bx , macOS and Solaris. +.It intercept +The fully-qualified path to a shared library containing a wrappers for the +.Fn execl , +.Fn execle , +.Fn execlp , +.Fn execv , +.Fn execve , +.Fn execvp , +and +.Fn execvpe +library functions that intercepts attempts to run further commands and +performs a policy check before allowing them to be executed. +This is used to implement the +.Em intercept +functionality on systems that support +.Ev LD_PRELOAD +or its equivalent. +The default value is +.Pa @intercept_file@ . .It noexec The fully-qualified path to a shared library containing wrappers for the @@ -271,6 +291,7 @@ for the .Fn exect , .Fn execv , .Fn execve , +.Fn execveat , .Fn execvP , .Fn execvp , .Fn execvpe , @@ -490,10 +511,10 @@ This setting is only available in .Nm sudo version 1.8.10 and higher. .El -.Ss Debug flags +.Ss Debug settings .Nm sudo versions 1.8.4 and higher support a flexible debugging framework -that can help track down what +that can log what .Nm sudo is doing internally if there is a problem. .Pp @@ -501,20 +522,19 @@ A .Li Debug line consists of the .Li Debug -keyword, followed by the name of the program (or plugin) to debug -.Pq Nm sudo , Nm visudo , Nm sudoreplay , Nm sudoers , +keyword, followed by the name of the program, plugin or shared object to debug, the debug file name and a comma-separated list of debug flags. The debug flag syntax used by -.Nm sudo -and the +.Nm sudo , +the .Nm sudoers -plugin is +plugin and its associated programs and shared objects is .Em subsystem Ns @ Ns Em priority -but a plugin is free to use a different format so long as it does -not include a comma +but a third-party plugin is free to use a different format so long +as it does not include a comma .Pq Ql \&, . .Pp -For example: +Examples: .Bd -literal -offset indent Debug sudo /var/log/sudo_debug all@warn,plugin@info .Ed @@ -525,6 +545,16 @@ level and higher in addition to those at the .Em info level for the plugin subsystem. .Pp +.Bd -literal -offset indent +Debug sudo_intercept.so /var/log/intercept_debug all@debug +.Ed +.Pp +would log all debugging statements, regardless of level, for the +.Pa sudo_intercept.so +shared object that implements +.Nm sudo Ns 's +intercept functionality. +.Pp As of .Nm sudo 1.8.12, multiple @@ -673,13 +703,28 @@ front end configuration #Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev # +# Sudo command interception: +# Path intercept /path/to/sudo_intercept.so +# +# Path to a shared library containing replacements for the execv() +# and execve() library functions that perform a policy check to verify +# the command is allowed and simply return an error if not. This is +# used to implement the "intercept" functionality on systems that +# support LD_PRELOAD or its equivalent. +# +# The compiled-in value is usually sufficient and should only be changed +# if you rename or move the sudo_intercept.so file. +# +#Path intercept @plugindir@/sudo_intercept.so + +# # Sudo noexec: # Path noexec /path/to/sudo_noexec.so # -# Path to a shared library containing replacements for the execv(), -# execve() and fexecve() library functions that just return an error. -# This is used to implement the "noexec" functionality on systems that -# support LD_PRELOAD or its equivalent. +# Path to a shared library containing replacements for the execv() +# family of library functions that just return an error. This is +# used to implement the "noexec" functionality on systems that support +# LD_PRELOAD or its equivalent. # # The compiled-in value is usually sufficient and should only be changed # if you rename or move the sudo_noexec.so file. diff --git a/doc/sudo.man.in b/doc/sudo.man.in index f777d95db..661471953 100644 --- a/doc/sudo.man.in +++ b/doc/sudo.man.in @@ -2,7 +2,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020 +.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021 .\" Todd C. Miller <Todd.Miller@sudo.ws> .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDO" "@mansectsu@" "September 1, 2020" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" +.TH "SUDO" "@mansectsu@" "August 16, 2021" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" .nh .if n .ad l .SH "NAME" @@ -1069,7 +1069,7 @@ Because of this, care must be taken when giving users access to commands via \fBsudo\fR to verify that the command does not inadvertently give the user an effective root shell. -For more information, please see the +For information on ways to address this, please see the \fIPreventing shell escapes\fR section in sudoers(@mansectform@). diff --git a/doc/sudo.mdoc.in b/doc/sudo.mdoc.in index 0a3d457ad..7b6215627 100644 --- a/doc/sudo.mdoc.in +++ b/doc/sudo.mdoc.in @@ -1,7 +1,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020 +.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021 .\" Todd C. Miller <Todd.Miller@sudo.ws> .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -24,7 +24,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd September 1, 2020 +.Dd August 16, 2021 .Dt SUDO @mansectsu@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -1010,7 +1010,7 @@ Because of this, care must be taken when giving users access to commands via .Nm to verify that the command does not inadvertently give the user an effective root shell. -For more information, please see the +For information on ways to address this, please see the .Em Preventing shell escapes section in .Xr sudoers @mansectform@ . diff --git a/doc/sudo_logsrv.proto.man.in b/doc/sudo_logsrv.proto.man.in index 32c67c5f7..dcd50d923 100644 --- a/doc/sudo_logsrv.proto.man.in +++ b/doc/sudo_logsrv.proto.man.in @@ -16,7 +16,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.TH "SUDO_LOGSRV.PROTO" "@mansectform@" "November 6, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDO_LOGSRV.PROTO" "@mansectform@" "August 3, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -463,6 +463,7 @@ message ServerHello { string server_id = 1; string redirect = 2; repeated string servers = 3; + bool subcommands = 4; } .RE .fi @@ -497,6 +498,24 @@ This can be used to implement log server redundancy and allows the client to discover all other log servers simply by connecting to one known server. This member may be omitted when there is only a single log server. +.TP 8n +subcommands +If set, the server supports logging additional commands during a session. +The client may send an +\fIAcceptMessage\fR +or +\fIRejectMessage\fR +when +\fBsudo\fR +is running in +\fIintercept\fR +mode. +In this mode, commands spawned from the initial command authorized by +\fBsudo\fR +are subject to policy restrictions and/or are logged. +If +\fIsubcommands\fR +is false, the client must not attempt to log additional commands. .SS "TimeSpec commit_point" A periodic time stamp sent by the server to indicate when I/O log buffers have been committed to storage. diff --git a/doc/sudo_logsrv.proto.mdoc.in b/doc/sudo_logsrv.proto.mdoc.in index ef9953a71..7801b1e70 100644 --- a/doc/sudo_logsrv.proto.mdoc.in +++ b/doc/sudo_logsrv.proto.mdoc.in @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd November 6, 2020 +.Dd August 3, 2021 .Dt SUDO_LOGSRV.PROTO @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -427,6 +427,7 @@ message ServerHello { string server_id = 1; string redirect = 2; repeated string servers = 3; + bool subcommands = 4; } .Ed .Pp @@ -457,6 +458,23 @@ This can be used to implement log server redundancy and allows the client to discover all other log servers simply by connecting to one known server. This member may be omitted when there is only a single log server. +.It subcommands +If set, the server supports logging additional commands during a session. +The client may send an +.Em AcceptMessage +or +.Em RejectMessage +when +.Nm sudo +is running in +.Em intercept +mode. +In this mode, commands spawned from the initial command authorized by +.Nm sudo +are subject to policy restrictions and/or are logged. +If +.Em subcommands +is false, the client must not attempt to log additional commands. .El .Ss TimeSpec commit_point A periodic time stamp sent by the server to indicate when I/O log diff --git a/doc/sudo_logsrvd.conf.man.in b/doc/sudo_logsrvd.conf.man.in index ea21f10af..319c3b5f8 100644 --- a/doc/sudo_logsrvd.conf.man.in +++ b/doc/sudo_logsrvd.conf.man.in @@ -16,7 +16,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.TH "SUDO_LOGSRVD.CONF" "@mansectform@" "May 1, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDO_LOGSRVD.CONF" "@mansectform@" "August 3, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -128,6 +128,23 @@ Multiple lines may be specified to listen on more than one port or interface. .RE .TP 10n +server_log = string +Where to log server warning and error messages. +Supported values are +\fInone\fR, +\fIstderr\fR, +\fIsyslog\fR, +or a path name beginning with the +\(oq/\(cq +character. +Note that a value of +\fIstderr\fR +is only effective when used in conjunction with the +\fB\-n\fR +option. +The default value is +\fIsyslog\fR. +.TP 10n pid_file = path The path to the file containing the process ID of the running \fBsudo_logsrvd\fR. @@ -151,6 +168,7 @@ will enable the TCP keepalive socket option on the client connection. This enables the periodic transmission of keepalive messages to the client. If the client does not respond to a message in time, the connection will be closed. +Defaults to true. .TP 10n timeout = number The amount of time, in seconds, @@ -249,11 +267,11 @@ The default value is \fI/etc/ssl/sudo/private/logsrvd_key.pem\fR. .TP 10n tls_verify = bool -If true, the server certificate will be verified at startup and -clients will authenticate the server by verifying its certificate -and identity. -If false, no verification is performed of the server certificate -by the server or the client. +If true, +\fBsudo_logsrvd.conf\fR +will validate its own certificate at startup time or when the +configuration is changed. +If false, no verification is performed of the server certificate. When using self-signed certificates without a certificate authority, this setting should be set to false. The default value is true. @@ -601,6 +619,12 @@ and The default value is \fIsyslog\fR. .TP 6n +log_exit = boolean +If true, +\fBsudo_logsrvd\fR +will log an event when a command exits or is terminated by a signal. +Defaults to false. +.TP 6n log_format = string The event log format. Supported log formats are @@ -608,7 +632,7 @@ Supported log formats are for traditional sudo-style logs and \(lqjson\(rq for JSON-format logs. -The JSON log entries contain the full contents of the accept, reject +The JSON log entries contain the full contents of the accept, reject, exit and alert messages. The default value is \fIsudo\fR. @@ -704,6 +728,12 @@ When a message is split, additional parts will include the string after the user name and before the continued command line arguments. JSON-format log entries are never split and are not affected by \fImaxlen\fR. +.TP 6n +server_facility = string +Syslog facility if syslog is being used for server warning messages. +See above for a list of supported facilities. +Defaults to +\fRdaemon\fR .SS "logfile" The \fIlogfile\fR @@ -761,15 +791,19 @@ Sudo log server configuration file # The file containing the ID of the running sudo_logsrvd process. #pid_file = @rundir@/sudo_logsrvd.pid +# Where to log server warnings: none, stderr, syslog, or a path name. +#server_log = syslog + # If true, enable the SO_KEEPALIVE socket option on client connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the client to # respond. A value of 0 will disable the timeout. The default value is 30. #timeout = 30 -# If true, the server certificate will be verified at startup and clients -# will authenticate the server by verifying its certificate and identity. +# If true, the server will validate its own certificate at startup. +# Defaults to true. #tls_verify = true # If true, client certificates will be validated by the server; @@ -833,6 +867,7 @@ Sudo log server configuration file #store_first = true # If true, enable the SO_KEEPALIVE socket option on relay connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the relay to @@ -919,11 +954,15 @@ Sudo log server configuration file #maxseq = 2176782336 [eventlog] -# Where to log accept, reject and alert events. +# Where to log accept, reject, exit and alert events. # Accepted values are syslog, logfile, or none. # Defaults to syslog #log_type = syslog +# Whether to log an event when a command exits or is terminated by a signal. +# Defaults to false +#log_exit = true + # Event log format. # Currently only sudo-style event logs are supported. #log_format = sudo @@ -955,6 +994,10 @@ Sudo log server configuration file # client. #alert_priority = alert +# The syslog facility to use for server warning messages. +# Defaults to daemon. +#server_facility = daemon + [logfile] # The path to the file-based event log. # This path must be fully-qualified and start with a '/' character. diff --git a/doc/sudo_logsrvd.conf.mdoc.in b/doc/sudo_logsrvd.conf.mdoc.in index b8f1f6911..1b85c7052 100644 --- a/doc/sudo_logsrvd.conf.mdoc.in +++ b/doc/sudo_logsrvd.conf.mdoc.in @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd May 1, 2021 +.Dd August 3, 2021 .Dt SUDO_LOGSRVD.CONF @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -114,6 +114,22 @@ plaintext and TLS connections. Multiple .Em listen_address lines may be specified to listen on more than one port or interface. +.It server_log = string +Where to log server warning and error messages. +Supported values are +.Em none , +.Em stderr , +.Em syslog , +or a path name beginning with the +.Ql / +character. +Note that a value of +.Em stderr +is only effective when used in conjunction with the +.Fl n +option. +The default value is +.Em syslog . .It pid_file = path The path to the file containing the process ID of the running .Nm sudo_logsrvd . @@ -136,6 +152,7 @@ will enable the TCP keepalive socket option on the client connection. This enables the periodic transmission of keepalive messages to the client. If the client does not respond to a message in time, the connection will be closed. +Defaults to true. .It timeout = number The amount of time, in seconds, .Nm sudo_logsrvd @@ -211,11 +228,11 @@ The path to the server's private key file, in PEM format. The default value is .Pa /etc/ssl/sudo/private/logsrvd_key.pem . .It tls_verify = bool -If true, the server certificate will be verified at startup and -clients will authenticate the server by verifying its certificate -and identity. -If false, no verification is performed of the server certificate -by the server or the client. +If true, +.Nm +will validate its own certificate at startup time or when the +configuration is changed. +If false, no verification is performed of the server certificate. When using self-signed certificates without a certificate authority, this setting should be set to false. The default value is true. @@ -534,6 +551,11 @@ and .Em none . The default value is .Em syslog . +.It log_exit = boolean +If true, +.Nm sudo_logsrvd +will log an event when a command exits or is terminated by a signal. +Defaults to false. .It log_format = string The event log format. Supported log formats are @@ -541,7 +563,7 @@ Supported log formats are for traditional sudo-style logs and .Dq json for JSON-format logs. -The JSON log entries contain the full contents of the accept, reject +The JSON log entries contain the full contents of the accept, reject, exit and alert messages. The default value is .Em sudo . @@ -634,6 +656,11 @@ When a message is split, additional parts will include the string after the user name and before the continued command line arguments. JSON-format log entries are never split and are not affected by .Em maxlen . +.It server_facility = string +Syslog facility if syslog is being used for server warning messages. +See above for a list of supported facilities. +Defaults to +.Li daemon .El .Ss logfile The @@ -692,15 +719,19 @@ Sudo log server configuration file # The file containing the ID of the running sudo_logsrvd process. #pid_file = @rundir@/sudo_logsrvd.pid +# Where to log server warnings: none, stderr, syslog, or a path name. +#server_log = syslog + # If true, enable the SO_KEEPALIVE socket option on client connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the client to # respond. A value of 0 will disable the timeout. The default value is 30. #timeout = 30 -# If true, the server certificate will be verified at startup and clients -# will authenticate the server by verifying its certificate and identity. +# If true, the server will validate its own certificate at startup. +# Defaults to true. #tls_verify = true # If true, client certificates will be validated by the server; @@ -764,6 +795,7 @@ Sudo log server configuration file #store_first = true # If true, enable the SO_KEEPALIVE socket option on relay connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the relay to @@ -850,11 +882,15 @@ Sudo log server configuration file #maxseq = 2176782336 [eventlog] -# Where to log accept, reject and alert events. +# Where to log accept, reject, exit and alert events. # Accepted values are syslog, logfile, or none. # Defaults to syslog #log_type = syslog +# Whether to log an event when a command exits or is terminated by a signal. +# Defaults to false +#log_exit = true + # Event log format. # Currently only sudo-style event logs are supported. #log_format = sudo @@ -886,6 +922,10 @@ Sudo log server configuration file # client. #alert_priority = alert +# The syslog facility to use for server warning messages. +# Defaults to daemon. +#server_facility = daemon + [logfile] # The path to the file-based event log. # This path must be fully-qualified and start with a '/' character. diff --git a/doc/sudoers.man.in b/doc/sudoers.man.in index 3923d9954..fa386e0dc 100644 --- a/doc/sudoers.man.in +++ b/doc/sudoers.man.in @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDOERS" "@mansectform@" "May 7, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDOERS" "@mansectform@" "September 7, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -1049,7 +1049,7 @@ Warning, if the user has write access to the command itself (directly or via a command), it may be possible for the user to replace the command after the digest check has been performed but before the command is executed. A similar race condition exists on systems that lack the -fexecve(2) +\fBfexecve\fR() system call when the directory in which the command is located is writable by the user. See the description of the @@ -1190,8 +1190,9 @@ Chroot_Spec ::= 'CHROOT=directory' Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | - 'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' | - 'NOPASSWD:' | 'SETENV:' | 'NOSETENV:') + 'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'INTERCEPT:' | + 'NOINTERCEPT:' | 'PASSWD:' | 'NOPASSWD:' | 'SETENV:' | + 'NOSETENV:') .RE .fi .PP @@ -1410,6 +1411,7 @@ On systems with SELinux support, \fIsudoers\fR file entries may optionally have an SELinux role and/or type associated with a command. +This can be used to implement a form of role-based access control (RBAC). If a role or type is specified with the command it will override any default values specified in @@ -1607,6 +1609,8 @@ The following tag values are supported: \fRNOLOG_OUTPUT\fR, \fRMAIL\fR, \fRNOMAIL\fR, +\fRINTERCEPT\fR, +\fRNOINTERCEPT\fR, \fRPASSWD\fR, \fRNOPASSWD\fR, \fRSETENV\fR, @@ -1767,7 +1771,9 @@ and \fI/usr/bin/lprm\fR as \fBroot\fR -on the machine rushmore without authenticating himself. +on the machine +\(lqrushmore\(rq +without authenticating himself. If we only want \fBray\fR to be able to @@ -1832,6 +1838,42 @@ the tag is implied for that command; this default may be overridden by use of the \fRNOSETENV\fR tag. +.TP 2n +\fIINTERCEPT\fR and \fINOINTERCEPT\fR +.sp +If +\fBsudo\fR +has been compiled with +\fIintercept\fR +support and the underlying operating system supports it, the +\fRINTERCEPT\fR +tag can be used to cause programs spawned by a command to be validated against +\fIsudoers\fR +and logged just like they would be if run through +\fBsudo\fR +directly. +This is useful in conjunction with commands that allow shell escapes +such as editors, shells and paginators. +.sp +In the following example, user +\fBchuck\fR +may run any command on the machine +\(lqresearch\(rq +in intercept mode. +.nf +.sp +.RS 2n +chuck research = INTERCEPT: ALL +.RE +.fi +.RS 2n +.sp +See the +\fIPreventing shell escapes\fR +section below for more details on how +\fRINTERCEPT\fR +works and whether or not it will work on your system. +.RE .SS "Wildcards" \fBsudo\fR allows shell-style @@ -2728,6 +2770,17 @@ by default. .sp This setting is only supported by version 1.8.29 or higher. .TP 18n +log_exit_status +If set, +\fBsudoers\fR +will log the exit value of commands that are run to syslog and/or a log file. +If a command was terminated by a signal, the signal name is logged as well. +This flag is +\fIoff\fR +by default. +.sp +This setting is only supported by version 1.9.8 or higher. +.TP 18n log_host If set, the host name will be included in log entries written to the file configured by the @@ -2802,6 +2855,38 @@ by default. .sp This setting is only supported by version 1.9.0 or higher. .TP 18n +log_subcmds +If set, +\fBsudoers\fR +will log when a command spawns a child process and executes a program +using the +\fBexecl\fR(), +\fBexecle\fR(), +\fBexeclp\fR(), +\fBexecv\fR(), +\fBexecve\fR(), +\fBexecvp\fR(), +or +\fBexecvpe\fR() +library functions. +For example, if a shell is run by +\fBsudo\fR, +the individual commands run via the shell will be logged. +This flag is +\fIoff\fR +by default. +.sp +The +\fIlog_subcmds\fR +flag uses the same underlying mechanism as the +\fIintercept\fR +setting. +See +\fIPreventing shell escapes\fR +for more information on what systems support this option and its limitations. +This setting is only supported by version 1.9.8 or higher +and is incompatible with SELinux RBAC support. +.TP 18n log_year If set, the four-digit year will be logged in the (non-syslog) \fBsudo\fR @@ -2959,6 +3044,66 @@ by default. .sp This setting is only supported by version 1.8.18 or higher. .TP 18n +intercept +If set, all commands run via +\fBsudo\fR +will behave as if the +\fRINTERCEPT\fR +tag has been set, unless overridden by an +\fRNOINTERCEPT\fR +tag. +See the description of +\fIINTERCEPT and NOINTERCEPT\fR +above as well as the +\fIPreventing shell escapes\fR +section at the end of this manual. +This flag is +\fIoff\fR +by default. +.sp +This setting is only supported by version 1.9.8 or higher +and is incompatible with SELinux RBAC support. +.TP 18n +intercept_allow_setid +On most systems, the dynamic loader will ignore +\fRLD_PRELOAD\fR +(or the equivalent) when running set-user-ID and set-group-ID +programs, effectively disabling intercept mode. +To prevent this from happening, +\fBsudoers\fR +will not permit a set-user-ID or set-group-ID program to be run in +intercept mode unless +\fIintercept_allow_setid\fR +is set. +This flag has no effect unless the +\fIintercept\fR +flag is enabled or the +\fIINTERCEPT\fR +tag has been set for the command. +This flag is +\fIon\fR +by default. +.sp +This setting is only supported by version 1.9.8 or higher. +.TP 18n +intercept_authenticate +If set, commands run by an intercepted process must be authenticated +when the user's time stamp is not current. +For example, if a shell is run with +\fIintercept\fR +enabled, as soon as the invoking user's time stamp is out of date, +subsequent commands will need to be authenticated. +This flag has no effect unless the +\fIintercept\fR +flag is enabled or the +\fIINTERCEPT\fR +tag has been set for the command. +This flag is +\fIoff\fR +by default. +.sp +This setting is only supported by version 1.9.8 or higher. +.TP 18n netgroup_tuple If set, netgroup lookups will be performed using the full netgroup tuple: host name, user name and domain (if one is set). @@ -4020,18 +4165,32 @@ is set and the remote log server is secured with TLS. This setting is only supported by version 1.9.0 or higher. .TP 18n log_server_peer_cert -The path to the client's certificate file, in PEM format. -This setting is required when -\fIlog_servers\fR -is set and the remote log server is secured with TLS. +The path to the +\fBsudo\fR +client's certificate file, in PEM format. +This setting is required when the remote log server is secured +with TLS and client certificate validation is enabled. +For +\fBsudo_logsrvd\fR, +client certificate validation is controlled by the +\fItls_checkpeer\fR +option, which defaults to +\fIfalse\fR. .sp This setting is only supported by version 1.9.0 or higher. .TP 18n log_server_peer_key -The path to the client's private key file, in PEM format. -This setting is required when -\fIlog_servers\fR -is set and the remote log server is secured with TLS. +The path to the +\fBsudo\fR +client's private key file, in PEM format. +This setting is required when the remote log server is secured +with TLS and client certificate validation is enabled. +For +\fBsudo_logsrvd\fR, +client certificate validation is controlled by the +\fItls_checkpeer\fR +option, which defaults to +\fIfalse\fR. .sp This setting is only supported by version 1.9.0 or higher. .TP 18n @@ -4374,7 +4533,7 @@ alias. .sp This setting is only supported by version 1.8.20 or higher. If the operating system does not support the -fexecve(2) +\fBfexecve\fR() system call, this setting has no effect. .RE .TP 14n @@ -5431,12 +5590,12 @@ if no terminal was present. .TP 10n runargv A JSON array representing the command's argument vector as passed to the -execve(2) +\fBexecve\fR() system call. .TP 10n runenv A JSON array representing the command's environment as passed to the -execve(2) +\fBexecve\fR() system call. .TP 10n rungid @@ -6134,7 +6293,7 @@ access control and logging. Common programs that permit shell escapes include shells (obviously), editors, paginators, mail and terminal programs. .PP -There are two basic approaches to this problem: +There are four basic approaches to this problem: .TP 10n restrict Avoid giving users access to commands that allow the user to run @@ -6149,7 +6308,8 @@ Due to the large number of programs that offer shell escapes, restricting users to the set of programs that do not is often unworkable. .TP 10n -noexec +intercept +.br Many systems that support shared libraries have the ability to override default library functions by pointing an environment variable (usually @@ -6157,19 +6317,48 @@ variable (usually to an alternate shared library. On such systems, \fBsudo\fR's -\fInoexec\fR -functionality can be used to prevent a program run by -\fBsudo\fR -from executing any other programs. +\fIintercept\fR +functionality can be used to transparently intercept an attempt to +run a new command, allow or deny it based on +\fIsudoers\fR +rules, and log the result. +For example, this can be used to restrict the commands run from +within a privileged shell. Note, however, that this applies only to dynamically-linked executables. Statically-linked executables and executables running under binary emulation are not affected. +Also, most shells support built-in commands and the ability to read +or write sensitive files that cannot be intercepted by +\fBsudo\fR. +.sp +Currently, +\fBsudo\fR's +\fIintercept\fR +functionality only works for programs that use the +\fBexecl\fR(), +\fBexecle\fR(), +\fBexeclp\fR(), +\fBexecv\fR(), +\fBexecve\fR(), +\fBexecvp\fR(), +or +\fBexecvpe\fR() +library functions to run the new command. +This may be expanded in a future release of +\fBsudo\fR. +Because most dynamic loaders ignore +\fRLD_PRELOAD\fR +(or the equivalent) when running set-user-ID and set-group-ID programs, +\fBsudoers\fR +will not permit such programs to be run in +\fIintercept\fR +mode. .sp The -\fInoexec\fR -feature is known to work on SunOS, Solaris, *BSD, -Linux, IRIX, Tru64 UNIX, macOS, HP-UX 11.x and AIX 5.3 and above. +\fIintercept\fR +feature is known to work on Solaris, *BSD, Linux, macOS, HP-UX 11.x +and AIX 5.3 and above. It should be supported on most operating systems that support the \fRLD_PRELOAD\fR environment variable. @@ -6177,7 +6366,97 @@ Check your operating system's manual pages for the dynamic linker (usually ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if \fRLD_PRELOAD\fR is supported. +It is +\fInot\fR +supported when +\fBsudo\fR's +SELinux RBAC support is in use due to a fundamental incompatibility. +.sp +To enable intercept mode on a per-command basis, use the +\fRINTERCEPT\fR +tag as documented in the User Specification section above. +Here is that example again: +.nf +.sp +.RS 10n +chuck research = INTERCEPT: ALL +.RE +.fi +.RS 10n .sp +This allows user +\fBchuck\fR +to run any command on the machine +\(lqresearch\(rq +in intercept mode. +Any commands run via shell escapes will be validated and logged by +\fBsudo\fR. +If you are unsure whether or not your system is capable of supporting +\fIintercept\fR, +you can always just try it out and check whether or not external +commands run via a shell are logged when +\fIintercept\fR +is enabled. +.RE +.TP 10n +log +There are two separate but related ways to log additional commands. +The first is to enable I/O logging using the +\fIlog_output\fR +flag. +This will log the command's output but will not create an event log +entry when the additional command is run. +The second is to enable the +\fIlog_subcmds\fR +flag in +\fIsudoers\fR +which will create an event log entry every time a new command is run. +If I/O logging is also enabled, the log entry will include a time offset +into the I/O log to indicate when the command was run. +This offset can be passed to the +sudoreplay(@mansectsu@) +utility to replay the I/O log at the exact moment when the command was run. +The +\fIlog_subcmds\fR +flag uses the same mechanism as +\fIintercept\fR +(see above) and has the same limitations. +.TP 10n +noexec +\fBsudo\fR's +\fInoexec\fR +functionality can be used to prevent a program run by +\fBsudo\fR +from executing any other programs. +On most systems, it uses the same mechanism as +\fIintercept\fR +(see above) and thus the same caveats apply. +The +\fInoexec\fR +functionality +is capable of blocking execution of commands run via the +\fBexecl\fR(), +\fBexecle\fR(), +\fBexeclp\fR(), +\fBexect\fR(), +\fBexecv\fR(), +\fBexecve\fR(), +\fBexecveat\fR(), +\fBexecvP\fR(), +\fBexecvp\fR(), +\fBexecvpe\fR(), +\fBfexecve\fR(), +\fBpopen\fR(), +\fBposix_spawn\fR(), +\fBposix_spawnp\fR(), +\fBsystem\fR(), +and +\fBwordexp\fR() +functions. +On Linux, a +\fBseccomp\fR() +filter is used to implement +\fInoexec\fR. On Solaris 10 and higher, \fInoexec\fR uses Solaris privileges instead of the @@ -6188,8 +6467,7 @@ To enable \fInoexec\fR for a command, use the \fRNOEXEC\fR -tag as documented -in the User Specification section above. +tag as documented in the User Specification section above. Here is that example again: .nf .sp @@ -6485,16 +6763,14 @@ SSSD-based sudoers .TP 10n \fIutil\fR utility functions -.PD 0 .PP For example: .nf .sp .RS 0n -Debug sudo /var/log/sudo_debug match@info,nss@info +Debug sudoers.so /var/log/sudoers_debug match@info,nss@info .RE .fi -.PD .PP For more information, see the sudo.conf(@mansectform@) diff --git a/doc/sudoers.mdoc.in b/doc/sudoers.mdoc.in index ce7c07305..a6456e908 100644 --- a/doc/sudoers.mdoc.in +++ b/doc/sudoers.mdoc.in @@ -24,7 +24,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd May 7, 2021 +.Dd September 7, 2021 .Dt SUDOERS @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -1006,7 +1006,7 @@ Warning, if the user has write access to the command itself (directly or via a command), it may be possible for the user to replace the command after the digest check has been performed but before the command is executed. A similar race condition exists on systems that lack the -.Xr fexecve 2 +.Fn fexecve system call when the directory in which the command is located is writable by the user. See the description of the @@ -1143,8 +1143,9 @@ Chroot_Spec ::= 'CHROOT=directory' Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | - 'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' | - 'NOPASSWD:' | 'SETENV:' | 'NOSETENV:') + 'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'INTERCEPT:' | + 'NOINTERCEPT:' | 'PASSWD:' | 'NOPASSWD:' | 'SETENV:' | + 'NOSETENV:') .Ed .Pp A @@ -1338,6 +1339,7 @@ On systems with SELinux support, .Em sudoers file entries may optionally have an SELinux role and/or type associated with a command. +This can be used to implement a form of role-based access control (RBAC). If a role or type is specified with the command it will override any default values specified in @@ -1527,6 +1529,8 @@ The following tag values are supported: .Li NOLOG_OUTPUT , .Li MAIL , .Li NOMAIL , +.Li INTERCEPT , +.Li NOINTERCEPT , .Li PASSWD , .Li NOPASSWD , .Li SETENV , @@ -1673,7 +1677,9 @@ and .Pa /usr/bin/lprm as .Sy root -on the machine rushmore without authenticating himself. +on the machine +.Dq rushmore +without authenticating himself. If we only want .Sy ray to be able to @@ -1733,6 +1739,36 @@ the tag is implied for that command; this default may be overridden by use of the .Li NOSETENV tag. +.It Em INTERCEPT No and Em NOINTERCEPT +.sp +If +.Nm sudo +has been compiled with +.Em intercept +support and the underlying operating system supports it, the +.Li INTERCEPT +tag can be used to cause programs spawned by a command to be validated against +.Em sudoers +and logged just like they would be if run through +.Nm sudo +directly. +This is useful in conjunction with commands that allow shell escapes +such as editors, shells and paginators. +.Pp +In the following example, user +.Sy chuck +may run any command on the machine +.Dq research +in intercept mode. +.Bd -literal +chuck research = INTERCEPT: ALL +.Ed +.Pp +See the +.Sx Preventing shell escapes +section below for more details on how +.Li INTERCEPT +works and whether or not it will work on your system. .El .Ss Wildcards .Nm sudo @@ -2573,6 +2609,16 @@ This flag is by default. .Pp This setting is only supported by version 1.8.29 or higher. +.It log_exit_status +If set, +.Nm +will log the exit value of commands that are run to syslog and/or a log file. +If a command was terminated by a signal, the signal name is logged as well. +This flag is +.Em off +by default. +.Pp +This setting is only supported by version 1.9.8 or higher. .It log_host If set, the host name will be included in log entries written to the file configured by the @@ -2641,6 +2687,37 @@ This flag is by default. .Pp This setting is only supported by version 1.9.0 or higher. +.It log_subcmds +If set, +.Nm +will log when a command spawns a child process and executes a program +using the +.Fn execl , +.Fn execle , +.Fn execlp , +.Fn execv , +.Fn execve , +.Fn execvp , +or +.Fn execvpe +library functions. +For example, if a shell is run by +.Nm sudo , +the individual commands run via the shell will be logged. +This flag is +.Em off +by default. +.Pp +The +.Em log_subcmds +flag uses the same underlying mechanism as the +.Em intercept +setting. +See +.Sx Preventing shell escapes +for more information on what systems support this option and its limitations. +This setting is only supported by version 1.9.8 or higher +and is incompatible with SELinux RBAC support. .It log_year If set, the four-digit year will be logged in the (non-syslog) .Nm sudo @@ -2789,6 +2866,63 @@ This flag is by default. .Pp This setting is only supported by version 1.8.18 or higher. +.It intercept +If set, all commands run via +.Nm sudo +will behave as if the +.Li INTERCEPT +tag has been set, unless overridden by an +.Li NOINTERCEPT +tag. +See the description of +.Em INTERCEPT and NOINTERCEPT +above as well as the +.Sx Preventing shell escapes +section at the end of this manual. +This flag is +.Em off +by default. +.Pp +This setting is only supported by version 1.9.8 or higher +and is incompatible with SELinux RBAC support. +.It intercept_allow_setid +On most systems, the dynamic loader will ignore +.Ev LD_PRELOAD +(or the equivalent) when running set-user-ID and set-group-ID +programs, effectively disabling intercept mode. +To prevent this from happening, +.Nm +will not permit a set-user-ID or set-group-ID program to be run in +intercept mode unless +.Em intercept_allow_setid +is set. +This flag has no effect unless the +.Em intercept +flag is enabled or the +.Em INTERCEPT +tag has been set for the command. +This flag is +.Em on +by default. +.Pp +This setting is only supported by version 1.9.8 or higher. +.It intercept_authenticate +If set, commands run by an intercepted process must be authenticated +when the user's time stamp is not current. +For example, if a shell is run with +.Em intercept +enabled, as soon as the invoking user's time stamp is out of date, +subsequent commands will need to be authenticated. +This flag has no effect unless the +.Em intercept +flag is enabled or the +.Em INTERCEPT +tag has been set for the command. +This flag is +.Em off +by default. +.Pp +This setting is only supported by version 1.9.8 or higher. .It netgroup_tuple If set, netgroup lookups will be performed using the full netgroup tuple: host name, user name and domain (if one is set). @@ -3785,17 +3919,31 @@ is set and the remote log server is secured with TLS. .Pp This setting is only supported by version 1.9.0 or higher. .It log_server_peer_cert -The path to the client's certificate file, in PEM format. -This setting is required when -.Em log_servers -is set and the remote log server is secured with TLS. +The path to the +.Nm sudo +client's certificate file, in PEM format. +This setting is required when the remote log server is secured +with TLS and client certificate validation is enabled. +For +.Nm sudo_logsrvd , +client certificate validation is controlled by the +.Em tls_checkpeer +option, which defaults to +.Em false . .Pp This setting is only supported by version 1.9.0 or higher. .It log_server_peer_key -The path to the client's private key file, in PEM format. -This setting is required when -.Em log_servers -is set and the remote log server is secured with TLS. +The path to the +.Nm sudo +client's private key file, in PEM format. +This setting is required when the remote log server is secured +with TLS and client certificate validation is enabled. +For +.Nm sudo_logsrvd , +client certificate validation is controlled by the +.Em tls_checkpeer +option, which defaults to +.Em false . .Pp This setting is only supported by version 1.9.0 or higher. .It mailsub @@ -4104,7 +4252,7 @@ alias. .Pp This setting is only supported by version 1.8.20 or higher. If the operating system does not support the -.Xr fexecve 2 +.Fn fexecve system call, this setting has no effect. .It group_plugin A string containing a @@ -5065,11 +5213,11 @@ The number of lines of the terminal the command ran on, or zero if no terminal was present. .It runargv A JSON array representing the command's argument vector as passed to the -.Xr execve 2 +.Fn execve system call. .It runenv A JSON array representing the command's environment as passed to the -.Xr execve 2 +.Fn execve system call. .It rungid The group ID the command ran as. @@ -5668,7 +5816,7 @@ access control and logging. Common programs that permit shell escapes include shells (obviously), editors, paginators, mail and terminal programs. .Pp -There are two basic approaches to this problem: +There are four basic approaches to this problem: .Bl -tag -width 8n .It restrict Avoid giving users access to commands that allow the user to run @@ -5682,7 +5830,7 @@ running editors via Due to the large number of programs that offer shell escapes, restricting users to the set of programs that do not is often unworkable. -.It noexec +.It intercept Many systems that support shared libraries have the ability to override default library functions by pointing an environment variable (usually @@ -5690,19 +5838,48 @@ variable (usually to an alternate shared library. On such systems, .Nm sudo Ns 's -.Em noexec -functionality can be used to prevent a program run by -.Nm sudo -from executing any other programs. +.Em intercept +functionality can be used to transparently intercept an attempt to +run a new command, allow or deny it based on +.Em sudoers +rules, and log the result. +For example, this can be used to restrict the commands run from +within a privileged shell. Note, however, that this applies only to dynamically-linked executables. Statically-linked executables and executables running under binary emulation are not affected. +Also, most shells support built-in commands and the ability to read +or write sensitive files that cannot be intercepted by +.Nm sudo . +.Pp +Currently, +.Nm sudo Ns 's +.Em intercept +functionality only works for programs that use the +.Fn execl , +.Fn execle , +.Fn execlp , +.Fn execv , +.Fn execve , +.Fn execvp , +or +.Fn execvpe +library functions to run the new command. +This may be expanded in a future release of +.Nm sudo . +Because most dynamic loaders ignore +.Ev LD_PRELOAD +(or the equivalent) when running set-user-ID and set-group-ID programs, +.Nm +will not permit such programs to be run in +.Em intercept +mode. .Pp The -.Em noexec -feature is known to work on SunOS, Solaris, *BSD, -Linux, IRIX, Tru64 UNIX, macOS, HP-UX 11.x and AIX 5.3 and above. +.Em intercept +feature is known to work on Solaris, *BSD, Linux, macOS, HP-UX 11.x +and AIX 5.3 and above. It should be supported on most operating systems that support the .Ev LD_PRELOAD environment variable. @@ -5710,7 +5887,90 @@ Check your operating system's manual pages for the dynamic linker (usually ld.so, ld.so.1, dyld, dld.sl, rld, or loader) to see if .Ev LD_PRELOAD is supported. +It is +.Em not +supported when +.Nm sudo Ns 's +SELinux RBAC support is in use due to a fundamental incompatibility. .Pp +To enable intercept mode on a per-command basis, use the +.Li INTERCEPT +tag as documented in the User Specification section above. +Here is that example again: +.Bd -literal +chuck research = INTERCEPT: ALL +.Ed +.Pp +This allows user +.Sy chuck +to run any command on the machine +.Dq research +in intercept mode. +Any commands run via shell escapes will be validated and logged by +.Nm sudo . +If you are unsure whether or not your system is capable of supporting +.Em intercept , +you can always just try it out and check whether or not external +commands run via a shell are logged when +.Em intercept +is enabled. +.It log +There are two separate but related ways to log additional commands. +The first is to enable I/O logging using the +.Em log_output +flag. +This will log the command's output but will not create an event log +entry when the additional command is run. +The second is to enable the +.Em log_subcmds +flag in +.Em sudoers +which will create an event log entry every time a new command is run. +If I/O logging is also enabled, the log entry will include a time offset +into the I/O log to indicate when the command was run. +This offset can be passed to the +.Xr sudoreplay @mansectsu@ +utility to replay the I/O log at the exact moment when the command was run. +The +.Em log_subcmds +flag uses the same mechanism as +.Em intercept +(see above) and has the same limitations. +.It noexec +.Nm sudo Ns 's +.Em noexec +functionality can be used to prevent a program run by +.Nm sudo +from executing any other programs. +On most systems, it uses the same mechanism as +.Em intercept +(see above) and thus the same caveats apply. +The +.Em noexec +functionality +is capable of blocking execution of commands run via the +.Fn execl , +.Fn execle , +.Fn execlp , +.Fn exect , +.Fn execv , +.Fn execve , +.Fn execveat , +.Fn execvP , +.Fn execvp , +.Fn execvpe , +.Fn fexecve , +.Fn popen , +.Fn posix_spawn , +.Fn posix_spawnp , +.Fn system , +and +.Fn wordexp +functions. +On Linux, a +.Fn seccomp +filter is used to implement +.Em noexec . On Solaris 10 and higher, .Em noexec uses Solaris privileges instead of the @@ -5721,8 +5981,7 @@ To enable .Em noexec for a command, use the .Li NOEXEC -tag as documented -in the User Specification section above. +tag as documented in the User Specification section above. Here is that example again: .Bd -literal aaron shanty = NOEXEC: /usr/bin/more, /usr/bin/vi @@ -5994,9 +6253,10 @@ SSSD-based sudoers .It Em util utility functions .El +.Pp For example: .Bd -literal -Debug sudo /var/log/sudo_debug match@info,nss@info +Debug sudoers.so /var/log/sudoers_debug match@info,nss@info .Ed .Pp For more information, see the diff --git a/doc/sudoreplay.man.in b/doc/sudoreplay.man.in index 43d432c86..746eb3d47 100644 --- a/doc/sudoreplay.man.in +++ b/doc/sudoreplay.man.in @@ -2,7 +2,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws> +.\" Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -16,7 +16,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.TH "SUDOREPLAY" "@mansectsu@" "May 26, 2021" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" +.TH "SUDOREPLAY" "@mansectsu@" "August 13, 2021" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" .nh .if n .ad l .SH "NAME" @@ -30,7 +30,7 @@ [\fB\-f\fR\ \fIfilter\fR] [\fB\-m\fR\ \fInum\fR] [\fB\-s\fR\ \fInum\fR] -ID +ID[\fI@offset\fR] .HP 11n \fBsudoreplay\fR [\fB\-h\fR] @@ -52,6 +52,16 @@ should either be a six character sequence of digits and upper case letters, e.g., \fR0100A5\fR or a path name. +The +\fIID\fR +may include an optional +\fI@offset\fR +suffix which may be used to start replaying at a specific time offset. +The +\fI@offset\fR +is specified as a number in seconds since the start of the session +with an optional decimal fraction. +.PP Path names may be relative to the I/O log directory \fI@iolog_dir@\fR (unless overridden by the diff --git a/doc/sudoreplay.mdoc.in b/doc/sudoreplay.mdoc.in index cb7084d42..ec6d24b65 100644 --- a/doc/sudoreplay.mdoc.in +++ b/doc/sudoreplay.mdoc.in @@ -1,7 +1,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws> +.\" Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd May 26, 2021 +.Dd August 13, 2021 .Dt SUDOREPLAY @mansectsu@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -28,7 +28,7 @@ .Op Fl f Ar filter .Op Fl m Ar num .Op Fl s Ar num -ID +.No ID Ns Op Ar @offset .Pp .Nm .Op Fl h @@ -50,6 +50,16 @@ should either be a six character sequence of digits and upper case letters, e.g., .Li 0100A5 or a path name. +The +.Em ID +may include an optional +.Ar @offset +suffix which may be used to start replaying at a specific time offset. +The +.Ar @offset +is specified as a number in seconds since the start of the session +with an optional decimal fraction. +.Pp Path names may be relative to the I/O log directory .Pa @iolog_dir@ (unless overridden by the diff --git a/etc/codespell.exclude b/etc/codespell.exclude index 7814ba84f..687536c9c 100644 --- a/etc/codespell.exclude +++ b/etc/codespell.exclude @@ -2,6 +2,7 @@ * Returns true if any tags set in nt differ between ot and nt, else false. #define TAGS_CHANGED(ot, nt) \ ((TAG_SET((nt).follow) && (nt).follow != (ot).follow) || \ + (TAG_SET((nt).intercept) && (nt).intercept != (ot).intercept) || \ (TAG_SET((nt).log_input) && (nt).log_input != (ot).log_input) || \ (TAG_SET((nt).log_output) && (nt).log_output != (ot).log_output) || \ (TAG_SET((nt).noexec) && (nt).noexec != (ot).noexec) || \ diff --git a/etc/sudo.pp b/etc/sudo.pp index 1697f4e79..7008a5456 100644 --- a/etc/sudo.pp +++ b/etc/sudo.pp @@ -512,7 +512,7 @@ still allow people to get their work done." print "On Debian we normally use gid 27 for \"sudo\".\n"; $gname = getgrgid(27); print "However, on your system gid 27 is group \"$gname\".\n\n"; - print "Would you like me to stop configuring sudo so that you can change this? [n] "; + print "Would you like me to stop configuring sudo so that you can change this? [n] "; $ans = <STDIN>; if ($ans =~ /^[yY]/) { print "\"dpkg --pending --configure\" will restart the configuration.\n\n"; diff --git a/examples/Makefile.in b/examples/Makefile.in index 245705a68..453b1302e 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -56,7 +56,7 @@ LOGSRVD_CONF = @LOGSRVD_CONF@ EXAMPLES = $(srcdir)/pam.conf sudo.conf $(LOGSRVD_CONF) \ $(srcdir)/sudoers $(srcdir)/syslog.conf - + VERSION = @PACKAGE_VERSION@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ diff --git a/examples/sudo.conf.in b/examples/sudo.conf.in index 5e36034f2..6535d3a92 100644 --- a/examples/sudo.conf.in +++ b/examples/sudo.conf.in @@ -39,6 +39,21 @@ #Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev # +# Sudo command interception: +# Path intercept /path/to/sudo_intercept.so +# +# Path to a shared library containing replacements for the execv(), +# execve() and fexecve() library functions that perform a policy check +# to verify the command is allowed and simply return an error if not. +# This is used to implement the "intercept" functionality on systems that +# support LD_PRELOAD or its equivalent. +# +# The compiled-in value is usually sufficient and should only be changed +# if you rename or move the sudo_intercept.so file. +# +#Path intercept @plugindir@/sudo_intercept.so + +# # Sudo noexec: # Path noexec /path/to/sudo_noexec.so # diff --git a/examples/sudo_logsrvd.conf b/examples/sudo_logsrvd.conf index e73cd9998..4aa1e568b 100644 --- a/examples/sudo_logsrvd.conf +++ b/examples/sudo_logsrvd.conf @@ -24,15 +24,19 @@ # The file containing the ID of the running sudo_logsrvd process. #pid_file = /var/run/sudo/sudo_logsrvd.pid +# Where to log server warnings: none, stderr, syslog, or a path name. +#server_log = syslog + # If true, enable the SO_KEEPALIVE socket option on client connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the client to # respond. A value of 0 will disable the timeout. The default value is 30. #timeout = 30 -# If true, the server certificate will be verified at startup and clients -# will authenticate the server by verifying its certificate and identity. +# If true, the server will validate its own certificate at startup. +# Defaults to true. #tls_verify = true # If true, client certificates will be validated by the server; @@ -96,6 +100,7 @@ #store_first = true # If true, enable the SO_KEEPALIVE socket option on relay connections. +# Defaults to true. #tcp_keepalive = true # The amount of time, in seconds, the server will wait for the relay to @@ -182,11 +187,15 @@ #maxseq = 2176782336 [eventlog] -# Where to log accept, reject and alert events. +# Where to log accept, reject, exit and alert events. # Accepted values are syslog, logfile, or none. # Defaults to syslog #log_type = syslog +# Whether to log an event when a command exits or is terminated by a signal. +# Defaults to false +#log_exit = true + # Event log format. # Supported log formats are "sudo" and "json" # Defaults to sudo @@ -219,6 +228,10 @@ # client. #alert_priority = alert +# The syslog facility to use for server warning messages. +# Defaults to daemon. +#server_facility = daemon + [logfile] # The path to the file-based event log. # This path must be fully-qualified and start with a '/' character. diff --git a/include/intercept.pb-c.h b/include/intercept.pb-c.h new file mode 100644 index 000000000..47b161a22 --- /dev/null +++ b/include/intercept.pb-c.h @@ -0,0 +1,367 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: intercept.proto */ + +#ifndef PROTOBUF_C_intercept_2eproto__INCLUDED +#define PROTOBUF_C_intercept_2eproto__INCLUDED + +#include <protobuf-c/protobuf-c.h> + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003003 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _InterceptRequest InterceptRequest; +typedef struct _ClientHello ClientHello; +typedef struct _HelloResponse HelloResponse; +typedef struct _PolicyCheckRequest PolicyCheckRequest; +typedef struct _PolicyAcceptMessage PolicyAcceptMessage; +typedef struct _PolicyRejectMessage PolicyRejectMessage; +typedef struct _PolicyErrorMessage PolicyErrorMessage; +typedef struct _InterceptResponse InterceptResponse; + + +/* --- enums --- */ + + +/* --- messages --- */ + +typedef enum { + INTERCEPT_REQUEST__TYPE__NOT_SET = 0, + INTERCEPT_REQUEST__TYPE_POLICY_CHECK_REQ = 1, + INTERCEPT_REQUEST__TYPE_HELLO = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(INTERCEPT_REQUEST__TYPE) +} InterceptRequest__TypeCase; + +/* + * Intercept message from sudo_intercept.so. Messages on the + * wire are prefixed with a 32-bit size in network byte order. + */ +struct _InterceptRequest +{ + ProtobufCMessage base; + InterceptRequest__TypeCase type_case; + union { + PolicyCheckRequest *policy_check_req; + ClientHello *hello; + } u; +}; +#define INTERCEPT_REQUEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&intercept_request__descriptor) \ + , INTERCEPT_REQUEST__TYPE__NOT_SET, {0} } + + +/* + * Hello message from sudo_intercept.so to main sudo process. + * Sudo sends back the token and localhost port number. + */ +struct _ClientHello +{ + ProtobufCMessage base; + int32_t pid; +}; +#define CLIENT_HELLO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&client_hello__descriptor) \ + , 0 } + + +/* + * Sudo response to a ClientHello from sudo_intercept.so. + * The client uses the port number and token to connect back to sudo. + */ +struct _HelloResponse +{ + ProtobufCMessage base; + uint64_t token_lo; + uint64_t token_hi; + int32_t portno; +}; +#define HELLO_RESPONSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&hello_response__descriptor) \ + , 0, 0, 0 } + + +/* + * Policy check request from sudo_intercept.so. + * Note that the plugin API only currently supports passing + * the new environment in to the open() function. + */ +struct _PolicyCheckRequest +{ + ProtobufCMessage base; + char *command; + char *cwd; + size_t n_argv; + char **argv; + size_t n_envp; + char **envp; + int32_t intercept_fd; +}; +#define POLICY_CHECK_REQUEST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&policy_check_request__descriptor) \ + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0 } + + +struct _PolicyAcceptMessage +{ + ProtobufCMessage base; + char *run_command; + size_t n_run_argv; + char **run_argv; + size_t n_run_envp; + char **run_envp; +}; +#define POLICY_ACCEPT_MESSAGE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&policy_accept_message__descriptor) \ + , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } + + +struct _PolicyRejectMessage +{ + ProtobufCMessage base; + char *reject_message; +}; +#define POLICY_REJECT_MESSAGE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&policy_reject_message__descriptor) \ + , (char *)protobuf_c_empty_string } + + +struct _PolicyErrorMessage +{ + ProtobufCMessage base; + char *error_message; +}; +#define POLICY_ERROR_MESSAGE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&policy_error_message__descriptor) \ + , (char *)protobuf_c_empty_string } + + +typedef enum { + INTERCEPT_RESPONSE__TYPE__NOT_SET = 0, + INTERCEPT_RESPONSE__TYPE_HELLO_RESP = 1, + INTERCEPT_RESPONSE__TYPE_ACCEPT_MSG = 2, + INTERCEPT_RESPONSE__TYPE_REJECT_MSG = 3, + INTERCEPT_RESPONSE__TYPE_ERROR_MSG = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(INTERCEPT_RESPONSE__TYPE) +} InterceptResponse__TypeCase; + +/* + * Response sent back to sudo_intercept.so. + */ +struct _InterceptResponse +{ + ProtobufCMessage base; + InterceptResponse__TypeCase type_case; + union { + HelloResponse *hello_resp; + PolicyAcceptMessage *accept_msg; + PolicyRejectMessage *reject_msg; + PolicyErrorMessage *error_msg; + } u; +}; +#define INTERCEPT_RESPONSE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&intercept_response__descriptor) \ + , INTERCEPT_RESPONSE__TYPE__NOT_SET, {0} } + + +/* InterceptRequest methods */ +void intercept_request__init + (InterceptRequest *message); +size_t intercept_request__get_packed_size + (const InterceptRequest *message); +size_t intercept_request__pack + (const InterceptRequest *message, + uint8_t *out); +size_t intercept_request__pack_to_buffer + (const InterceptRequest *message, + ProtobufCBuffer *buffer); +InterceptRequest * + intercept_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void intercept_request__free_unpacked + (InterceptRequest *message, + ProtobufCAllocator *allocator); +/* ClientHello methods */ +void client_hello__init + (ClientHello *message); +size_t client_hello__get_packed_size + (const ClientHello *message); +size_t client_hello__pack + (const ClientHello *message, + uint8_t *out); +size_t client_hello__pack_to_buffer + (const ClientHello *message, + ProtobufCBuffer *buffer); +ClientHello * + client_hello__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void client_hello__free_unpacked + (ClientHello *message, + ProtobufCAllocator *allocator); +/* HelloResponse methods */ +void hello_response__init + (HelloResponse *message); +size_t hello_response__get_packed_size + (const HelloResponse *message); +size_t hello_response__pack + (const HelloResponse *message, + uint8_t *out); +size_t hello_response__pack_to_buffer + (const HelloResponse *message, + ProtobufCBuffer *buffer); +HelloResponse * + hello_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void hello_response__free_unpacked + (HelloResponse *message, + ProtobufCAllocator *allocator); +/* PolicyCheckRequest methods */ +void policy_check_request__init + (PolicyCheckRequest *message); +size_t policy_check_request__get_packed_size + (const PolicyCheckRequest *message); +size_t policy_check_request__pack + (const PolicyCheckRequest *message, + uint8_t *out); +size_t policy_check_request__pack_to_buffer + (const PolicyCheckRequest *message, + ProtobufCBuffer *buffer); +PolicyCheckRequest * + policy_check_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void policy_check_request__free_unpacked + (PolicyCheckRequest *message, + ProtobufCAllocator *allocator); +/* PolicyAcceptMessage methods */ +void policy_accept_message__init + (PolicyAcceptMessage *message); +size_t policy_accept_message__get_packed_size + (const PolicyAcceptMessage *message); +size_t policy_accept_message__pack + (const PolicyAcceptMessage *message, + uint8_t *out); +size_t policy_accept_message__pack_to_buffer + (const PolicyAcceptMessage *message, + ProtobufCBuffer *buffer); +PolicyAcceptMessage * + policy_accept_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void policy_accept_message__free_unpacked + (PolicyAcceptMessage *message, + ProtobufCAllocator *allocator); +/* PolicyRejectMessage methods */ +void policy_reject_message__init + (PolicyRejectMessage *message); +size_t policy_reject_message__get_packed_size + (const PolicyRejectMessage *message); +size_t policy_reject_message__pack + (const PolicyRejectMessage *message, + uint8_t *out); +size_t policy_reject_message__pack_to_buffer + (const PolicyRejectMessage *message, + ProtobufCBuffer *buffer); +PolicyRejectMessage * + policy_reject_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void policy_reject_message__free_unpacked + (PolicyRejectMessage *message, + ProtobufCAllocator *allocator); +/* PolicyErrorMessage methods */ +void policy_error_message__init + (PolicyErrorMessage *message); +size_t policy_error_message__get_packed_size + (const PolicyErrorMessage *message); +size_t policy_error_message__pack + (const PolicyErrorMessage *message, + uint8_t *out); +size_t policy_error_message__pack_to_buffer + (const PolicyErrorMessage *message, + ProtobufCBuffer *buffer); +PolicyErrorMessage * + policy_error_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void policy_error_message__free_unpacked + (PolicyErrorMessage *message, + ProtobufCAllocator *allocator); +/* InterceptResponse methods */ +void intercept_response__init + (InterceptResponse *message); +size_t intercept_response__get_packed_size + (const InterceptResponse *message); +size_t intercept_response__pack + (const InterceptResponse *message, + uint8_t *out); +size_t intercept_response__pack_to_buffer + (const InterceptResponse *message, + ProtobufCBuffer *buffer); +InterceptResponse * + intercept_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void intercept_response__free_unpacked + (InterceptResponse *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*InterceptRequest_Closure) + (const InterceptRequest *message, + void *closure_data); +typedef void (*ClientHello_Closure) + (const ClientHello *message, + void *closure_data); +typedef void (*HelloResponse_Closure) + (const HelloResponse *message, + void *closure_data); +typedef void (*PolicyCheckRequest_Closure) + (const PolicyCheckRequest *message, + void *closure_data); +typedef void (*PolicyAcceptMessage_Closure) + (const PolicyAcceptMessage *message, + void *closure_data); +typedef void (*PolicyRejectMessage_Closure) + (const PolicyRejectMessage *message, + void *closure_data); +typedef void (*PolicyErrorMessage_Closure) + (const PolicyErrorMessage *message, + void *closure_data); +typedef void (*InterceptResponse_Closure) + (const InterceptResponse *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor intercept_request__descriptor; +extern const ProtobufCMessageDescriptor client_hello__descriptor; +extern const ProtobufCMessageDescriptor hello_response__descriptor; +extern const ProtobufCMessageDescriptor policy_check_request__descriptor; +extern const ProtobufCMessageDescriptor policy_accept_message__descriptor; +extern const ProtobufCMessageDescriptor policy_reject_message__descriptor; +extern const ProtobufCMessageDescriptor policy_error_message__descriptor; +extern const ProtobufCMessageDescriptor intercept_response__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_intercept_2eproto__INCLUDED */ diff --git a/include/log_server.pb-c.h b/include/log_server.pb-c.h index 3463b2f26..b14a04d93 100644 --- a/include/log_server.pb-c.h +++ b/include/log_server.pb-c.h @@ -429,10 +429,14 @@ struct _ServerHello */ size_t n_servers; char **servers; + /* + * flag: server supports sub-commands + */ + protobuf_c_boolean subcommands; }; #define SERVER_HELLO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&server_hello__descriptor) \ - , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL } + , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } /* ClientMessage methods */ diff --git a/include/sudo_compat.h b/include/sudo_compat.h index 29d74d36c..1312cd550 100644 --- a/include/sudo_compat.h +++ b/include/sudo_compat.h @@ -25,6 +25,9 @@ #define SUDO_COMPAT_H #include <sys/types.h> /* for gid_t, mode_t, size_t, ssize_t, uid_t */ +#if defined(__hpux) && !defined(__LP64__) +# include <unistd.h> /* for pread/pread64, and pwrite/pwrite64 */ +#endif #include <stdio.h> #if !defined(HAVE_VSNPRINTF) || !defined(HAVE_VASPRINTF) || \ !defined(HAVE_VSYSLOG) || defined(PREFER_PORTABLE_SNPRINTF) @@ -99,6 +102,26 @@ # endif #endif +#ifndef CMSG_ALIGN +# define CMSG_ALIGN(p) \ + (((size_t)(p) + sizeof(size_t) - 1) & ~(sizeof(size_t) - 1)) +#endif + +/* Length of the contents of a control message of length len. */ +#ifndef CMSG_LEN +# define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) +#endif + +/* Length of the space taken up by a padded control message of length len. */ +#ifndef CMSG_SPACE +# define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) +#endif + +/* Given a pointer to struct cmsghdr, return a pointer to data. */ +#ifndef CMSG_DATA +# define CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr))) +#endif + /* * Some systems lack full limit definitions. */ @@ -327,17 +350,23 @@ int getdomainname(char *, size_t); #endif /* - * HP-UX 11.00 has broken pread/pwrite that can't handle a 64-bit off_t - * on 32-bit machines. + * HP-UX 11.00 has broken pread/pwrite on 32-bit machines when + * _FILE_OFFSET_BITS == 64. Use pread64/pwrite64 instead. */ #if defined(__hpux) && !defined(__LP64__) # ifdef HAVE_PREAD64 # undef pread # define pread(_a, _b, _c, _d) pread64((_a), (_b), (_c), (_d)) +# if defined(HAVE_DECL_PREAD64) && !HAVE_DECL_PREAD64 + ssize_t pread64(int fd, void *buf, size_t nbytes, off64_t offset); +# endif # endif # ifdef HAVE_PWRITE64 # undef pwrite # define pwrite(_a, _b, _c, _d) pwrite64((_a), (_b), (_c), (_d)) +# if defined(HAVE_DECL_PWRITE64) && !HAVE_DECL_PWRITE64 + ssize_t pwrite64(int fd, const void *buf, size_t nbytes, off64_t offset); +# endif # endif #endif /* __hpux && !__LP64__ */ @@ -421,6 +450,11 @@ sudo_dso_public void sudo_setusershell(void); sudo_dso_public void sudo_endusershell(void); # undef endusershell # define endusershell() sudo_endusershell() +#elif HAVE_DECL_GETUSERSHELL == 0 +/* Older Solaris has getusershell() et al but does not declare it. */ +char *getusershell(void); +void setusershell(void); +void endusershell(void); #endif /* HAVE_GETUSERSHELL */ #ifndef HAVE_UTIMENSAT sudo_dso_public int sudo_utimensat(int fd, const char *file, const struct timespec *times, int flag); @@ -550,11 +584,6 @@ sudo_dso_public void *sudo_reallocarray(void *ptr, size_t nmemb, size_t size); # undef reallocarray # define reallocarray(_a, _b, _c) sudo_reallocarray((_a), (_b), (_c)) #endif /* HAVE_REALLOCARRAY */ -#ifndef HAVE_VSYSLOG -sudo_dso_public void sudo_vsyslog(int pri, const char *fmt, va_list ap); -# undef vsyslog -# define vsyslog(_a, _b, _c) sudo_vsyslog((_a), (_b), (_c)) -#endif /* HAVE_VSYSLOG */ #ifndef HAVE_DUP3 sudo_dso_public int sudo_dup3(int oldd, int newd, int flags); # undef dup3 @@ -566,12 +595,12 @@ sudo_dso_public int sudo_pipe2(int fildes[2], int flags); # define pipe2(_a, _b) sudo_pipe2((_a), (_b)) #endif /* HAVE_PIPE2 */ #ifndef HAVE_PREAD -sudo_dso_public int sudo_pread(int fd, void *buf, size_t nbytes, off_t offset); +sudo_dso_public ssize_t sudo_pread(int fd, void *buf, size_t nbytes, off_t offset); # undef pread # define pread(_a, _b, _c, _d) sudo_pread((_a), (_b), (_c), (_d)) #endif /* HAVE_PREAD */ #ifndef HAVE_PWRITE -sudo_dso_public int sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset); +sudo_dso_public ssize_t sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset); # undef pwrite # define pwrite(_a, _b, _c, _d) sudo_pwrite((_a), (_b), (_c), (_d)) #endif /* HAVE_PWRITE */ diff --git a/include/sudo_conf.h b/include/sudo_conf.h index e7c08c855..5e2bad056 100644 --- a/include/sudo_conf.h +++ b/include/sudo_conf.h @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2011-2014 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2011-2017, 2019-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -65,6 +65,7 @@ sudo_dso_public int sudo_conf_read_v1(const char *conf_file, int conf_types); /* Accessor functions. */ sudo_dso_public const char *sudo_conf_askpass_path_v1(void); sudo_dso_public const char *sudo_conf_sesh_path_v1(void); +sudo_dso_public const char *sudo_conf_intercept_path_v1(void); sudo_dso_public const char *sudo_conf_noexec_path_v1(void); sudo_dso_public const char *sudo_conf_plugin_dir_path_v1(void); sudo_dso_public const char *sudo_conf_devsearch_path_v1(void); @@ -79,6 +80,7 @@ sudo_dso_public int sudo_conf_max_groups_v1(void); sudo_dso_public void sudo_conf_clear_paths_v1(void); #define sudo_conf_askpass_path() sudo_conf_askpass_path_v1() #define sudo_conf_sesh_path() sudo_conf_sesh_path_v1() +#define sudo_conf_intercept_path() sudo_conf_intercept_path_v1() #define sudo_conf_noexec_path() sudo_conf_noexec_path_v1() #define sudo_conf_plugin_dir_path() sudo_conf_plugin_dir_path_v1() #define sudo_conf_devsearch_path() sudo_conf_devsearch_path_v1() diff --git a/include/sudo_debug.h b/include/sudo_debug.h index a441874d7..b598aefd0 100644 --- a/include/sudo_debug.h +++ b/include/sudo_debug.h @@ -267,6 +267,7 @@ sudo_dso_public int sudo_debug_parse_flags_v1(struct sudo_conf_debug_file_list * sudo_dso_public void sudo_debug_printf2_v1(const char *func, const char *file, int line, int level, const char *fmt, ...) __printf0like(5, 6); sudo_dso_public void sudo_debug_printf_nvm_v1(int pri, const char *fmt, ...) __printf0like(2, 3); sudo_dso_public int sudo_debug_register_v1(const char *program, const char *const subsystems[], unsigned int ids[], struct sudo_conf_debug_file_list *debug_files); +sudo_dso_public int sudo_debug_register_v2(const char *program, const char *const subsystems[], unsigned int ids[], struct sudo_conf_debug_file_list *debug_files, int minfd); sudo_dso_public int sudo_debug_set_active_instance_v1(int inst); sudo_dso_public void sudo_debug_update_fd_v1(int ofd, int nfd); sudo_dso_public void sudo_debug_vprintf2_v1(const char *func, const char *file, int line, int level, const char *fmt, va_list ap) __printf0like(5, 0); @@ -295,7 +296,7 @@ sudo_dso_public bool sudo_debug_needed_v1(int level); #define sudo_debug_parse_flags(_a, _b) sudo_debug_parse_flags_v1((_a), (_b)) #define sudo_debug_printf2 sudo_debug_printf2_v1 #define sudo_debug_printf_nvm sudo_debug_printf_nvm_v1 -#define sudo_debug_register(_a, _b, _c, _d) sudo_debug_register_v1((_a), (_b), (_c), (_d)) +#define sudo_debug_register(_a, _b, _c, _d, _e) sudo_debug_register_v2((_a), (_b), (_c), (_d), (_e)) #define sudo_debug_set_active_instance(_a) sudo_debug_set_active_instance_v1((_a)) #define sudo_debug_update_fd(_a, _b) sudo_debug_update_fd_v1((_a), (_b)) #define sudo_debug_vprintf2(_a, _b, _c, _d, _e, _f) sudo_debug_vprintf2_v1((_a), (_b), (_c), (_d), (_e), (_f)) diff --git a/include/sudo_eventlog.h b/include/sudo_eventlog.h index 49153e173..74a67dd46 100644 --- a/include/sudo_eventlog.h +++ b/include/sudo_eventlog.h @@ -31,6 +31,7 @@ enum event_type { EVLOG_ACCEPT, EVLOG_REJECT, + EVLOG_EXIT, EVLOG_ALERT }; @@ -110,11 +111,13 @@ struct eventlog { char **env_add; char **envp; struct timespec submit_time; + struct timespec iolog_offset; int lines; int columns; uid_t runuid; gid_t rungid; char sessid[7]; + char uuid_str[37]; }; /* Callback from eventlog code to write log info */ @@ -122,6 +125,7 @@ struct json_container; typedef bool (*eventlog_json_callback_t)(struct json_container *, void *); bool eventlog_accept(const struct eventlog *evlog, int flags, eventlog_json_callback_t info_cb, void *info); +bool eventlog_exit(const struct eventlog *evlog, int flags, struct timespec *run_time, int exit_value, const char *signal_name, bool core_dumped); bool eventlog_alert(const struct eventlog *evlog, int flags, struct timespec *alert_time, const char *reason, const char *errstr); bool eventlog_reject(const struct eventlog *evlog, int flags, const char *reason, eventlog_json_callback_t info_cb, void *info); bool eventlog_store_json(struct json_container *json, const struct eventlog *evlog); diff --git a/lib/eventlog/eventlog.c b/lib/eventlog/eventlog.c index 0c1e74e38..314140c10 100644 --- a/lib/eventlog/eventlog.c +++ b/lib/eventlog/eventlog.c @@ -66,6 +66,8 @@ #define LL_ENV_STR "ENV=" #define LL_CMND_STR "COMMAND=" #define LL_TSID_STR "TSID=" +#define LL_EXIT_STR "EXIT=" +#define LL_SIGNAL_STR "SIGNAL=" #define IS_SESSID(s) ( \ isalnum((unsigned char)(s)[0]) && isalnum((unsigned char)(s)[1]) && \ @@ -75,34 +77,49 @@ isalnum((unsigned char)(s)[6]) && isalnum((unsigned char)(s)[7]) && \ (s)[8] == '\0') +struct eventlog_args { + const char *reason; + const char *errstr; + const char *signal_name; + const struct timespec *event_time; + int exit_value; + bool core_dumped; + eventlog_json_callback_t json_info_cb; + void *json_info; +}; + /* * Allocate and fill in a new logline. */ static char * -new_logline(int flags, const char *message, const char *errstr, +new_logline(int event_type, int flags, struct eventlog_args *args, const struct eventlog *evlog) { const struct eventlog_config *evl_conf = eventlog_getconf(); char *line = NULL, *evstr = NULL; - const char *iolog_file = evlog->iolog_file; + const char *iolog_file; const char *tty, *tsid = NULL; - char sessid[7]; + char exit_str[(((sizeof(int) * 8) + 2) / 3) + 2]; + char sessid[7], offsetstr[64] = ""; size_t len = 0; int i; debug_decl(new_logline, SUDO_DEBUG_UTIL); - if (ISSET(flags, EVLOG_RAW)) { - if (errstr != NULL) { - if (asprintf(&line, "%s: %s", message, errstr) == -1) - goto oom; - } else { - if ((line = strdup(message)) == NULL) - goto oom; + if (ISSET(flags, EVLOG_RAW) || evlog == NULL) { + if (args->reason != NULL) { + if (args->errstr != NULL) { + if (asprintf(&line, "%s: %s", args->reason, args->errstr) == -1) + goto oom; + } else { + if ((line = strdup(args->reason)) == NULL) + goto oom; + } } debug_return_str(line); } /* A TSID may be a sudoers-style session ID or a free-form string. */ + iolog_file = evlog->iolog_file; if (iolog_file != NULL) { if (IS_SESSID(iolog_file)) { sessid[0] = iolog_file[0]; @@ -116,6 +133,17 @@ new_logline(int flags, const char *message, const char *errstr, } else { tsid = iolog_file; } + if (sudo_timespecisset(&evlog->iolog_offset)) { + /* Only write up to two significant digits for the decimal part. */ + if (evlog->iolog_offset.tv_nsec > 10000000) { + (void)snprintf(offsetstr, sizeof(offsetstr), "@%lld.%02ld", + (long long)evlog->iolog_offset.tv_sec, + evlog->iolog_offset.tv_nsec / 10000000); + } else if (evlog->iolog_offset.tv_sec != 0) { + (void)snprintf(offsetstr, sizeof(offsetstr), "@%lld", + (long long)evlog->iolog_offset.tv_sec); + } + } } /* Sudo-format logs use the short form of the ttyname. */ @@ -127,10 +155,10 @@ new_logline(int flags, const char *message, const char *errstr, /* * Compute line length */ - if (message != NULL) - len += strlen(message) + 3; - if (errstr != NULL) - len += strlen(errstr) + 3; + if (args->reason != NULL) + len += strlen(args->reason) + 3; + if (args->errstr != NULL) + len += strlen(args->errstr) + 3; if (evlog->submithost != NULL && !evl_conf->omit_hostname) len += sizeof(LL_HOST_STR) + 2 + strlen(evlog->submithost); if (tty != NULL) @@ -143,8 +171,9 @@ new_logline(int flags, const char *message, const char *errstr, len += sizeof(LL_USER_STR) + 2 + strlen(evlog->runuser); if (evlog->rungroup != NULL) len += sizeof(LL_GROUP_STR) + 2 + strlen(evlog->rungroup); - if (tsid != NULL) - len += sizeof(LL_TSID_STR) + 2 + strlen(tsid); + if (tsid != NULL) { + len += sizeof(LL_TSID_STR) + 2 + strlen(tsid) + strlen(offsetstr); + } if (evlog->env_add != NULL) { size_t evlen = 0; char * const *ep; @@ -171,6 +200,12 @@ new_logline(int flags, const char *message, const char *errstr, for (i = 1; evlog->argv[i] != NULL; i++) len += strlen(evlog->argv[i]) + 1; } + if (event_type == EVLOG_EXIT) { + if (args->signal_name != NULL) + len += sizeof(LL_SIGNAL_STR) + 2 + strlen(args->signal_name); + (void)snprintf(exit_str, sizeof(exit_str), "%d", args->exit_value); + len += sizeof(LL_EXIT_STR) + 2 + strlen(exit_str); + } } /* @@ -180,13 +215,13 @@ new_logline(int flags, const char *message, const char *errstr, goto oom; line[0] = '\0'; - if (message != NULL) { - if (strlcat(line, message, len) >= len || - strlcat(line, errstr ? " : " : " ; ", len) >= len) + if (args->reason != NULL) { + if (strlcat(line, args->reason, len) >= len || + strlcat(line, args->errstr ? " : " : " ; ", len) >= len) goto toobig; } - if (errstr != NULL) { - if (strlcat(line, errstr, len) >= len || + if (args->errstr != NULL) { + if (strlcat(line, args->errstr, len) >= len || strlcat(line, " ; ", len) >= len) goto toobig; } @@ -229,6 +264,7 @@ new_logline(int flags, const char *message, const char *errstr, if (tsid != NULL) { if (strlcat(line, LL_TSID_STR, len) >= len || strlcat(line, tsid, len) >= len || + strlcat(line, offsetstr, len) >= len || strlcat(line, " ; ", len) >= len) goto toobig; } @@ -252,6 +288,18 @@ new_logline(int flags, const char *message, const char *errstr, goto toobig; } } + if (event_type == EVLOG_EXIT) { + if (args->signal_name != NULL) { + if (strlcat(line, " ; ", len) >= len || + strlcat(line, LL_SIGNAL_STR, len) >= len || + strlcat(line, args->signal_name, len) >= len) + goto toobig; + } + if (strlcat(line, " ; ", len) >= len || + strlcat(line, LL_EXIT_STR, len) >= len || + strlcat(line, exit_str, len) >= len) + goto toobig; + } } debug_return_str(line); @@ -369,7 +417,7 @@ exec_mailer(int pipein) _exit(127); } -/* Send a message to MAILTO user */ +/* Send a message to the mailto user */ static bool send_mail(const struct eventlog *evlog, const char *fmt, ...) { @@ -548,19 +596,11 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...) static bool json_add_timestamp(struct json_container *json, const char *name, - const struct timespec *ts) + const struct timespec *ts, bool format_timestamp) { - const struct eventlog_config *evl_conf = eventlog_getconf(); - const char *timefmt = evl_conf->time_fmt; struct json_value json_value; - time_t secs = ts->tv_sec; - char timebuf[1024]; - struct tm *tm; debug_decl(json_add_timestamp, SUDO_DEBUG_PLUGIN); - if ((tm = gmtime(&secs)) == NULL) - debug_return_bool(false); - if (!sudo_json_open_object(json, name)) goto oom; @@ -574,17 +614,27 @@ json_add_timestamp(struct json_container *json, const char *name, if (!sudo_json_add_value(json, "nanoseconds", &json_value)) goto oom; - strftime(timebuf, sizeof(timebuf), "%Y%m%d%H%M%SZ", tm); - json_value.type = JSON_STRING; - json_value.u.string = timebuf; - if (!sudo_json_add_value(json, "iso8601", &json_value)) - goto oom; + if (format_timestamp) { + const struct eventlog_config *evl_conf = eventlog_getconf(); + const char *timefmt = evl_conf->time_fmt; + time_t secs = ts->tv_sec; + char timebuf[1024]; + struct tm *tm; - strftime(timebuf, sizeof(timebuf), timefmt, tm); - json_value.type = JSON_STRING; - json_value.u.string = timebuf; - if (!sudo_json_add_value(json, "localtime", &json_value)) - goto oom; + if ((tm = gmtime(&secs)) != NULL) { + strftime(timebuf, sizeof(timebuf), "%Y%m%d%H%M%SZ", tm); + json_value.type = JSON_STRING; + json_value.u.string = timebuf; // -V507 + if (!sudo_json_add_value(json, "iso8601", &json_value)) + goto oom; + + strftime(timebuf, sizeof(timebuf), timefmt, tm); + json_value.type = JSON_STRING; + json_value.u.string = timebuf; // -V507 + if (!sudo_json_add_value(json, "localtime", &json_value)) + goto oom; + } + } if (!sudo_json_close_object(json)) goto oom; @@ -741,14 +791,15 @@ default_json_cb(struct json_container *json, void *v) } static char * -format_json(int event_type, const char *reason, const char *errstr, - const struct eventlog *evlog, const struct timespec *event_time, - eventlog_json_callback_t info_cb, void *info, bool compact) +format_json(int event_type, struct eventlog_args *args, + const struct eventlog *evlog, bool compact) { - const char *type_str; - const char *time_str; + eventlog_json_callback_t info_cb = args->json_info_cb; + void *info = args->json_info; struct json_container json = { 0 }; struct json_value json_value; + const char *time_str, *type_str; + bool format_timestamp = true; struct timespec now; debug_decl(format_json, SUDO_DEBUG_UTIL); @@ -776,6 +827,11 @@ format_json(int event_type, const char *reason, const char *errstr, type_str = "alert"; time_str = "alert_time"; break; + case EVLOG_EXIT: + type_str = "exit"; + time_str = "run_time"; + format_timestamp = false; + break; default: sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "unexpected event type %d", event_type); @@ -787,19 +843,28 @@ format_json(int event_type, const char *reason, const char *errstr, if (!sudo_json_open_object(&json, type_str)) goto bad; + if (evlog != NULL && evlog->uuid_str[0] != '\0') { + json_value.type = JSON_STRING; + json_value.u.string = evlog->uuid_str; + if (!sudo_json_add_value(&json, "uuid", &json_value)) + goto bad; + } + /* Reject and Alert events include a reason and optional error string. */ - if (reason != NULL) { + if (args->reason != NULL) { char *ereason = NULL; - if (errstr != NULL) { - if (asprintf(&ereason, _("%s: %s"), reason, errstr) == -1) { + if (args->errstr != NULL) { + const int len = asprintf(&ereason, _("%s: %s"), args->reason, + args->errstr); + if (len == -1) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } json_value.type = JSON_STRING; - json_value.u.string = ereason ? ereason : reason; + json_value.u.string = ereason ? ereason : args->reason; if (!sudo_json_add_value(&json, "reason", &json_value)) { free(ereason); goto bad; @@ -807,22 +872,44 @@ format_json(int event_type, const char *reason, const char *errstr, free(ereason); } - /* XXX - create and log uuid? */ - /* Log event time on server (set earlier) */ - if (!json_add_timestamp(&json, "server_time", &now)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO, + if (!json_add_timestamp(&json, "server_time", &now, true)) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "unable format timestamp"); goto bad; } /* Log event time from client */ - if (!json_add_timestamp(&json, time_str, event_time)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO, + if (!json_add_timestamp(&json, time_str, args->event_time, format_timestamp)) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "unable format timestamp"); goto bad; } + if (event_type == EVLOG_EXIT) { + /* Exit events don't need evlog details if there is a UUID. */ + if (evlog != NULL && evlog->uuid_str[0] != '\0') { + if (args->json_info == NULL) + info = NULL; + } + + if (args->signal_name != NULL) { + json_value.type = JSON_STRING; + json_value.u.string = args->signal_name; + if (!sudo_json_add_value(&json, "signal", &json_value)) + goto bad; + + json_value.type = JSON_BOOL; + json_value.u.boolean = args->signal_name; + if (!sudo_json_add_value(&json, "dumped_core", &json_value)) + goto bad; + } + json_value.type = JSON_NUMBER; + json_value.u.number = args->exit_value; + if (!sudo_json_add_value(&json, "exit_value", &json_value)) + goto bad; + } + /* Event log info may be missing for alert messages. */ if (evlog != NULL) { if (evlog->peeraddr != NULL) { @@ -837,9 +924,19 @@ format_json(int event_type, const char *reason, const char *errstr, json_value.u.string = evlog->iolog_path; if (!sudo_json_add_value(&json, "iolog_path", &json_value)) goto bad; + + if (sudo_timespecisset(&evlog->iolog_offset)) { + if (!json_add_timestamp(&json, "iolog_offset", &evlog->iolog_offset, false)) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unable format timestamp"); + goto bad; + } + } } + } - /* Write log info. */ + /* Write log info. */ + if (info != NULL) { if (!info_cb(&json, info)) goto bad; } @@ -919,18 +1016,15 @@ done: } static bool -do_syslog_json(int pri, int event_type, const char *reason, - const char *errstr, const struct eventlog *evlog, - const struct timespec *event_time, - eventlog_json_callback_t info_cb, void *info) +do_syslog_json(int pri, int event_type, struct eventlog_args *args, + const struct eventlog *evlog) { const struct eventlog_config *evl_conf = eventlog_getconf(); char *json_str; debug_decl(do_syslog_json, SUDO_DEBUG_UTIL); /* Format as a compact JSON message (no newlines) */ - json_str = format_json(event_type, reason, errstr, evlog, event_time, - info_cb, info, true); + json_str = format_json(event_type, args, evlog, true); if (json_str == NULL) debug_return_bool(false); @@ -947,9 +1041,8 @@ do_syslog_json(int pri, int event_type, const char *reason, * Log a message to syslog in either sudo or JSON format. */ static bool -do_syslog(int event_type, int flags, const char *reason, const char *errstr, - const struct eventlog *evlog, const struct timespec *event_time, - eventlog_json_callback_t info_cb, void *info) +do_syslog(int event_type, int flags, struct eventlog_args *args, + const struct eventlog *evlog) { const struct eventlog_config *evl_conf = eventlog_getconf(); char *logline = NULL; @@ -959,7 +1052,7 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr, /* Sudo format logs and mailed logs use the same log line format. */ if (evl_conf->format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) { - logline = new_logline(flags, reason, errstr, evlog); + logline = new_logline(event_type, flags, args, evlog); if (logline == NULL) debug_return_bool(false); @@ -977,6 +1070,7 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr, switch (event_type) { case EVLOG_ACCEPT: + case EVLOG_EXIT: pri = evl_conf->syslog_acceptpri; break; case EVLOG_REJECT: @@ -1002,8 +1096,7 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr, ret = do_syslog_sudo(pri, logline, evlog); break; case EVLOG_JSON: - ret = do_syslog_json(pri, event_type, reason, errstr, evlog, - event_time, info_cb, info); + ret = do_syslog_json(pri, event_type, args, evlog); break; default: sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, @@ -1069,9 +1162,8 @@ done: } static bool -do_logfile_json(int event_type, const char *reason, const char *errstr, - const struct eventlog *evlog, const struct timespec *event_time, - eventlog_json_callback_t info_cb, void *info) +do_logfile_json(int event_type, struct eventlog_args *args, + const struct eventlog *evlog) { const struct eventlog_config *evl_conf = eventlog_getconf(); const char *logfile = evl_conf->logpath; @@ -1084,8 +1176,7 @@ do_logfile_json(int event_type, const char *reason, const char *errstr, if ((fp = evl_conf->open_log(EVLOG_FILE, logfile)) == NULL) debug_return_bool(false); - json_str = format_json(event_type, reason, errstr, evlog, event_time, - info_cb, info, false); + json_str = format_json(event_type, args, evlog, false); if (json_str == NULL) goto done; @@ -1127,9 +1218,8 @@ done: } static bool -do_logfile(int event_type, int flags, const char *reason, const char *errstr, - const struct eventlog *evlog, const struct timespec *event_time, - eventlog_json_callback_t info_cb, void *info) +do_logfile(int event_type, int flags, struct eventlog_args *args, + const struct eventlog *evlog) { const struct eventlog_config *evl_conf = eventlog_getconf(); bool ret = false; @@ -1138,7 +1228,7 @@ do_logfile(int event_type, int flags, const char *reason, const char *errstr, /* Sudo format logs and mailed logs use the same log line format. */ if (evl_conf->format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) { - logline = new_logline(flags, reason, errstr, evlog); + logline = new_logline(event_type, flags, args, evlog); if (logline == NULL) debug_return_bool(false); @@ -1156,11 +1246,11 @@ do_logfile(int event_type, int flags, const char *reason, const char *errstr, switch (evl_conf->format) { case EVLOG_SUDO: - ret = do_logfile_sudo(logline ? logline : reason, evlog, event_time); + ret = do_logfile_sudo(logline ? logline : args->reason, evlog, + args->event_time); break; case EVLOG_JSON: - ret = do_logfile_json(event_type, reason, errstr, evlog, - event_time, info_cb, info); + ret = do_logfile_json(event_type, args, evlog); break; default: sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, @@ -1178,21 +1268,21 @@ eventlog_accept(const struct eventlog *evlog, int flags, { const struct eventlog_config *evl_conf = eventlog_getconf(); const int log_type = evl_conf->type; + struct eventlog_args args = { NULL }; bool ret = true; debug_decl(log_accept, SUDO_DEBUG_UTIL); - if (log_type == EVLOG_NONE) - debug_return_bool(true); + args.event_time = &evlog->submit_time; + args.json_info_cb = info_cb; + args.json_info = info; if (ISSET(log_type, EVLOG_SYSLOG)) { - if (!do_syslog(EVLOG_ACCEPT, flags, NULL, NULL, evlog, - &evlog->submit_time, info_cb, info)) + if (!do_syslog(EVLOG_ACCEPT, flags, &args, evlog)) ret = false; CLR(flags, EVLOG_MAIL); } if (ISSET(log_type, EVLOG_FILE)) { - if (!do_logfile(EVLOG_ACCEPT, flags, NULL, NULL, evlog, - &evlog->submit_time, info_cb, info)) + if (!do_logfile(EVLOG_ACCEPT, flags, &args, evlog)) ret = false; } @@ -1205,18 +1295,22 @@ eventlog_reject(const struct eventlog *evlog, int flags, const char *reason, { const struct eventlog_config *evl_conf = eventlog_getconf(); const int log_type = evl_conf->type; + struct eventlog_args args = { NULL }; bool ret = true; debug_decl(log_reject, SUDO_DEBUG_UTIL); + args.reason = reason; + args.event_time = &evlog->submit_time; + args.json_info_cb = info_cb; + args.json_info = info; + if (ISSET(log_type, EVLOG_SYSLOG)) { - if (!do_syslog(EVLOG_REJECT, flags, reason, NULL, evlog, - &evlog->submit_time, info_cb, info)) + if (!do_syslog(EVLOG_REJECT, flags, &args, evlog)) ret = false; CLR(flags, EVLOG_MAIL); } if (ISSET(log_type, EVLOG_FILE)) { - if (!do_logfile(EVLOG_REJECT, flags, reason, NULL, evlog, - &evlog->submit_time, info_cb, info)) + if (!do_logfile(EVLOG_REJECT, flags, &args, evlog)) ret = false; } @@ -1229,18 +1323,50 @@ eventlog_alert(const struct eventlog *evlog, int flags, { const struct eventlog_config *evl_conf = eventlog_getconf(); const int log_type = evl_conf->type; + struct eventlog_args args = { NULL }; bool ret = true; debug_decl(log_alert, SUDO_DEBUG_UTIL); + args.reason = reason; + args.errstr = errstr; + args.event_time = alert_time; + + if (ISSET(log_type, EVLOG_SYSLOG)) { + if (!do_syslog(EVLOG_ALERT, flags, &args, evlog)) + ret = false; + CLR(flags, EVLOG_MAIL); + } + if (ISSET(log_type, EVLOG_FILE)) { + if (!do_logfile(EVLOG_ALERT, flags, &args, evlog)) + ret = false; + } + + debug_return_bool(ret); +} + +bool +eventlog_exit(const struct eventlog *evlog, int flags, + struct timespec *run_time, int exit_value, const char *signal_name, + bool core_dumped) +{ + const struct eventlog_config *evl_conf = eventlog_getconf(); + const int log_type = evl_conf->type; + struct eventlog_args args = { NULL }; + bool ret = true; + debug_decl(eventlog_exit, SUDO_DEBUG_UTIL); + + args.signal_name = signal_name; + args.core_dumped = core_dumped; + args.exit_value = exit_value; + args.event_time = run_time; + if (ISSET(log_type, EVLOG_SYSLOG)) { - if (!do_syslog(EVLOG_ALERT, flags, reason, errstr, evlog, alert_time, - NULL, NULL)) + if (!do_syslog(EVLOG_EXIT, flags, &args, evlog)) ret = false; CLR(flags, EVLOG_MAIL); } if (ISSET(log_type, EVLOG_FILE)) { - if (!do_logfile(EVLOG_ALERT, flags, reason, errstr, evlog, alert_time, - NULL, NULL)) + if (!do_logfile(EVLOG_EXIT, flags, &args, evlog)) ret = false; } diff --git a/lib/iolog/iolog_mkdtemp.c b/lib/iolog/iolog_mkdtemp.c index 72c180414..e7904e312 100644 --- a/lib/iolog/iolog_mkdtemp.c +++ b/lib/iolog/iolog_mkdtemp.c @@ -48,12 +48,17 @@ bool iolog_mkdtemp(char *path) { + const mode_t iolog_filemode = iolog_get_file_mode(); const mode_t iolog_dirmode = iolog_get_dir_mode(); const uid_t iolog_uid = iolog_get_uid(); const gid_t iolog_gid = iolog_get_gid(); bool ok, uid_changed = false; + mode_t omask; debug_decl(iolog_mkdtemp, SUDO_DEBUG_UTIL); + /* umask must not be more restrictive than the file modes. */ + omask = umask(ACCESSPERMS & ~(iolog_filemode|iolog_dirmode)); + ok = sudo_mkdir_parents(path, iolog_uid, iolog_gid, iolog_dirmode, true); if (!ok && errno == EACCES) { /* Try again as the I/O log owner (for NFS). */ @@ -79,6 +84,8 @@ iolog_mkdtemp(char *path) } } + umask(omask); + if (uid_changed) { if (!iolog_swapids(true)) ok = false; diff --git a/lib/iolog/iolog_timing.c b/lib/iolog/iolog_timing.c index b7375050c..9eddce8ea 100644 --- a/lib/iolog/iolog_timing.c +++ b/lib/iolog/iolog_timing.c @@ -114,6 +114,11 @@ iolog_parse_delay(const char *cp, struct timespec *delay, /* Radix may be in user's locale for sudo < 1.7.4 so accept that too. */ if (*ep != '.' && *ep != *decimal_point) { + if (*ep == '\0' || isspace((unsigned char)*ep)) { + /* No fractional part. */ + delay->tv_nsec = 0; + goto done; + } sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "invalid characters after seconds: %s", ep); debug_return_ptr(NULL); @@ -152,6 +157,7 @@ iolog_parse_delay(const char *cp, struct timespec *delay, } delay->tv_nsec = (long)llval; +done: /* Advance to the next field. */ while (isspace((unsigned char)*ep)) ep++; diff --git a/lib/logsrv/Makefile.in b/lib/logsrv/Makefile.in index 9e714e400..58378c8af 100644 --- a/lib/logsrv/Makefile.in +++ b/lib/logsrv/Makefile.in @@ -34,6 +34,9 @@ incdir = $(top_srcdir)/include CC = @CC@ LIBTOOL = @LIBTOOL@ +# Libraries +LT_LIBS = $(top_builddir)/lib/protobuf-c/libprotobuf-c.la + # C preprocessor flags CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@ @@ -73,7 +76,7 @@ DEVEL = @DEVEL@ SHELL = @SHELL@ -LIBLOGSRV_OBJS = protobuf-c.lo log_server.pb-c.lo +LIBLOGSRV_OBJS = log_server.pb-c.lo IOBJS = $(LIBLOGSRV_OBJS:.lo=.i) @@ -121,8 +124,8 @@ $(devdir)/log_server.pb-c.c: $(srcdir)/log_server.proto echo "$$cmd"; eval $$cmd; \ fi -liblogsrv.la: $(LIBLOGSRV_OBJS) - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBLOGSRV_OBJS) +liblogsrv.la: $(LIBLOGSRV_OBJS) $(LT_LIBS) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBLOGSRV_OBJS) $(LT_LIBS) pre-install: @@ -185,11 +188,3 @@ log_server.pb-c.i: $(srcdir)/log_server.pb-c.c $(incdir)/log_server.pb-c.h \ $(CC) -E -o $@ $(CPPFLAGS) $< log_server.pb-c.plog: log_server.pb-c.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/log_server.pb-c.c --i-file $< --output-file $@ -protobuf-c.lo: $(srcdir)/protobuf-c.c $(incdir)/protobuf-c/protobuf-c.h \ - $(top_builddir)/config.h - $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/protobuf-c.c -protobuf-c.i: $(srcdir)/protobuf-c.c $(incdir)/protobuf-c/protobuf-c.h \ - $(top_builddir)/config.h - $(CC) -E -o $@ $(CPPFLAGS) $< -protobuf-c.plog: protobuf-c.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/protobuf-c.c --i-file $< --output-file $@ diff --git a/lib/logsrv/log_server.pb-c.c b/lib/logsrv/log_server.pb-c.c index 51f4ef0bf..e46bc1094 100644 --- a/lib/logsrv/log_server.pb-c.c +++ b/lib/logsrv/log_server.pb-c.c @@ -1687,7 +1687,7 @@ const ProtobufCMessageDescriptor server_message__descriptor = (ProtobufCMessageInit) server_message__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor server_hello__field_descriptors[3] = +static const ProtobufCFieldDescriptor server_hello__field_descriptors[4] = { { "server_id", @@ -1725,16 +1725,29 @@ static const ProtobufCFieldDescriptor server_hello__field_descriptors[3] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "subcommands", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(ServerHello, subcommands), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned server_hello__field_indices_by_name[] = { 1, /* field[1] = redirect */ 0, /* field[0] = server_id */ 2, /* field[2] = servers */ + 3, /* field[3] = subcommands */ }; static const ProtobufCIntRange server_hello__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 3 } + { 0, 4 } }; const ProtobufCMessageDescriptor server_hello__descriptor = { @@ -1744,7 +1757,7 @@ const ProtobufCMessageDescriptor server_hello__descriptor = "ServerHello", "", sizeof(ServerHello), - 3, + 4, server_hello__field_descriptors, server_hello__field_indices_by_name, 1, server_hello__number_ranges, diff --git a/lib/logsrv/log_server.proto b/lib/logsrv/log_server.proto index 9c7973784..23b716ebf 100644 --- a/lib/logsrv/log_server.proto +++ b/lib/logsrv/log_server.proto @@ -132,4 +132,5 @@ message ServerHello { string server_id = 1; /* free-form server description */ string redirect = 2; /* optional redirect if busy */ repeated string servers = 3; /* optional list of known servers */ + bool subcommands = 4; /* flag: server supports sub-commands */ } diff --git a/lib/protobuf-c/Makefile.in b/lib/protobuf-c/Makefile.in new file mode 100644 index 000000000..f3a2d0526 --- /dev/null +++ b/lib/protobuf-c/Makefile.in @@ -0,0 +1,181 @@ +# +# SPDX-License-Identifier: ISC +# +# Copyright (c) 2019-2020 Todd C. Miller <Todd.Miller@sudo.ws> +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# @configure_input@ +# + +#### Start of system configuration section. #### + +srcdir = @srcdir@ +abs_srcdir = @abs_srcdir@ +top_srcdir = @top_srcdir@ +abs_top_srcdir = @abs_top_srcdir@ +top_builddir = @top_builddir@ +abs_top_builddir = @abs_top_builddir@ +devdir = @devdir@ +scriptdir = $(top_srcdir)/scripts +incdir = $(top_srcdir)/include + +# Compiler & tools to use +CC = @CC@ +LIBTOOL = @LIBTOOL@ + +# C preprocessor flags +CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@ + +# Usually -O and/or -g +CFLAGS = @CFLAGS@ + +# Flags to pass to libtool +LTFLAGS = @LT_STATIC@ + +# Address sanitizer flags +ASAN_CFLAGS = @ASAN_CFLAGS@ +ASAN_LDFLAGS = @ASAN_LDFLAGS@ + +# PIE flags +PIE_CFLAGS = @PIE_CFLAGS@ +PIE_LDFLAGS = @PIE_LDFLAGS@ + +# Stack smashing protection flags +SSP_CFLAGS = @SSP_CFLAGS@ +SSP_LDFLAGS = @SSP_LDFLAGS@ + +# cppcheck options, usually set in the top-level Makefile +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 + +# splint options, usually set in the top-level Makefile +SPLINT_OPTS = -D__restrict= -checks + +# PVS-studio options +PVS_CFG = $(top_srcdir)/PVS-Studio.cfg +PVS_IGNORE = 'V707,V011,V002,V536' +PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE) + +# Set to non-empty for development mode +DEVEL = @DEVEL@ + +#### End of system configuration section. #### + +SHELL = @SHELL@ + +LIBPROTOBUF_C_OBJS = protobuf-c.lo + +IOBJS = $(LIBPROTOBUF_C_OBJS:.lo=.i) + +POBJS = $(IOBJS:.i=.plog) + +all: libprotobuf-c.la + +pvs-log-files: $(POBJS) + +pvs-studio: $(POBJS) + plog-converter $(PVS_LOG_OPTS) $(POBJS) + +depend: + $(scriptdir)/mkdep.pl --srcdir=$(abs_top_srcdir) \ + --builddir=$(abs_top_builddir) lib/protobuf-c/Makefile.in + cd $(top_builddir) && ./config.status --file lib/protobuf-c/Makefile + +Makefile: $(srcdir)/Makefile.in + cd $(top_builddir) && ./config.status --file lib/protobuf-c/Makefile + +.SUFFIXES: .c .h .i .lo .plog + +.c.lo: + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $< + +.c.i: + $(CC) -E -o $@ $(CPPFLAGS) $< + +.i.plog: + ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@ + +$(devdir)/log_server.pb-c.c: $(srcdir)/log_server.proto + @if [ -n "$(DEVEL)" ]; then \ + cmd='protoc-c --c_out=$(devdir) --proto_path=$(srcdir) $(srcdir)/log_server.proto'; \ + echo "$$cmd"; eval $$cmd; \ + cmd='$(scriptdir)/unanon $(devdir)/log_server.pb-c.h $(devdir)/log_server.pb-c.c'; \ + echo "$$cmd"; eval $$cmd; \ + if [ "$(devdir)" == "$(srcdir)" ]; then \ + cmd='mv -f $(devdir)/log_server.pb-c.h $(incdir)/log_server.pb-c.h'; \ + else \ + cmd='mv -f $(devdir)/log_server.pb-c.h $(top_builddir)/log_server.pb-c.h'; \ + fi; \ + echo "$$cmd"; eval $$cmd; \ + fi + +libprotobuf-c.la: $(LIBPROTOBUF_C_OBJS) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBPROTOBUF_C_OBJS) + +pre-install: + +install: + +install-binaries: + +install-includes: + +install-doc: + +install-plugin: + +install-fuzzer: + +uninstall: + +splint: + splint $(SPLINT_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c + +cppcheck: + cppcheck $(CPPCHECK_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c + +pvs-log-files: $(POBJS) + +fuzz: + +check-fuzzer: + +check: check-fuzzer + +clean: + -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f *.lo *.o *.la + -rm -f *.i *.plog stamp-* core *.core core.* + +mostlyclean: clean + +distclean: clean + -rm -rf Makefile .libs + +clobber: distclean + +realclean: distclean + rm -f TAGS tags + +cleandir: realclean + +.PHONY: clean mostlyclean distclean cleandir clobber realclean + +# Autogenerated dependencies, do not modify +protobuf-c.lo: $(srcdir)/protobuf-c.c $(incdir)/protobuf-c/protobuf-c.h \ + $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/protobuf-c.c +protobuf-c.i: $(srcdir)/protobuf-c.c $(incdir)/protobuf-c/protobuf-c.h \ + $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +protobuf-c.plog: protobuf-c.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/protobuf-c.c --i-file $< --output-file $@ diff --git a/lib/logsrv/protobuf-c.c b/lib/protobuf-c/protobuf-c.c index 0325bc04c..0325bc04c 100644 --- a/lib/logsrv/protobuf-c.c +++ b/lib/protobuf-c/protobuf-c.c diff --git a/lib/util/Makefile.in b/lib/util/Makefile.in index e23dde9cd..740af7f78 100644 --- a/lib/util/Makefile.in +++ b/lib/util/Makefile.in @@ -50,6 +50,9 @@ shlib_opt = util.opt # Compiler & tools to use CC = @CC@ +HOSTCC = @CC_FOR_BUILD@ +CPP = @CPP@ +HOSTCPP = @CPP_FOR_BUILD@ LIBTOOL = @LIBTOOL@ SED = @SED@ AWK = @AWK@ @@ -65,9 +68,12 @@ CPPDEFS = -D_PATH_SUDO_CONF=\"$(sysconfdir)/sudo.conf\" # C preprocessor flags CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) $(CPPDEFS) @CPPFLAGS@ \ -DDEFAULT_TEXT_DOMAIN=\"@PACKAGE_NAME@\" +HOSTCPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) $(CPPDEFS) \ + @CPPFLAGS_FOR_BUILD@ -DDEFAULT_TEXT_DOMAIN=\"@PACKAGE_NAME@\" # Usually -O and/or -g CFLAGS = @CFLAGS@ +HOSTCFLAGS = @CFLAGS_FOR_BUILD@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ @@ -103,9 +109,10 @@ PVS_IGNORE = 'V707,V011,V002,V536' PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE) # Regression tests -TEST_PROGS = conf_test hltq_test parseln_test progname_test strsplit_test \ - strtobool_test strtoid_test strtomode_test strtonum_test \ - parse_gids_test getgids getgrouplist_test @COMPAT_TEST_PROGS@ +TEST_PROGS = conf_test hltq_test parseln_test progname_test \ + strsplit_test strtobool_test strtoid_test strtomode_test \ + strtonum_test parse_gids_test getgids getgrouplist_test \ + uuid_test @COMPAT_TEST_PROGS@ TEST_LIBS = @LIBS@ TEST_LDFLAGS = @LDFLAGS@ @@ -176,7 +183,7 @@ GETGROUPLIST_TEST_OBJS = getgrouplist_test.lo getgrouplist.lo STRSIG_TEST_OBJS = strsig_test.lo sig2str.lo str2sig.lo @SIGNAME@ -VSYSLOG_TEST_OBJS = vsyslog_test.lo vsyslog.lo +UUID_TEST_OBJS = uuid_test.lo uuid.lo FUZZ_SUDO_CONF_OBJS = fuzz_sudo_conf.lo @@ -228,22 +235,28 @@ siglist.c: mksiglist signame.c: mksigname ./mksigname > $@ -mksiglist: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(CC) $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksiglist.c -o $@ +mksiglist: $(srcdir)/mksiglist.c mksiglist.h $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(HOSTCC) $(HOSTCPPFLAGS) $(HOSTCFLAGS) $(srcdir)/mksiglist.c -o $@ -mksigname: $(srcdir)/mksigname.c $(srcdir)/mksigname.h $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(CC) $(CPPFLAGS) $(CFLAGS) $(srcdir)/mksigname.c -o $@ +mksigname: $(srcdir)/mksigname.c mksigname.h $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(HOSTCC) $(HOSTCPPFLAGS) $(HOSTCFLAGS) $(srcdir)/mksigname.c -o $@ -$(srcdir)/mksiglist.h: $(srcdir)/siglist.in +$(srcdir)/sys_siglist.h: $(srcdir)/siglist.in @if [ -n "$(DEVEL)" ]; then \ - $(AWK) 'BEGIN {print "/* public domain */\n"} /^ [A-Z]/ {printf("#ifdef SIG%s\n if (sudo_sys_siglist[SIG%s] == NULL)\n\tsudo_sys_siglist[SIG%s] = \"%s\";\n#endif\n", $$1, $$1, $$1, substr($$0, 13))}' < $(srcdir)/siglist.in > $@; \ + $(AWK) 'BEGIN {print "/* public domain */\n\n#include <config.h>\n#include <sys/types.h>\n#include <signal.h>\n#include \"sudo_compat.h\"\n\nint sudo_end_of_headers;\nstatic char *sudo_sys_siglist[NSIG];\n"} /^ [A-Z]/ {printf("#ifdef SIG%s\n if (sudo_sys_siglist[SIG%s] == NULL)\n\tsudo_sys_siglist[SIG%s] = \"%s\";\n#endif\n", $$1, $$1, $$1, substr($$0, 13))}' < $(srcdir)/siglist.in > $@; \ fi -$(srcdir)/mksigname.h: $(srcdir)/siglist.in +$(srcdir)/sys_signame.h: $(srcdir)/siglist.in @if [ -n "$(DEVEL)" ]; then \ - $(AWK) 'BEGIN {print "/* public domain */\n"} /^ [A-Z]/ {printf("#ifdef SIG%s\n if (sudo_sys_signame[SIG%s] == NULL)\n\tsudo_sys_signame[SIG%s] = \"%s\";\n#endif\n", $$1, $$1, $$1, $$1)}' < $(srcdir)/siglist.in > $@; \ + $(AWK) 'BEGIN {print "/* public domain */\n\n#include <config.h>\n#include <sys/types.h>\n#include <signal.h>\n#include \"sudo_compat.h\"\n\nint sudo_end_of_headers;\nstatic char *sudo_sys_signame[NSIG];\n"} /^ [A-Z]/ {printf("#ifdef SIG%s\n if (sudo_sys_signame[SIG%s] == NULL)\n\tsudo_sys_signame[SIG%s] = \"%s\";\n#endif\n", $$1, $$1, $$1, $$1)}' < $(srcdir)/siglist.in > $@; \ fi +mksiglist.h: $(srcdir)/sys_siglist.h + $(CPP) $(CPPFLAGS) $(srcdir)/sys_siglist.h | sed -e '1,/^int sudo_end_of_headers;/d' -e '/^#/d' > mksiglist.h + +mksigname.h: $(srcdir)/sys_signame.h + $(CPP) $(CPPFLAGS) $(srcdir)/sys_signame.h | sed -e '1,/^int sudo_end_of_headers;/d' -e '/^#/d' > mksigname.h + conf_test: $(CONF_TEST_OBJS) libsudo_util.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CONF_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) @@ -295,8 +308,8 @@ strtonum_test: $(STRTONUM_TEST_OBJS) libsudo_util.la strtoid_test: $(STRTOID_TEST_OBJS) libsudo_util.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(STRTOID_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -vsyslog_test: $(VSYSLOG_TEST_OBJS) libsudo_util.la - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(VSYSLOG_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) +uuid_test: $(UUID_TEST_OBJS) libsudo_util.la + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(UUID_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) fuzz_sudo_conf: $(FUZZ_SUDO_CONF_OBJS) $(LIBFUZZSTUB) libsudo_util.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(FUZZ_SUDO_CONF_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) libsudo_util.la @@ -429,14 +442,12 @@ check: $(TEST_PROGS) check-fuzzer ./strtoid_test || rval=`expr $$rval + $$?`; \ ./strtomode_test || rval=`expr $$rval + $$?`; \ ./strtonum_test || rval=`expr $$rval + $$?`; \ + ./uuid_test || rval=`expr $$rval + $$?`; \ ./hltq_test || rval=`expr $$rval + $$?`; \ ./progname_test || rval=`expr $$rval + $$?`; \ rm -f ./progname_test2; ln -s ./progname_test ./progname_test2; \ ./progname_test2 || rval=`expr $$rval + $$?`; \ rm -f ./progname_test2; \ - if test -f vsyslog_test; then \ - ./vsyslog_test || rval=`expr $$rval + $$?`; \ - fi; \ build_dir=`pwd`; \ cd $(srcdir); \ for dir in sudo_conf sudo_parseln; do \ @@ -496,8 +507,8 @@ clean: mostlyclean: clean distclean: clean - -rm -rf Makefile mksiglist siglist.c mksigname signame.c .libs \ - $(shlib_exp) $(shlib_map) $(shlib_opt) + -rm -rf Makefile mksiglist mksiglist.h siglist.c mksigname \ + mksigname.h signame.c .libs $(shlib_exp) $(shlib_map) $(shlib_opt) clobber: distclean @@ -1216,15 +1227,15 @@ sig2str.i: $(srcdir)/sig2str.c $(incdir)/compat/stdbool.h \ $(CC) -E -o $@ $(CPPFLAGS) $< sig2str.plog: sig2str.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sig2str.c --i-file $< --output-file $@ -siglist.lo: siglist.c $(incdir)/sudo_compat.h $(top_builddir)/config.h +siglist.lo: siglist.c $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) siglist.c -siglist.i: siglist.c $(incdir)/sudo_compat.h $(top_builddir)/config.h +siglist.i: siglist.c $(CC) -E -o $@ $(CPPFLAGS) $< siglist.plog: siglist.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file siglist.c --i-file $< --output-file $@ -signame.lo: signame.c $(incdir)/sudo_compat.h $(top_builddir)/config.h +signame.lo: signame.c $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) signame.c -signame.i: signame.c $(incdir)/sudo_compat.h $(top_builddir)/config.h +signame.i: signame.c $(CC) -E -o $@ $(CPPFLAGS) $< signame.plog: signame.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file signame.c --i-file $< --output-file $@ @@ -1510,21 +1521,15 @@ uuid.i: $(srcdir)/uuid.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(CC) -E -o $@ $(CPPFLAGS) $< uuid.plog: uuid.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/uuid.c --i-file $< --output-file $@ -vsyslog.lo: $(srcdir)/vsyslog.c $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/vsyslog.c -vsyslog.i: $(srcdir)/vsyslog.c $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(CC) -E -o $@ $(CPPFLAGS) $< -vsyslog.plog: vsyslog.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/vsyslog.c --i-file $< --output-file $@ -vsyslog_test.lo: $(srcdir)/regress/vsyslog/vsyslog_test.c \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_util.h $(top_builddir)/config.h - $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/vsyslog/vsyslog_test.c -vsyslog_test.i: $(srcdir)/regress/vsyslog/vsyslog_test.c \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_util.h $(top_builddir)/config.h +uuid_test.lo: $(srcdir)/regress/uuid/uuid_test.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/uuid/uuid_test.c +uuid_test.i: $(srcdir)/regress/uuid/uuid_test.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< -vsyslog_test.plog: vsyslog_test.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/vsyslog/vsyslog_test.c --i-file $< --output-file $@ +uuid_test.plog: uuid_test.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/uuid/uuid_test.c --i-file $< --output-file $@ diff --git a/lib/util/mksiglist.c b/lib/util/mksiglist.c index d730a2792..2c99b21cd 100644 --- a/lib/util/mksiglist.c +++ b/lib/util/mksiglist.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2012, 2015 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2010-2012, 2015, 2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -34,21 +34,16 @@ sudo_dso_public int main(int argc, char *argv[]); int main(int argc, char *argv[]) { - static char *sudo_sys_siglist[NSIG]; - int i; + unsigned int i; #include "mksiglist.h" - printf("#include <config.h>\n"); - printf("#include <sys/types.h>\n"); - printf("#include <signal.h>\n"); - printf("#include \"sudo_compat.h\"\n\n"); - printf("const char *const sudo_sys_siglist[NSIG] = {\n"); - for (i = 0; i < NSIG; i++) { + printf("const char *const sudo_sys_siglist[] = {\n"); + for (i = 0; i < nitems(sudo_sys_siglist); i++) { if (sudo_sys_siglist[i] != NULL) { printf(" \"%s\",\n", sudo_sys_siglist[i]); } else { - printf(" \"Signal %d\",\n", i); + printf(" \"Signal %u\",\n", i); } } printf("};\n"); diff --git a/lib/util/mksigname.c b/lib/util/mksigname.c index 08dc1120f..de8b1ad81 100644 --- a/lib/util/mksigname.c +++ b/lib/util/mksigname.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2012, 2015 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2010-2012, 2015, 2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -34,17 +34,12 @@ sudo_dso_public int main(int argc, char *argv[]); int main(int argc, char *argv[]) { - static char *sudo_sys_signame[NSIG]; - int i; + unsigned int i; #include "mksigname.h" - printf("#include <config.h>\n"); - printf("#include <sys/types.h>\n"); - printf("#include <signal.h>\n"); - printf("#include \"sudo_compat.h\"\n\n"); - printf("const char *const sudo_sys_signame[NSIG] = {\n"); - for (i = 0; i < NSIG; i++) { + printf("const char *const sudo_sys_signame[] = {\n"); + for (i = 0; i < nitems(sudo_sys_signame); i++) { if (sudo_sys_signame[i] != NULL) { printf(" \"%s\",\n", sudo_sys_signame[i]); } else { diff --git a/lib/util/regress/uuid/uuid_test.c b/lib/util/regress/uuid/uuid_test.c new file mode 100644 index 000000000..9c21bc28a --- /dev/null +++ b/lib/util/regress/uuid/uuid_test.c @@ -0,0 +1,92 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <config.h> + +#include <stdlib.h> +#if defined(HAVE_STDINT_H) +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif +#include <string.h> + +#define SUDO_ERROR_WRAP 0 + +#include "sudo_compat.h" +#include "sudo_fatal.h" +#include "sudo_util.h" + +sudo_dso_public int main(int argc, char *argv[]); + +/* + * Test that sudo_uuid_create() generates a variant 1, version 4 uuid. + */ + +/* From RFC 4122. */ +struct uuid { + uint32_t time_low; + uint16_t time_mid; + uint16_t time_hi_and_version; + uint8_t clock_seq_hi_and_reserved; + uint8_t clock_seq_low; + uint8_t node[6]; +}; + +int +main(int argc, char *argv[]) +{ + union { + struct uuid id; + unsigned char u8[16]; + } uuid; + int errors = 0; + int ntests = 0; + + initprogname(argc > 0 ? argv[0] : "uuid_test"); + + /* Do 16 passes. */ + for (ntests = 0; ntests < 16; ntests++) { + sudo_uuid_create(uuid.u8); + + /* Variant: two most significant bits (6 and 7) are 0 and 1. */ + if (ISSET(uuid.id.clock_seq_hi_and_reserved, (1 << 6))) { + sudo_warnx("uuid bit 6 set, should be clear"); + errors++; + continue; + } + if (!ISSET(uuid.id.clock_seq_hi_and_reserved, (1 << 7))) { + sudo_warnx("uuid bit 7 clear, should be set"); + errors++; + continue; + } + + /* Version: bits 12-15 are 0010. */ + if ((uuid.id.time_hi_and_version & 0xf000) != 0x4000) { + sudo_warnx("bad version: 0x%x", uuid.id.time_hi_and_version & 0xf000); + errors++; + continue; + } + } + + if (ntests != 0) { + printf("%s: %d tests run, %d errors, %d%% success rate\n", + getprogname(), ntests, errors, (ntests - errors) * 100 / ntests); + } + return 0; +} diff --git a/lib/util/regress/vsyslog/vsyslog_test.c b/lib/util/regress/vsyslog/vsyslog_test.c deleted file mode 100644 index 27b9f14fa..000000000 --- a/lib/util/regress/vsyslog/vsyslog_test.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2017-2020 Todd C. Miller <Todd.Miller@sudo.ws> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <config.h> - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <errno.h> - -#include "sudo_compat.h" -#include "sudo_fatal.h" -#include "sudo_util.h" - -sudo_dso_public int main(int argc, char *argv[]); - -/* - * Test that sudo_vsyslog() works as expected. - */ -static char *expected_result; -static int errors; -static int ntests; - -/* - * Replacement for syslog(3) that just verifies the message - */ -void -syslog(int priority, const char *fmt, ...) -{ - va_list ap; - const char *msg; - - if (strcmp(fmt, "%s") != 0) - sudo_fatalx_nodebug("Expected syslog format \"%%s\", got \"%s\"", fmt); - - va_start(ap, fmt); - msg = va_arg(ap, char *); - if (strcmp(msg, expected_result) != 0) { - sudo_warnx_nodebug("Expected \"%s\", got \"%s\"", expected_result, msg); - errors++; - } else { - ntests++; - } - va_end(ap); -} - -static void -test_vsyslog(int priority, const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - sudo_vsyslog(priority, fmt, ap); - va_end(ap); -} - -int -main(int argc, char *argv[]) -{ - int len; - char buf1[1024 * 16], buf2[1024 * 16]; - - initprogname(argc > 0 ? argv[0] : "vsyslog_test"); - - /* Test small buffer. */ - expected_result = "sudo: millert : TTY=ttypa ; PWD=/etc/mail ; USER=root ; TSID=000AB0 ; COMMAND=/usr/sbin/newaliases"; - test_vsyslog(0, - "%s: %s : TTY=%s ; PWD=%s ; USER=%s ; TSID=%s ; COMMAND=%s", - "sudo", "millert", "ttypa", "/etc/mail", "root", "000AB0", - "/usr/sbin/newaliases"); - - /* Test small buffer w/ errno. */ - len = snprintf(buf1, sizeof(buf1), - "unable to open %s: %s", "/var/log/sudo-io/seq", strerror(ENOENT)); - if (len < 0 || len >= ssizeof(buf1)) - sudo_warnx_nodebug("buf1 truncated at %s:%d", __FILE__, __LINE__); - expected_result = buf1; - errno = ENOENT; - test_vsyslog(0, "unable to open %s: %m", "/var/log/sudo-io/seq"); - - /* Test large buffer > 8192 bytes. */ - memset(buf1, 'a', 8192); - buf1[8192] = '\0'; - expected_result = buf1; - test_vsyslog(0, "%s", buf1); - - /* Test large buffer w/ errno > 8192 bytes. */ - memset(buf1, 'b', 8184); - buf1[8184] = '\0'; - len = snprintf(buf2, sizeof(buf2), "%s: %s", buf1, strerror(EINVAL)); - if (len < 0 || len >= ssizeof(buf2)) - sudo_warnx_nodebug("buf2 truncated at %s:%d", __FILE__, __LINE__); - expected_result = buf2; - errno = EINVAL; - test_vsyslog(0, "%s: %m", buf1); - - /* Test large format string > 8192 bytes, expect truncation to 2048. */ - memset(buf1, 'b', 8184); - buf1[8184] = '\0'; - len = snprintf(buf2, sizeof(buf2), "%.*s", 2047, buf1); - if (len < 0 || len >= ssizeof(buf2)) - sudo_warnx_nodebug("buf2 truncated at %s:%d", __FILE__, __LINE__); - expected_result = buf2; - test_vsyslog(0, buf1); - - if (ntests != 0) { - printf("%s: %d tests run, %d errors, %d%% success rate\n", - getprogname(), ntests, errors, (ntests - errors) * 100 / ntests); - } else { - printf("%s: error, no tests run!\n", getprogname()); - errors = 1; - } - exit(errors); -} diff --git a/lib/util/siglist.in b/lib/util/siglist.in index f149eb530..aa57a7a30 100644 --- a/lib/util/siglist.in +++ b/lib/util/siglist.in @@ -17,11 +17,11 @@ EMT EMT trap FPE Floating point exception KILL Killed -# before BUS (Older Linux doesn't really have a BUS, but defines it to UNUSED) - UNUSED Unused BUS Bus error SEGV Memory fault +# before UNUSED (SYS and UNUSED share the same value in musl libc). SYS Bad system call + UNUSED Unused PIPE Broken pipe ALRM Alarm clock TERM Terminated diff --git a/lib/util/sudo_conf.c b/lib/util/sudo_conf.c index a459f0346..29518d4d9 100644 --- a/lib/util/sudo_conf.c +++ b/lib/util/sudo_conf.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2017 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -51,6 +51,13 @@ #include "sudo_util.h" #include "pathnames.h" +#ifndef _PATH_SUDO_INTERCEPT +# define _PATH_SUDO_INTERCEPT NULL +#endif +#ifndef _PATH_SUDO_NOEXEC +# define _PATH_SUDO_NOEXEC NULL +#endif + struct sudo_conf_table { const char *name; unsigned int namelen; @@ -104,13 +111,15 @@ static struct sudo_conf_table sudo_conf_var_table[] = { /* Indexes into path_table[] below (order is important). */ #define SUDO_CONF_PATH_ASKPASS 0 #define SUDO_CONF_PATH_SESH 1 -#define SUDO_CONF_PATH_NOEXEC 2 -#define SUDO_CONF_PATH_PLUGIN_DIR 3 -#define SUDO_CONF_PATH_DEVSEARCH 4 +#define SUDO_CONF_PATH_INTERCEPT 2 +#define SUDO_CONF_PATH_NOEXEC 3 +#define SUDO_CONF_PATH_PLUGIN_DIR 4 +#define SUDO_CONF_PATH_DEVSEARCH 5 #define SUDO_CONF_PATH_INITIALIZER { \ { "askpass", sizeof("askpass") - 1, false, _PATH_SUDO_ASKPASS }, \ { "sesh", sizeof("sesh") - 1, false, _PATH_SUDO_SESH }, \ + { "intercept", sizeof("intercept") - 1, false, _PATH_SUDO_INTERCEPT }, \ { "noexec", sizeof("noexec") - 1, false, _PATH_SUDO_NOEXEC }, \ { "plugin_dir", sizeof("plugin_dir") - 1, false, _PATH_SUDO_PLUGIN_DIR }, \ { "devsearch", sizeof("devsearch") - 1, false, _PATH_SUDO_DEVSEARCH }, \ @@ -141,7 +150,7 @@ static struct sudo_conf_data { struct sudo_conf_settings settings; struct sudo_conf_debug_list debugging; struct plugin_info_list plugins; - struct sudo_conf_path_table path_table[6]; + struct sudo_conf_path_table path_table[7]; } sudo_conf_data = { SUDO_CONF_SETTINGS_INITIALIZER, TAILQ_HEAD_INITIALIZER(sudo_conf_data.debugging), @@ -481,6 +490,12 @@ sudo_conf_sesh_path_v1(void) } const char * +sudo_conf_intercept_path_v1(void) +{ + return sudo_conf_data.path_table[SUDO_CONF_PATH_INTERCEPT].pval; +} + +const char * sudo_conf_noexec_path_v1(void) { return sudo_conf_data.path_table[SUDO_CONF_PATH_NOEXEC].pval; diff --git a/lib/util/sudo_debug.c b/lib/util/sudo_debug.c index 703fbea3b..07a5e4e76 100644 --- a/lib/util/sudo_debug.c +++ b/lib/util/sudo_debug.c @@ -142,7 +142,7 @@ sudo_debug_free_output(struct sudo_debug_output *output) */ static struct sudo_debug_output * sudo_debug_new_output(struct sudo_debug_instance *instance, - struct sudo_debug_file *debug_file) + struct sudo_debug_file *debug_file, int minfd) { char *buf, *cp, *last, *subsys, *pri; struct sudo_debug_output *output; @@ -181,6 +181,15 @@ sudo_debug_new_output(struct sudo_debug_instance *instance, } ignore_result(fchown(output->fd, (uid_t)-1, 0)); } + if (output->fd < minfd) { + int newfd = fcntl(output->fd, F_DUPFD, minfd); + if (newfd == -1) { + sudo_warn_nodebug("%s", output->filename); + goto bad; + } + close(output->fd); + output->fd = newfd; + } if (fcntl(output->fd, F_SETFD, FD_CLOEXEC) == -1) { sudo_warn_nodebug("%s", output->filename); goto bad; @@ -259,8 +268,9 @@ bad: * on error. */ int -sudo_debug_register_v1(const char *program, const char *const subsystems[], - unsigned int ids[], struct sudo_conf_debug_file_list *debug_files) +sudo_debug_register_v2(const char *program, const char *const subsystems[], + unsigned int ids[], struct sudo_conf_debug_file_list *debug_files, + int minfd) { struct sudo_debug_instance *instance = NULL; struct sudo_debug_output *output; @@ -346,7 +356,7 @@ sudo_debug_register_v1(const char *program, const char *const subsystems[], } TAILQ_FOREACH(debug_file, debug_files, entries) { - output = sudo_debug_new_output(instance, debug_file); + output = sudo_debug_new_output(instance, debug_file, minfd); if (output != NULL) SLIST_INSERT_HEAD(&instance->outputs, output, entries); } @@ -364,6 +374,13 @@ sudo_debug_register_v1(const char *program, const char *const subsystems[], return idx; } +int +sudo_debug_register_v1(const char *program, const char *const subsystems[], + unsigned int ids[], struct sudo_conf_debug_file_list *debug_files) +{ + return sudo_debug_register_v2(program, subsystems, ids, debug_files, -1); +} + /* * De-register the specified instance from the debug subsystem * and free up any associated data structures. @@ -963,6 +980,14 @@ sudo_debug_get_fds_v1(unsigned char **fds) } #else /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ int +sudo_debug_register_v2(const char *program, const char *const subsystems[], + unsigned int ids[], struct sudo_conf_debug_file_list *debug_files, + int minfd) +{ + return SUDO_DEBUG_INSTANCE_INITIALIZER; +} + +int sudo_debug_register_v1(const char *program, const char *const subsystems[], unsigned int ids[], struct sudo_conf_debug_file_list *debug_files) { diff --git a/lib/util/mksiglist.h b/lib/util/sys_siglist.h index 3fa25e863..f2ed2b23c 100644 --- a/lib/util/mksiglist.h +++ b/lib/util/sys_siglist.h @@ -1,5 +1,13 @@ /* public domain */ +#include <config.h> +#include <sys/types.h> +#include <signal.h> +#include "sudo_compat.h" + +int sudo_end_of_headers; +static char *sudo_sys_siglist[NSIG]; + #ifdef SIGHUP if (sudo_sys_siglist[SIGHUP] == NULL) sudo_sys_siglist[SIGHUP] = "Hangup"; diff --git a/lib/util/mksigname.h b/lib/util/sys_signame.h index ed1b19da4..3616df3e6 100644 --- a/lib/util/mksigname.h +++ b/lib/util/sys_signame.h @@ -1,6 +1,13 @@ /* public domain */ -sudo_sys_signame[0] = "Signal 0"; +#include <config.h> +#include <sys/types.h> +#include <signal.h> +#include "sudo_compat.h" + +int sudo_end_of_headers; +static char *sudo_sys_signame[NSIG]; + #ifdef SIGHUP if (sudo_sys_signame[SIGHUP] == NULL) sudo_sys_signame[SIGHUP] = "HUP"; diff --git a/lib/util/util.exp.in b/lib/util/util.exp.in index 61db6495f..5b760fa4f 100644 --- a/lib/util/util.exp.in +++ b/lib/util/util.exp.in @@ -9,6 +9,7 @@ sudo_conf_developer_mode_v1 sudo_conf_devsearch_path_v1 sudo_conf_disable_coredump_v1 sudo_conf_group_source_v1 +sudo_conf_intercept_path_v1 sudo_conf_max_groups_v1 sudo_conf_noexec_path_v1 sudo_conf_plugin_dir_path_v1 @@ -38,6 +39,7 @@ sudo_debug_needed_v1 sudo_debug_parse_flags_v1 sudo_debug_printf2_v1 sudo_debug_register_v1 +sudo_debug_register_v2 sudo_debug_set_active_instance_v1 sudo_debug_update_fd_v1 sudo_debug_vprintf2_v1 diff --git a/lib/util/uuid.c b/lib/util/uuid.c index cb6726e2e..6417851d0 100644 --- a/lib/util/uuid.c +++ b/lib/util/uuid.c @@ -39,13 +39,15 @@ struct uuid { uint32_t time_low; uint16_t time_mid; - uint16_t time_high_and_version; - uint16_t clock_seq_and_variant; - unsigned char node[6]; + uint16_t time_hi_and_version; + uint8_t clock_seq_hi_and_reserved; + uint8_t clock_seq_low; + uint8_t node[6]; }; /* * Create a type 4 (random), variant 1 universally unique identifier (UUID). + * As per RFC 4122 section 4.4. */ void sudo_uuid_create_v1(unsigned char uuid_out[16]) @@ -57,25 +59,14 @@ sudo_uuid_create_v1(unsigned char uuid_out[16]) arc4random_buf(&uuid, sizeof(uuid)); - /* Convert fields to host by order. */ - uuid.id.time_low = ntohl(uuid.id.time_low); - uuid.id.time_mid = ntohs(uuid.id.time_mid); - uuid.id.time_high_and_version = ntohs(uuid.id.time_high_and_version); - uuid.id.clock_seq_and_variant = ntohs(uuid.id.clock_seq_and_variant); + /* Set version to 4 (random), 4 most significant bits (12-15) are 0010. */ + uuid.id.time_hi_and_version &= 0x0fff; + uuid.id.time_hi_and_version |= 0x4000; - /* Set version to 4 (random) in the high nibble. */ - uuid.id.time_high_and_version &= 0x0fff; - uuid.id.time_high_and_version |= 0x4000; + /* Set variant to 1: two most significant bits (6 and 7) are 01. */ + uuid.id.clock_seq_hi_and_reserved &= 0x3f; + uuid.id.clock_seq_hi_and_reserved |= 0x80; - /* Set variant to 1 (first two bits are 10) */ - uuid.id.clock_seq_and_variant &= 0x3fff; - uuid.id.clock_seq_and_variant |= 0x8000; - - /* Store fields in network byte order (big endian). */ - uuid.id.time_low = htonl(uuid.id.time_low); - uuid.id.time_mid = htons(uuid.id.time_mid); - uuid.id.time_high_and_version = htons(uuid.id.time_high_and_version); - uuid.id.clock_seq_and_variant = htons(uuid.id.clock_seq_and_variant); memcpy(uuid_out, &uuid, 16); } diff --git a/lib/util/vsyslog.c b/lib/util/vsyslog.c deleted file mode 100644 index 1eaaf9628..000000000 --- a/lib/util/vsyslog.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2016-2017 Todd C. Miller <Todd.Miller@sudo.ws> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This is an open source non-commercial project. Dear PVS-Studio, please check it. - * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com - */ - -#include <config.h> - -#include <errno.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <syslog.h> - -#include "sudo_compat.h" - -#ifndef HAVE_VSYSLOG -void -sudo_vsyslog(int pri, const char *fmt, va_list ap) -{ - int saved_errno = errno; - char *cp, *ep, msgbuf[8192], new_fmt[2048]; - va_list ap2; - size_t len; - - /* Rewrite fmt, replacing %m with an errno string. */ - for (cp = new_fmt, ep = new_fmt + sizeof(new_fmt); *fmt != '\0'; fmt++) { - if (fmt[0] == '%' && fmt[1] == 'm') { - fmt++; - len = strlcpy(cp, strerror(saved_errno), (ep - cp)); - if (len >= (size_t)(ep - cp)) - len = (size_t)(ep - cp) - 1; - cp += len; - } else { - if (fmt[0] == '%' && fmt[1] == '%') { - fmt++; - if (cp < ep - 1) - *cp++ = '%'; - } - if (cp < ep - 1) - *cp++ = *fmt; - } - } - *cp = '\0'; - - /* Format message and log it, using a static buffer if possible. */ - va_copy(ap2, ap); - len = (size_t)vsnprintf(msgbuf, sizeof(msgbuf), new_fmt, ap2); - va_end(ap2); - if (len < sizeof(msgbuf)) { - syslog(pri, "%s", msgbuf); - } else { - /* Too big for static buffer? */ - char *buf; - if (vasprintf(&buf, new_fmt, ap) != -1) { - syslog(pri, "%s", buf); - free(buf); - } - } -} -#endif /* HAVE_VSYSLOG */ diff --git a/logsrvd/Makefile.in b/logsrvd/Makefile.in index 2e58ec976..4ac0dc025 100644 --- a/logsrvd/Makefile.in +++ b/logsrvd/Makefile.in @@ -301,8 +301,9 @@ fuzz_logsrvd_conf.plog: fuzz_logsrvd_conf.i iolog_writer.o: $(srcdir)/iolog_writer.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ $(top_builddir)/config.h @@ -310,8 +311,9 @@ iolog_writer.o: $(srcdir)/iolog_writer.c $(incdir)/compat/stdbool.h \ iolog_writer.i: $(srcdir)/iolog_writer.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ $(top_builddir)/config.h @@ -389,7 +391,8 @@ logsrvd_journal.o: $(srcdir)/logsrvd_journal.c $(incdir)/compat/stdbool.h \ $(incdir)/protobuf-c/protobuf-c.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.h $(incdir)/sudo_eventlog.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \ $(srcdir)/tls_common.h $(top_builddir)/config.h @@ -399,7 +402,8 @@ logsrvd_journal.i: $(srcdir)/logsrvd_journal.c $(incdir)/compat/stdbool.h \ $(incdir)/protobuf-c/protobuf-c.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.h $(incdir)/sudo_eventlog.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \ $(srcdir)/tls_common.h $(top_builddir)/config.h @@ -410,8 +414,9 @@ logsrvd_local.o: $(srcdir)/logsrvd_local.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_rand.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ @@ -421,8 +426,9 @@ logsrvd_local.i: $(srcdir)/logsrvd_local.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_rand.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ @@ -434,8 +440,9 @@ logsrvd_queue.o: $(srcdir)/logsrvd_queue.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ $(top_builddir)/config.h @@ -444,8 +451,9 @@ logsrvd_queue.i: $(srcdir)/logsrvd_queue.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ $(incdir)/sudo_util.h $(srcdir)/logsrv_util.h \ $(srcdir)/logsrvd.h $(srcdir)/tls_common.h \ $(top_builddir)/config.h @@ -456,7 +464,8 @@ logsrvd_relay.o: $(srcdir)/logsrvd_relay.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.h $(incdir)/sudo_eventlog.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \ $(srcdir)/tls_common.h $(top_builddir)/config.h @@ -465,7 +474,8 @@ logsrvd_relay.i: $(srcdir)/logsrvd_relay.c $(incdir)/compat/stdbool.h \ $(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.h $(incdir)/sudo_eventlog.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \ $(srcdir)/tls_common.h $(top_builddir)/config.h diff --git a/logsrvd/iolog_writer.c b/logsrvd/iolog_writer.c index 14b13fcfa..6480114b0 100644 --- a/logsrvd/iolog_writer.c +++ b/logsrvd/iolog_writer.c @@ -43,6 +43,7 @@ #include "sudo_eventlog.h" #include "sudo_gettext.h" #include "sudo_iolog.h" +#include "sudo_fatal.h" #include "sudo_queue.h" #include "sudo_util.h" @@ -81,14 +82,12 @@ strlist_copy(InfoMessage__StringList *strlist) dst = reallocarray(NULL, len + 1, sizeof(char *)); if (dst == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "reallocarray(NULL, %zu, %zu)", len + 1, sizeof(char *)); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } for (i = 0; i < len; i++) { if ((dst[i] = strdup(src[i])) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } @@ -113,17 +112,26 @@ struct eventlog * evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, struct connection_closure *closure) { + const char *source = closure->journal_path ? closure->journal_path : + closure->ipaddr; struct eventlog *evlog; + unsigned char uuid[16]; size_t idx; debug_decl(evlog_new, SUDO_DEBUG_UTIL); evlog = calloc(1, sizeof(*evlog)); if (evlog == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "calloc(1, %zu)", sizeof(*evlog)); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } + /* Create a UUID to store in the event log. */ + sudo_uuid_create(uuid); + if (sudo_uuid_to_string(uuid, evlog->uuid_str, sizeof(evlog->uuid_str)) == NULL) { + sudo_warnx("%s", U_("unable to generate UUID")); + goto bad; + } + /* Client/peer IP address. */ evlog->peeraddr = closure->ipaddr; @@ -147,11 +155,11 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, case 'c': if (strcmp(key, "columns") == 0) { if (!has_numval(info)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "columns specified but not a number"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "columns"); } else if (info->u.numval <= 0 || info->u.numval > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "columns (%" PRId64 ") out of range", info->u.numval); + errno = ERANGE; + sudo_warn(U_("%s: %s"), source, "columns"); } else { evlog->columns = info->u.numval; } @@ -160,14 +168,13 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (strcmp(key, "command") == 0) { if (has_strval(info)) { if ((evlog->command = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "command specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "command"); } continue; } @@ -175,11 +182,11 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, case 'l': if (strcmp(key, "lines") == 0) { if (!has_numval(info)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "lines specified but not a number"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "lines"); } else if (info->u.numval <= 0 || info->u.numval > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "lines (%" PRId64 ") out of range", info->u.numval); + errno = ERANGE; + sudo_warn(U_("%s: %s"), source, "lines"); } else { evlog->lines = info->u.numval; } @@ -193,36 +200,34 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (evlog->argv == NULL) goto bad; } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runargv specified but not a string list"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runargv"); } continue; } if (strcmp(key, "runchroot") == 0) { if (has_strval(info)) { if ((evlog->runchroot = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runchroot specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runchroot"); } continue; } if (strcmp(key, "runcwd") == 0) { if (has_strval(info)) { if ((evlog->runcwd = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runcwd specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runcwd"); } continue; } @@ -232,18 +237,18 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (evlog->envp == NULL) goto bad; } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runenv specified but not a string list"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runenv"); } continue; } if (strcmp(key, "rungid") == 0) { if (!has_numval(info)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "rungid specified but not a number"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "rungid"); } else if (info->u.numval < 0 || info->u.numval > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "rungid (%" PRId64 ") out of range", info->u.numval); + errno = ERANGE; + sudo_warn(U_("%s: %s"), source, "rungid"); } else { evlog->rungid = info->u.numval; } @@ -252,24 +257,23 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (strcmp(key, "rungroup") == 0) { if (has_strval(info)) { if ((evlog->rungroup = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "rungroup specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "rungroup"); } continue; } if (strcmp(key, "runuid") == 0) { if (!has_numval(info)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runuid specified but not a number"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runuid"); } else if (info->u.numval < 0 || info->u.numval > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runuid (%" PRId64 ") out of range", info->u.numval); + errno = ERANGE; + sudo_warn(U_("%s: %s"), source, "runuid"); } else { evlog->runuid = info->u.numval; } @@ -278,14 +282,13 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (strcmp(key, "runuser") == 0) { if (has_strval(info)) { if ((evlog->runuser = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runuser specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "runuser"); } continue; } @@ -294,56 +297,52 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (strcmp(key, "submitcwd") == 0) { if (has_strval(info)) { if ((evlog->cwd = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submitcwd specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "submitcwd"); } continue; } if (strcmp(key, "submitgroup") == 0) { if (has_strval(info)) { if ((evlog->submitgroup = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submitgroup specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "submitgroup"); } continue; } if (strcmp(key, "submithost") == 0) { if (has_strval(info)) { if ((evlog->submithost = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submithost specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "submithost"); } continue; } if (strcmp(key, "submituser") == 0) { if (has_strval(info)) { if ((evlog->submituser = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submituser specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "submituser"); } continue; } @@ -352,14 +351,13 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, if (strcmp(key, "ttyname") == 0) { if (has_strval(info)) { if ((evlog->ttyname = strdup(info->u.strval)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); goto bad; } } else { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "ttyname specified but not a string"); + sudo_warnx(U_("%s: protocol error: wrong type for %s"), + source, "ttyname"); } continue; } @@ -369,57 +367,49 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, /* Check for required settings */ if (evlog->submituser == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing submituser in AcceptMessage"); + sudo_warnx(U_("%s: protocol error: %s missing from AcceptMessage"), + source, "submituser"); goto bad; } if (evlog->submithost == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing submithost in AcceptMessage"); + sudo_warnx(U_("%s: protocol error: %s missing from AcceptMessage"), + source, "submithost"); goto bad; } if (evlog->runuser == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing runuser in AcceptMessage"); + sudo_warnx(U_("%s: protocol error: %s missing from AcceptMessage"), + source, "runuser"); goto bad; } if (evlog->command == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing command in AcceptMessage"); + sudo_warnx(U_("%s: protocol error: %s missing from AcceptMessage"), + source, "command"); goto bad; } /* Other settings that must exist for event logging. */ if (evlog->cwd == NULL) { if ((evlog->cwd = strdup("unknown")) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } if (evlog->runcwd == NULL) { if ((evlog->runcwd = strdup(evlog->cwd)) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } if (evlog->submitgroup == NULL) { /* TODO: make submitgroup required */ if ((evlog->submitgroup = strdup("unknown")) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } if (evlog->ttyname == NULL) { if ((evlog->ttyname = strdup("unknown")) == NULL) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } } @@ -453,8 +443,7 @@ fill_seq(char *str, size_t strsize, void *v) len = snprintf(str, strsize, "%c%c/%c%c/%c%c", sessid[0], sessid[1], sessid[2], sessid[3], sessid[4], sessid[5]); if (len < 0 || len >= (ssize_t)strsize) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format session id"); + sudo_warnx(U_("%s: unable to format session id"), __func__); debug_return_size_t(strsize); /* handle non-standard snprintf() */ } debug_return_size_t(len); @@ -468,8 +457,7 @@ fill_user(char *str, size_t strsize, void *v) debug_decl(fill_user, SUDO_DEBUG_UTIL); if (evlog->submituser == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submituser not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "submituser"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->submituser, strsize)); @@ -483,8 +471,7 @@ fill_group(char *str, size_t strsize, void *v) debug_decl(fill_group, SUDO_DEBUG_UTIL); if (evlog->submitgroup == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submitgroup not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "submitgroup"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->submitgroup, strsize)); @@ -498,8 +485,7 @@ fill_runas_user(char *str, size_t strsize, void *v) debug_decl(fill_runas_user, SUDO_DEBUG_UTIL); if (evlog->runuser == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "runuser not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "runuser"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->runuser, strsize)); @@ -514,8 +500,7 @@ fill_runas_group(char *str, size_t strsize, void *v) /* FIXME: rungroup not guaranteed to be set */ if (evlog->rungroup == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "rungroup not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "rungroup"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->rungroup, strsize)); @@ -529,8 +514,7 @@ fill_hostname(char *str, size_t strsize, void *v) debug_decl(fill_hostname, SUDO_DEBUG_UTIL); if (evlog->submithost == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "submithost not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "submithost"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->submithost, strsize)); @@ -544,8 +528,7 @@ fill_command(char *str, size_t strsize, void *v) debug_decl(fill_command, SUDO_DEBUG_UTIL); if (evlog->command == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "command not set"); + sudo_warnx(U_("%s: %s is not set"), __func__, "command"); debug_return_size_t(strsize); } debug_return_size_t(strlcpy(str, evlog->command, strsize)); @@ -581,15 +564,15 @@ create_iolog_path(struct connection_closure *closure) if (!expand_iolog_path(logsrvd_conf_iolog_dir(), expanded_dir, sizeof(expanded_dir), &path_escapes[1], &path_closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to expand iolog dir %s", logsrvd_conf_iolog_dir()); + sudo_warnx(U_("unable to expand iolog path %s"), + logsrvd_conf_iolog_dir()); goto bad; } if (!expand_iolog_path(logsrvd_conf_iolog_file(), expanded_file, sizeof(expanded_file), &path_escapes[0], &path_closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to expand iolog dir %s", logsrvd_conf_iolog_file()); + sudo_warnx(U_("unable to expand iolog path %s"), + logsrvd_conf_iolog_file()); goto bad; } @@ -597,8 +580,7 @@ create_iolog_path(struct connection_closure *closure) expanded_file); if (len >= sizeof(pathbuf)) { errno = ENAMETOOLONG; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s/%s", expanded_dir, expanded_file); + sudo_warn("%s/%s", expanded_dir, expanded_file); goto bad; } @@ -607,13 +589,11 @@ create_iolog_path(struct connection_closure *closure) * Calls mkdtemp() if pathbuf ends in XXXXXX. */ if (!iolog_mkpath(pathbuf)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to mkdir iolog path %s", pathbuf); + sudo_warnx(U_("unable to create iolog path %s"), pathbuf); goto bad; } if ((evlog->iolog_path = strdup(pathbuf)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } evlog->iolog_file = evlog->iolog_path + strlen(expanded_dir) + 1; @@ -622,8 +602,7 @@ create_iolog_path(struct connection_closure *closure) closure->iolog_dir_fd = iolog_openat(AT_FDCWD, evlog->iolog_path, O_RDONLY); if (closure->iolog_dir_fd == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s", evlog->iolog_path); + sudo_warn("%s", evlog->iolog_path); goto bad; } @@ -640,8 +619,7 @@ iolog_create(int iofd, struct connection_closure *closure) debug_decl(iolog_create, SUDO_DEBUG_UTIL); if (iofd < 0 || iofd >= IOFD_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid iofd %d", iofd); + sudo_warnx(U_("invalid iofd %d"), iofd); debug_return_bool(false); } @@ -661,8 +639,7 @@ iolog_close_all(struct connection_closure *closure) if (!closure->iolog_files[i].enabled) continue; if (!iolog_close(&closure->iolog_files[i], &errstr)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "error closing iofd %d: %s", i, errstr); + sudo_warnx(U_("error closing iofd %d: %s"), i, errstr); } } if (closure->iolog_dir_fd != -1) @@ -778,8 +755,8 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) if (timing.event < IOFD_TIMING) { if (!closure->iolog_files[timing.event].enabled) { /* Missing log file. */ - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "iofd %d referenced but not open", timing.event); + sudo_warnx(U_("invalid I/O log %s: %s referenced but not present"), + evlog->iolog_path, iolog_fd_to_name(timing.event)); goto done; } iolog_file_sizes[timing.event] += timing.u.nbytes; @@ -790,11 +767,8 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) break; /* Mismatch between resume point and stored log. */ - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "resume point mismatch, target [%lld, %ld], have [%lld, %ld]", - (long long)target->tv_sec, target->tv_nsec, - (long long)closure->elapsed_time.tv_sec, - closure->elapsed_time.tv_nsec); + sudo_warnx(U_("%s: unable to find resume point [%lld, %ld]"), + evlog->iolog_path, (long long)target->tv_sec, target->tv_nsec); goto done; } } @@ -806,18 +780,16 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) len = snprintf(tmpdir, sizeof(tmpdir), "%s/restart.XXXXXX", evlog->iolog_path); if (len < 0 || len >= ssizeof(tmpdir)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format %s/restart.XXXXXX", evlog->iolog_path); + errno = ENAMETOOLONG; + sudo_warn("%s/restart.XXXXXX", evlog->iolog_path); goto done; } if (!iolog_mkdtemp(tmpdir)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to mkdtemp %s", tmpdir); + sudo_warn(U_("unable to mkdir %s"), tmpdir); goto done; } if ((tmpdir_fd = iolog_openat(AT_FDCWD, tmpdir, O_RDONLY)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to open %s", tmpdir); + sudo_warn(U_("unable to open %s"), tmpdir); goto done; } @@ -829,9 +801,8 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) new_iolog_files[iofd].enabled = true; if (!iolog_open(&new_iolog_files[iofd], tmpdir_fd, iofd, "w")) { if (errno != ENOENT) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to open %s/%s", tmpdir, iolog_fd_to_name(iofd)); + sudo_warn(U_("unable to open %s/%s"), + tmpdir, iolog_fd_to_name(iofd)); goto done; } } @@ -843,8 +814,7 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) if (!iolog_copy(&closure->iolog_files[iofd], &new_iolog_files[iofd], iolog_file_sizes[iofd], &errstr)) { name = iolog_fd_to_name(iofd); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to copy %s/%s to %s/%s: %s", + sudo_warnx(U_("unable to copy %s/%s to %s/%s: %s"), evlog->iolog_path, name, tmpdir, name, errstr); goto done; } @@ -861,21 +831,19 @@ iolog_rewrite(const struct timespec *target, struct connection_closure *closure) name = iolog_fd_to_name(iofd); len = snprintf(from, sizeof(from), "%s/%s", tmpdir, name); if (len < 0 || len >= ssizeof(from)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format %s/%s", tmpdir, name); + errno = ENAMETOOLONG; + sudo_warn("%s/%s", tmpdir, name); goto done; } len = snprintf(to, sizeof(to), "%s/%s", evlog->iolog_path, name); if (len < 0 || len >= ssizeof(from)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format %s/%s", evlog->iolog_path, name); + errno = ENAMETOOLONG; + sudo_warn("%s/%s", evlog->iolog_path, name); goto done; } if (!iolog_rename(from, to)) { - sudo_debug_printf( - SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to rename %s to %s", from, to); + sudo_warn(U_("unable to rename %s to %s"), from, to); goto done; } } diff --git a/logsrvd/logsrv_util.c b/logsrvd/logsrv_util.c index e20f191fb..c6ff65ae4 100644 --- a/logsrvd/logsrv_util.c +++ b/logsrvd/logsrv_util.c @@ -59,8 +59,7 @@ expand_buf(struct connection_buffer *buf, unsigned int needed) /* Expand buffer. */ needed = sudo_pow2_roundup(needed); if ((newdata = malloc(needed)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, - "%s: unable to malloc %u", __func__, needed); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_bool(false); } if (buf->off > 0) @@ -147,9 +146,9 @@ iolog_seekto(int iolog_dir_fd, const char *iolog_path, break; /* Mismatch between resume point and stored log. */ - sudo_warnx(U_("unable to find resume point [%lld, %ld] in %s/%s"), - (long long)target->tv_sec, target->tv_nsec, iolog_path, - "timing"); + sudo_warnx(U_("%s/%s: unable to find resume point [%lld, %ld]"), + iolog_path, "timing", (long long)target->tv_sec, + target->tv_nsec); goto bad; } } diff --git a/logsrvd/logsrvd.c b/logsrvd/logsrvd.c index a5d16730a..01c12f8bf 100644 --- a/logsrvd/logsrvd.c +++ b/logsrvd/logsrvd.c @@ -122,12 +122,15 @@ connection_closure_free(struct connection_closure *closure) /* Must call SSL_shutdown() before closing closure->sock. */ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "closing down TLS connection from %s", closure->ipaddr); - SSL_shutdown(closure->ssl); + if (SSL_shutdown(closure->ssl) == 0) + SSL_shutdown(closure->ssl); SSL_free(closure->ssl); } #endif - if (closure->sock != -1) + if (closure->sock != -1) { + shutdown(closure->sock, SHUT_RDWR); close(closure->sock); + } iolog_close_all(closure); sudo_ev_free(closure->commit_ev); sudo_ev_free(closure->read_ev); @@ -266,8 +269,7 @@ connection_close(struct connection_closure *closure) /* Connect to the first relay available asynchronously. */ if (!connect_relay(new_closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to connect to relay"); + sudo_warnx(U_("unable to connect to relay")); connection_closure_free(new_closure); } } @@ -293,17 +295,20 @@ get_free_buf(size_t len, struct connection_closure *closure) debug_decl(get_free_buf, SUDO_DEBUG_UTIL); buf = TAILQ_FIRST(&closure->free_bufs); - if (buf != NULL) + if (buf != NULL) { TAILQ_REMOVE(&closure->free_bufs, buf, entries); - else - buf = calloc(1, sizeof(*buf)); + } else { + if ((buf = calloc(1, sizeof(*buf))) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_ptr(NULL); + } + } - if (buf != NULL && len > buf->size) { + if (len > buf->size) { free(buf->data); buf->size = sudo_pow2_roundup(len); if ((buf->data = malloc(buf->size)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to malloc %u", buf->size); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); free(buf); buf = NULL; } @@ -323,8 +328,7 @@ fmt_server_message(struct connection_closure *closure, ServerMessage *msg) len = server_message__get_packed_size(msg); if (len > MESSAGE_SIZE_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "server message too large: %zu", len); + sudo_warnx(U_("server message too large: %zu"), len); goto done; } @@ -360,6 +364,7 @@ fmt_hello_message(struct connection_closure *closure) /* TODO: implement redirect and servers array. */ hello.server_id = (char *)server_id; + hello.subcommands = true; msg.u.hello = &hello; msg.type_case = SERVER_MESSAGE__TYPE_HELLO; @@ -392,7 +397,7 @@ fmt_error_message(const char *errstr, struct connection_closure *closure) /* * Format a ServerMessage with the error string and add it to the write queue. - * Also sets the state to ERROR. + * Also sets the error flag state to true. * Returns true if successfully scheduled, else false. */ bool @@ -415,8 +420,7 @@ schedule_error_message(const char *errstr, struct connection_closure *closure) goto done; if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_server_timeout(), true) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); goto done; } ret = true; @@ -438,18 +442,16 @@ handle_accept(AcceptMessage *msg, uint8_t *buf, size_t len, bool ret; debug_decl(handle_accept, SUDO_DEBUG_UTIL); - if (closure->state != INITIAL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + /* We can get an AcceptMessage for a sub-command during a session. */ + if (closure->state == EXITED || closure->state == FINISHED) { + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } /* Check that message is valid. */ if (msg->submit_time == NULL || msg->n_info_msgs == 0) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid AcceptMessage from %s, submit_time: %p, n_info_msgs: %zu", - source, msg->submit_time, msg->n_info_msgs); + sudo_warnx(U_("%s: %s"), source, U_("invalid AcceptMessage")); closure->errstr = _("invalid AcceptMessage"); debug_return_bool(false); } @@ -457,7 +459,7 @@ handle_accept(AcceptMessage *msg, uint8_t *buf, size_t len, __func__, source); ret = closure->cms->accept(msg, buf, len, closure); - if (ret) { + if (ret && closure->state == INITIAL) { if (msg->expect_iobufs) closure->log_io = true; closure->state = RUNNING; @@ -477,18 +479,16 @@ handle_reject(RejectMessage *msg, uint8_t *buf, size_t len, bool ret; debug_decl(handle_reject, SUDO_DEBUG_UTIL); - if (closure->state != INITIAL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + /* We can get a RejectMessage for a sub-command during a session. */ + if (closure->state == EXITED || closure->state == FINISHED) { + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } /* Check that message is valid. */ if (msg->submit_time == NULL || msg->n_info_msgs == 0) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid RejectMessage from %s, submit_time: %p, n_info_msgs: %zu", - source, msg->submit_time, msg->n_info_msgs); + sudo_warnx(U_("%s: %s"), source, U_("invalid RejectMessage")); closure->errstr = _("invalid RejectMessage"); debug_return_bool(false); } @@ -496,8 +496,9 @@ handle_reject(RejectMessage *msg, uint8_t *buf, size_t len, __func__, source); ret = closure->cms->reject(msg, buf, len, closure); - if (ret) + if (ret && closure->state == INITIAL) { closure->state = FINISHED; + } debug_return_bool(ret); } @@ -512,8 +513,7 @@ handle_exit(ExitMessage *msg, uint8_t *buf, size_t len, debug_decl(handle_exit, SUDO_DEBUG_UTIL); if (closure->state != RUNNING) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } @@ -537,8 +537,7 @@ handle_exit(ExitMessage *msg, uint8_t *buf, size_t len, if (closure->relay_closure == NULL) { struct timespec tv = { 0, 0 }; if (sudo_ev_add(closure->evbase, closure->commit_ev, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add commit point event"); + sudo_warnx("%s", U_("unable to add event to queue")); ret = false; } } @@ -562,8 +561,7 @@ handle_restart(RestartMessage *msg, uint8_t *buf, size_t len, debug_decl(handle_restart, SUDO_DEBUG_UTIL); if (closure->state != INITIAL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } @@ -598,9 +596,7 @@ handle_alert(AlertMessage *msg, uint8_t *buf, size_t len, /* Check that message is valid. */ if (msg->alert_time == NULL || msg->reason == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid AlertMessage, alert_time: %p, reason: %p", - msg->alert_time, msg->reason); + sudo_warnx(U_("%s: %s"), source, U_("invalid AlertMessage")); closure->errstr = _("invalid AlertMessage"); debug_return_bool(false); } @@ -620,8 +616,7 @@ enable_commit(struct connection_closure *closure) if (!ISSET(closure->commit_ev->flags, SUDO_EVQ_INSERTED)) { struct timespec tv = { ACK_FREQUENCY, 0 }; if (sudo_ev_add(closure->evbase, closure->commit_ev, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add commit point event"); + sudo_warnx("%s", U_("unable to add event to queue")); debug_return_bool(false); } } @@ -638,14 +633,12 @@ handle_iobuf(int iofd, IoBuffer *iobuf, uint8_t *buf, size_t len, debug_decl(handle_iobuf, SUDO_DEBUG_UTIL); if (closure->state != RUNNING) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } if (!closure->log_io) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "not logging I/O for %s", source); + sudo_warnx(U_("%s: unexpected IoBuffer"), source); closure->errstr = _("protocol error"); debug_return_bool(false); } @@ -670,14 +663,12 @@ handle_winsize(ChangeWindowSize *msg, uint8_t *buf, size_t len, debug_decl(handle_winsize, SUDO_DEBUG_UTIL); if (closure->state != RUNNING) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } if (!closure->log_io) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "not logging I/O for %s", source); + sudo_warnx(U_("%s: unexpected IoBuffer"), source); closure->errstr = _("protocol error"); debug_return_bool(false); } @@ -702,14 +693,12 @@ handle_suspend(CommandSuspend *msg, uint8_t *buf, size_t len, debug_decl(handle_syspend, SUDO_DEBUG_UTIL); if (closure->state != RUNNING) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d for %s", closure->state, source); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } if (!closure->log_io) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "not logging I/O for %s", source); + sudo_warnx(U_("%s: unexpected IoBuffer"), source); closure->errstr = _("protocol error"); debug_return_bool(false); } @@ -729,11 +718,12 @@ static bool handle_client_hello(ClientHello *msg, uint8_t *buf, size_t len, struct connection_closure *closure) { + const char *source = closure->journal_path ? closure->journal_path : + closure->ipaddr; debug_decl(handle_client_hello, SUDO_DEBUG_UTIL); if (closure->state != INITIAL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d", closure->state); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, source); closure->errstr = _("state machine error"); debug_return_bool(false); } @@ -750,6 +740,8 @@ static bool handle_client_message(uint8_t *buf, size_t len, struct connection_closure *closure) { + const char *source = closure->journal_path ? closure->journal_path : + closure->ipaddr; ClientMessage *msg; bool ret = false; debug_decl(handle_client_message, SUDO_DEBUG_UTIL); @@ -757,8 +749,7 @@ handle_client_message(uint8_t *buf, size_t len, /* TODO: can we extract type_case without unpacking for relay case? */ msg = client_message__unpack(NULL, len, buf); if (msg == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to unpack ClientMessage size %zu", len); + sudo_warnx("unable to unpack %s size %zu", "ClientMessage", len); debug_return_bool(false); } @@ -803,8 +794,8 @@ handle_client_message(uint8_t *buf, size_t len, ret = handle_client_hello(msg->u.hello_msg, buf, len, closure); break; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected type_case value %d", msg->type_case); + sudo_warnx(U_("unexpected type_case value %d in %s from %s"), + msg->type_case, "ClientMessage", source); closure->errstr = _("unrecognized ClientMessage type"); break; } @@ -849,8 +840,7 @@ server_shutdown(struct sudo_event_base *base) } else if (closure->log_io) { /* Schedule final commit point for the connection. */ if (sudo_ev_add(base, closure->commit_ev, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add commit point event"); + sudo_warnx("%s", U_("unable to add event to queue")); } } else { /* No commit point, close connection immediately. */ @@ -864,8 +854,7 @@ server_shutdown(struct sudo_event_base *base) if (ev != NULL) { tv.tv_sec = SHUTDOWN_TIMEO; if (sudo_ev_add(base, ev, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add shutdown event"); + sudo_warnx("%s", U_("unable to add event to queue")); } } } @@ -897,14 +886,12 @@ server_msg_cb(int fd, int what, void *v) } if (what == SUDO_EV_TIMEOUT) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "timed out writing to client (%s)", closure->ipaddr); + sudo_warnx(U_("timed out writing to client %s"), closure->ipaddr); goto finished; } if ((buf = TAILQ_FIRST(&closure->write_bufs)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing write buffer"); + sudo_warnx(U_("missing write buffer for client %s"), closure->ipaddr); goto finished; } @@ -916,6 +903,7 @@ server_msg_cb(int fd, int what, void *v) nwritten = SSL_write(closure->ssl, buf->data + buf->off, buf->len - buf->off); if (nwritten <= 0) { + const char *errstr; int err = SSL_get_error(closure->ssl, nwritten); switch (err) { case SSL_ERROR_WANT_READ: @@ -931,14 +919,11 @@ server_msg_cb(int fd, int what, void *v) "SSL_write returns SSL_ERROR_WANT_WRITE"); debug_return; case SSL_ERROR_SYSCALL: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected error during SSL_write(): %d (%s)", - err, strerror(errno)); + sudo_warn("%s: SSL_write", closure->ipaddr); goto finished; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected error during SSL_write(): %d (%s)", - err, ERR_error_string(ERR_get_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("%s: SSL_write: %s", closure->ipaddr, errstr); goto finished; } } @@ -949,8 +934,7 @@ server_msg_cb(int fd, int what, void *v) } if (nwritten == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to send %u bytes", buf->len - buf->off); + sudo_warn("%s: write", closure->ipaddr); goto finished; } buf->off += nwritten; @@ -986,6 +970,8 @@ client_msg_cb(int fd, int what, void *v) { struct connection_closure *closure = v; struct connection_buffer *buf = &closure->read_buf; + const char *source = closure->journal_path ? closure->journal_path : + closure->ipaddr; uint32_t msg_len; ssize_t nread; debug_decl(client_msg_cb, SUDO_DEBUG_UTIL); @@ -998,8 +984,7 @@ client_msg_cb(int fd, int what, void *v) } if (what == SUDO_EV_TIMEOUT) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "timed out reading from client (%s)", closure->ipaddr); + sudo_warnx(U_("timed out reading from client %s"), closure->ipaddr); goto close_connection; } @@ -1007,6 +992,7 @@ client_msg_cb(int fd, int what, void *v) if (closure->ssl != NULL) { nread = SSL_read(closure->ssl, buf->data + buf->len, buf->size); if (nread <= 0) { + const char *errstr; int err = SSL_get_error(closure->ssl, nread); switch (err) { case SSL_ERROR_ZERO_RETURN: @@ -1027,8 +1013,7 @@ client_msg_cb(int fd, int what, void *v) /* Enable a temporary write event. */ if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add event to queue"); + sudo_warnx("%s", U_("unable to add event to queue")); closure->errstr = _("unable to allocate memory"); goto send_error; } @@ -1040,20 +1025,16 @@ client_msg_cb(int fd, int what, void *v) case SSL_ERROR_SYSCALL: if (nread == 0) { /* EOF, handled below */ - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "EOF from %s without proper TLS shutdown", + sudo_warnx(U_("EOF from %s without proper TLS shutdown"), closure->ipaddr); break; } - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_read from %s: %s", closure->ipaddr, - strerror(errno)); + sudo_warn("%s: SSL_read", closure->ipaddr); goto close_connection; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected error during SSL_read(): %d (%s)", - err, ERR_error_string(ERR_get_error(), NULL)); - goto close_connection; + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("%s: SSL_read: %s", closure->ipaddr, errstr); + goto close_connection; } } } else @@ -1068,8 +1049,7 @@ client_msg_cb(int fd, int what, void *v) case -1: if (errno == EAGAIN) debug_return; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to receive %u bytes", buf->size - buf->len); + sudo_warn("%s: read", closure->ipaddr); goto close_connection; case 0: if (closure->state != FINISHED) { @@ -1088,8 +1068,7 @@ client_msg_cb(int fd, int what, void *v) msg_len = ntohl(msg_len); if (msg_len > MESSAGE_SIZE_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "client message too large: %u", msg_len); + sudo_warnx(U_("client message too large: %zu"), (size_t)msg_len); closure->errstr = _("client message too large"); goto send_error; } @@ -1108,8 +1087,7 @@ client_msg_cb(int fd, int what, void *v) "%s: parsing ClientMessage, size %u", __func__, msg_len); buf->off += sizeof(msg_len); if (!handle_client_message(buf->data + buf->off, msg_len, closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to parse ClientMessage, size %u", msg_len); + sudo_warnx(U_("%s: %s"), source, U_("invalid ClientMessage")); closure->errstr = _("invalid ClientMessage"); goto send_error; } @@ -1155,15 +1133,11 @@ schedule_commit_point(TimeSpec *commit_point, "%s: sending commit point [%lld, %ld]", __func__, (long long)commit_point->tv_sec, (long)commit_point->tv_nsec); - if (!fmt_server_message(closure, &msg)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format ServerMessage (commit point)"); + if (!fmt_server_message(closure, &msg)) goto bad; - } if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); goto bad; } } @@ -1301,17 +1275,18 @@ static void tls_handshake_cb(int fd, int what, void *v) { struct connection_closure *closure = v; + const char *errstr; + int err, handshake_status; debug_decl(tls_handshake_cb, SUDO_DEBUG_UTIL); if (what == SUDO_EV_TIMEOUT) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "TLS handshake timed out"); + sudo_warnx("TLS handshake with %s timed out", closure->ipaddr); goto bad; } - int handshake_status = SSL_accept(closure->ssl); - int err = SSL_ERROR_NONE; - switch (err = SSL_get_error(closure->ssl, handshake_status)) { + handshake_status = SSL_accept(closure->ssl); + err = SSL_get_error(closure->ssl, handshake_status); + switch (err) { case SSL_ERROR_NONE: /* ssl handshake was successful */ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, @@ -1331,8 +1306,7 @@ tls_handshake_cb(int fd, int what, void *v) } if (sudo_ev_add(closure->evbase, closure->ssl_accept_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add ssl_accept_ev to queue"); + sudo_warnx("%s", U_("unable to add event to queue")); goto bad; } debug_return; @@ -1350,20 +1324,16 @@ tls_handshake_cb(int fd, int what, void *v) } if (sudo_ev_add(closure->evbase, closure->ssl_accept_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add ssl_accept_ev to queue"); + sudo_warnx("%s", U_("unable to add event to queue")); goto bad; } debug_return; case SSL_ERROR_SYSCALL: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected error during TLS handshake: %d (%s)", - err, strerror(errno)); + sudo_warn("%s: SSL_accept", closure->ipaddr); goto bad; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected error during TLS handshake: %d (%s)", - err, ERR_error_string(ERR_get_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("%s: SSL_accept: %s", closure->ipaddr, errstr); goto bad; } @@ -1424,18 +1394,18 @@ new_connection(int sock, bool tls, const struct sockaddr *sa, #if defined(HAVE_OPENSSL) /* If TLS is enabled, perform the TLS handshake first. */ if (tls) { + const char *errstr; + /* Create the SSL object for the closure and attach it to the socket */ if ((closure->ssl = SSL_new(logsrvd_server_tls_ctx())) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to create new ssl object: %s", - ERR_error_string(ERR_get_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx(U_("%s: %s"), "SSL_new", errstr); goto bad; } if (SSL_set_fd(closure->ssl, closure->sock) != 1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to set fd for TLS: %s", - ERR_error_string(ERR_get_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx(U_("%s: %s"), "SSL_set_fd", errstr); goto bad; } @@ -1443,15 +1413,16 @@ new_connection(int sock, bool tls, const struct sockaddr *sa, available during hostname matching */ if (SSL_set_ex_data(closure->ssl, 1, closure) <= 0) { + errstr = ERR_reason_error_string(ERR_get_error()); sudo_warnx(U_("Unable to attach user data to the ssl object: %s"), - ERR_error_string(ERR_get_error(), NULL)); + errstr); goto bad; } /* Enable SSL_accept to begin handshake with client. */ if (sudo_ev_add(evbase, closure->ssl_accept_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_fatal("%s", U_("unable to add event to queue")); + sudo_warnx("%s", U_("unable to add event to queue")); goto bad; } } @@ -1537,8 +1508,7 @@ listener_cb(int fd, int what, void *v) int keepalive = 1; if (setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to set SO_KEEPALIVE option"); + sudo_warn("SO_KEEPALIVE"); } } if (!new_connection(sock, l->tls, &s_un.sa, evbase)) { @@ -1547,10 +1517,8 @@ listener_cb(int fd, int what, void *v) "unable to start new connection"); } } else { - if (errno != EAGAIN) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to accept new connection"); - } + if (errno != EAGAIN) + sudo_warn("accept"); /* TODO: pause accepting on ENFILE and EMFILE */ } @@ -1634,7 +1602,7 @@ server_reload(struct sudo_event_base *evbase) logsrvd_debug_instance = SUDO_DEBUG_INSTANCE_INITIALIZER; if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) != -1) { logsrvd_debug_instance = sudo_debug_register(getprogname(), - NULL, NULL, sudo_conf_debug_files(getprogname())); + NULL, NULL, sudo_conf_debug_files(getprogname()), -1); } } @@ -1744,8 +1712,7 @@ signal_cb(int signo, int what, void *v) server_dump_stats(); break; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected signal %d", signo); + sudo_warnx(U_("unexpected signal %d"), signo); break; } @@ -1784,12 +1751,16 @@ write_pidfile(void) FILE *fp; int fd; bool success; + mode_t oldmask; char *pid_file = (char *)logsrvd_conf_pid_file(); debug_decl(write_pidfile, SUDO_DEBUG_UTIL); if (pid_file == NULL) debug_return; + /* Default logsrvd umask is more restrictive (077). */ + oldmask = umask(S_IWGRP|S_IWOTH); + /* sudo_mkdir_parents() modifies the path but restores it before return. */ success = sudo_mkdir_parents(pid_file, ROOT_UID, ROOT_GID, S_IRWXU|S_IXGRP|S_IXOTH, false); @@ -1807,6 +1778,8 @@ write_pidfile(void) fclose(fp); } } + umask(oldmask); + debug_return; } @@ -1819,6 +1792,9 @@ daemonize(bool nofork) int fd; debug_decl(daemonize, SUDO_DEBUG_UTIL); + if (chdir("/") == -1) + sudo_warn("chdir(\"/\")"); + if (!nofork) { switch (sudo_debug_fork()) { case -1: @@ -1835,18 +1811,30 @@ daemonize(bool nofork) if (setsid() == -1) sudo_fatal("setsid"); write_pidfile(); - } - if (chdir("/") == -1) - sudo_warn("chdir(\"/\")"); - if ((fd = open(_PATH_DEVNULL, O_RDWR)) != -1) { - (void) dup2(fd, STDIN_FILENO); - (void) dup2(fd, STDOUT_FILENO); - (void) dup2(fd, STDERR_FILENO); - if (fd > STDERR_FILENO) - (void) close(fd); + if ((fd = open(_PATH_DEVNULL, O_RDWR)) != -1) { + (void) dup2(fd, STDIN_FILENO); + (void) dup2(fd, STDOUT_FILENO); + (void) dup2(fd, STDERR_FILENO); + if (fd > STDERR_FILENO) + (void) close(fd); + } + } else { + if ((fd = open(_PATH_DEVNULL, O_RDWR)) != -1) { + /* Preserve stdout/stderr in nofork mode (if open). */ + (void) dup2(fd, STDIN_FILENO); + if (fcntl(STDOUT_FILENO, F_GETFL) == -1) + (void) dup2(fd, STDOUT_FILENO); + if (fcntl(STDERR_FILENO, F_GETFL) == -1) + (void) dup2(fd, STDERR_FILENO); + if (fd > STDERR_FILENO) + (void) close(fd); + } } + /* Disable logging to stderr after we become a daemon. */ + logsrvd_warn_stderr(false); + debug_return; } @@ -1921,7 +1909,7 @@ main(int argc, char *argv[]) if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) exit(EXIT_FAILURE); logsrvd_debug_instance = sudo_debug_register(getprogname(), NULL, NULL, - sudo_conf_debug_files(getprogname())); + sudo_conf_debug_files(getprogname()), -1); if (protobuf_c_version_number() < 1003000) sudo_fatalx("%s", U_("Protobuf-C version 1.3 or higher required")); diff --git a/logsrvd/logsrvd.h b/logsrvd/logsrvd.h index 69bae730e..bb0e95da7 100644 --- a/logsrvd/logsrvd.h +++ b/logsrvd/logsrvd.h @@ -219,10 +219,14 @@ SSL_CTX *logsrvd_server_tls_ctx(void); bool logsrvd_conf_relay_tls_check_peer(void); SSL_CTX *logsrvd_relay_tls_ctx(void); #endif +bool logsrvd_conf_log_exit(void); +uid_t logsrvd_conf_iolog_uid(void); +gid_t logsrvd_conf_iolog_gid(void); mode_t logsrvd_conf_iolog_mode(void); void address_list_addref(struct server_address_list *); void address_list_delref(struct server_address_list *); void logsrvd_conf_cleanup(void); +void logsrvd_warn_stderr(bool enabled); /* logsrvd_journal.c */ extern struct client_message_switch cms_journal; diff --git a/logsrvd/logsrvd_conf.c b/logsrvd/logsrvd_conf.c index e380cd7ac..3c61ae827 100644 --- a/logsrvd/logsrvd_conf.c +++ b/logsrvd/logsrvd_conf.c @@ -78,6 +78,13 @@ ((_c)->relay._f != -1 ? (_c)->relay._f : (_c)->server._f) #endif +enum server_log_type { + SERVER_LOG_NONE, + SERVER_LOG_STDERR, + SERVER_LOG_SYSLOG, + SERVER_LOG_FILE +}; + struct logsrvd_config; typedef bool (*logsrvd_conf_cb_t)(struct logsrvd_config *, const char *, size_t); @@ -102,6 +109,9 @@ static struct logsrvd_config { struct address_list_container addresses; struct timespec timeout; bool tcp_keepalive; + enum server_log_type log_type; + FILE *log_stream; + char *log_file; char *pid_file; #if defined(HAVE_OPENSSL) char *tls_key_path; @@ -148,10 +158,12 @@ static struct logsrvd_config { } iolog; struct logsrvd_config_eventlog { int log_type; + bool log_exit; enum eventlog_format log_format; } eventlog; struct logsrvd_config_syslog { unsigned int maxlen; + int server_facility; int facility; int acceptpri; int rejectpri; @@ -164,7 +176,28 @@ static struct logsrvd_config { } logfile; } *logsrvd_config; +static bool logsrvd_warn_enable_stderr = true; + +/* eventlog getters */ +bool +logsrvd_conf_log_exit(void) +{ + return logsrvd_config->eventlog.log_exit; +} + /* iolog getters */ +uid_t +logsrvd_conf_iolog_uid(void) +{ + return logsrvd_config->iolog.uid; +} + +gid_t +logsrvd_conf_iolog_gid(void) +{ + return logsrvd_config->iolog.gid; +} + mode_t logsrvd_conf_iolog_mode(void) { @@ -355,8 +388,7 @@ cb_iolog_user(struct logsrvd_config *config, const char *user, size_t offset) debug_decl(cb_iolog_user, SUDO_DEBUG_UTIL); if ((pw = getpwnam(user)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unknown user %s", user); + sudo_warnx(U_("unknown user %s"), user); debug_return_bool(false); } config->iolog.uid = pw->pw_uid; @@ -373,8 +405,7 @@ cb_iolog_group(struct logsrvd_config *config, const char *group, size_t offset) debug_decl(cb_iolog_group, SUDO_DEBUG_UTIL); if ((gr = getgrnam(group)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unknown group %s", group); + sudo_warnx(U_("unknown group %s"), group); debug_return_bool(false); } config->iolog.gid = gr->gr_gid; @@ -392,8 +423,7 @@ cb_iolog_mode(struct logsrvd_config *config, const char *str, size_t offset) mode = sudo_strtomode(str, &errstr); if (errstr != NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to parse iolog mode %s", str); + sudo_warnx(U_("unable to parse iolog mode %s"), str); debug_return_bool(false); } config->iolog.mode = mode; @@ -410,8 +440,7 @@ cb_iolog_maxseq(struct logsrvd_config *config, const char *str, size_t offset) value = sudo_strtonum(str, 0, SESSID_MAX, &errstr); if (errstr != NULL) { if (errno != ERANGE) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "bad maxseq: %s: %s", str, errstr); + sudo_warnx(U_("invalid value for %s: %s"), "maxseq", errstr); debug_return_bool(false); } /* Out of range, clamp to SESSID_MAX as documented. */ @@ -560,6 +589,37 @@ cb_server_pid_file(struct logsrvd_config *config, const char *str, size_t offset debug_return_bool(true); } +static bool +cb_server_log(struct logsrvd_config *config, const char *str, size_t offset) +{ + char *copy = NULL; + enum server_log_type log_type = SERVER_LOG_NONE; + debug_decl(cb_server_log, SUDO_DEBUG_UTIL); + + /* An empty value means to disable the server log. */ + if (*str != '\0') { + if (*str != '/') { + log_type = SERVER_LOG_FILE; + if ((copy = strdup(str)) == NULL) { + sudo_warn(NULL); + debug_return_bool(false); + } + } else if (strcmp(str, "stderr") == 0) { + log_type = SERVER_LOG_STDERR; + } else if (strcmp(str, "syslog") == 0) { + log_type = SERVER_LOG_SYSLOG; + } else { + debug_return_bool(false); + } + } + + free(config->server.log_file); + config->server.log_file = copy; + config->server.log_type = log_type; + + debug_return_bool(true); +} + #if defined(HAVE_OPENSSL) static bool cb_tls_key(struct logsrvd_config *config, const char *path, size_t offset) @@ -789,6 +849,19 @@ cb_eventlog_format(struct logsrvd_config *config, const char *str, size_t offset debug_return_bool(true); } +static bool +cb_eventlog_exit(struct logsrvd_config *config, const char *str, size_t offset) +{ + int val; + debug_decl(cb_eventlog_exit, SUDO_DEBUG_UTIL); + + if ((val = sudo_strtobool(str)) == -1) + debug_return_bool(false); + + config->eventlog.log_exit = val; + debug_return_bool(true); +} + /* syslog callbacks */ static bool cb_syslog_maxlen(struct logsrvd_config *config, const char *str, size_t offset) @@ -807,14 +880,29 @@ cb_syslog_maxlen(struct logsrvd_config *config, const char *str, size_t offset) } static bool +cb_syslog_server_facility(struct logsrvd_config *config, const char *str, size_t offset) +{ + int logfac; + debug_decl(cb_syslog_server_facility, SUDO_DEBUG_UTIL); + + if (!sudo_str2logfac(str, &logfac)) { + sudo_warnx(U_("unknown syslog facility %s"), str); + debug_return_bool(false); + } + + config->syslog.server_facility = logfac; + + debug_return_bool(true); +} + +static bool cb_syslog_facility(struct logsrvd_config *config, const char *str, size_t offset) { int logfac; debug_decl(cb_syslog_facility, SUDO_DEBUG_UTIL); if (!sudo_str2logfac(str, &logfac)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid syslog priority %s", str); + sudo_warnx(U_("unknown syslog facility %s"), str); debug_return_bool(false); } @@ -830,8 +918,7 @@ cb_syslog_acceptpri(struct logsrvd_config *config, const char *str, size_t offse debug_decl(cb_syslog_acceptpri, SUDO_DEBUG_UTIL); if (!sudo_str2logpri(str, &logpri)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid syslog priority %s", str); + sudo_warnx(U_("unknown syslog priority %s"), str); debug_return_bool(false); } @@ -846,8 +933,10 @@ cb_syslog_rejectpri(struct logsrvd_config *config, const char *str, size_t offse int logpri; debug_decl(cb_syslog_rejectpri, SUDO_DEBUG_UTIL); - if (!sudo_str2logpri(str, &logpri)) + if (!sudo_str2logpri(str, &logpri)) { + sudo_warnx(U_("unknown syslog priority %s"), str); debug_return_bool(false); + } config->syslog.rejectpri = logpri; @@ -861,8 +950,7 @@ cb_syslog_alertpri(struct logsrvd_config *config, const char *str, size_t offset debug_decl(cb_syslog_alertpri, SUDO_DEBUG_UTIL); if (!sudo_str2logpri(str, &logpri)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid syslog priority %s", str); + sudo_warnx(U_("unknown syslog priority %s"), str); debug_return_bool(false); } @@ -940,6 +1028,7 @@ static struct logsrvd_config_entry server_conf_entries[] = { { "timeout", cb_server_timeout }, { "tcp_keepalive", cb_server_keepalive }, { "pid_file", cb_server_pid_file }, + { "server_log", cb_server_log }, #if defined(HAVE_OPENSSL) { "tls_key", cb_tls_key, offsetof(struct logsrvd_config, server.tls_key_path) }, { "tls_cacert", cb_tls_cacert, offsetof(struct logsrvd_config, server.tls_cacert_path) }, @@ -988,11 +1077,13 @@ static struct logsrvd_config_entry iolog_conf_entries[] = { static struct logsrvd_config_entry eventlog_conf_entries[] = { { "log_type", cb_eventlog_type }, { "log_format", cb_eventlog_format }, + { "log_exit", cb_eventlog_exit }, { NULL } }; static struct logsrvd_config_entry syslog_conf_entries[] = { { "maxlen", cb_syslog_maxlen }, + { "server_facility", cb_syslog_server_facility }, { "facility", cb_syslog_facility }, { "reject_priority", cb_syslog_rejectpri }, { "accept_priority", cb_syslog_acceptpri }, @@ -1086,7 +1177,8 @@ logsrvd_conf_parse(struct logsrvd_config *config, FILE *fp, const char *path) } } if (entry->conf_str == NULL) { - sudo_warnx(U_("%s:%d unknown key: %s"), path, lineno, line); + sudo_warnx(U_("%s:%d [%s] illegal key: %s"), path, lineno, + conf_section->name, line); goto done; } } @@ -1098,28 +1190,24 @@ done: } static FILE * -logsrvd_open_eventlog(struct logsrvd_config *config) +logsrvd_open_log_file(const char *path, int flags) { mode_t oldmask; FILE *fp = NULL; const char *omode; - int fd, flags; - debug_decl(logsrvd_open_eventlog, SUDO_DEBUG_UTIL); + int fd; + debug_decl(logsrvd_open_log_file, SUDO_DEBUG_UTIL); - /* Cannot append to a JSON file. */ - if (config->eventlog.log_format == EVLOG_JSON) { - flags = O_RDWR|O_CREAT; - omode = "w"; - } else { - flags = O_WRONLY|O_APPEND|O_CREAT; + if (ISSET(flags, O_APPEND)) { omode = "a"; + } else { + omode = "w"; } oldmask = umask(S_IRWXG|S_IRWXO); - fd = open(config->logfile.path, flags, S_IRUSR|S_IWUSR); + fd = open(path, flags, S_IRUSR|S_IWUSR); (void)umask(oldmask); if (fd == -1 || (fp = fdopen(fd, omode)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to open log file %s", config->logfile.path); + sudo_warn(U_("unable to open log file %s"), path); if (fd != -1) close(fd); } @@ -1128,6 +1216,21 @@ logsrvd_open_eventlog(struct logsrvd_config *config) } static FILE * +logsrvd_open_eventlog(struct logsrvd_config *config) +{ + int flags; + debug_decl(logsrvd_open_eventlog, SUDO_DEBUG_UTIL); + + /* Cannot append to a JSON file. */ + if (config->eventlog.log_format == EVLOG_JSON) { + flags = O_RDWR|O_CREAT; + } else { + flags = O_WRONLY|O_APPEND|O_CREAT; + } + debug_return_ptr(logsrvd_open_log_file(config->logfile.path, flags)); +} + +static FILE * logsrvd_stub_open_log(int type, const char *logfile) { /* Actual open already done by logsrvd_open_eventlog() */ @@ -1160,6 +1263,182 @@ logsrvd_conf_eventlog_setconf(struct logsrvd_config *config) debug_return; } +/* + * Conversation function for use by sudo_warn/sudo_fatal. + * Logs to stdout/stderr. + */ +static int +logsrvd_conv_stderr(int num_msgs, const struct sudo_conv_message msgs[], + struct sudo_conv_reply replies[], struct sudo_conv_callback *callback) +{ + int i; + debug_decl(logsrvd_conv_stderr, SUDO_DEBUG_UTIL); + + for (i = 0; i < num_msgs; i++) { + if (fputs(msgs[i].msg, stderr) == EOF) + debug_return_int(-1); + } + + debug_return_int(0); +} + +/* + * Conversation function for use by sudo_warn/sudo_fatal. + * Acts as a no-op log sink. + */ +static int +logsrvd_conv_none(int num_msgs, const struct sudo_conv_message msgs[], + struct sudo_conv_reply replies[], struct sudo_conv_callback *callback) +{ + /* Also write to stderr if still in the foreground. */ + if (logsrvd_warn_enable_stderr) { + (void)logsrvd_conv_stderr(num_msgs, msgs, replies, callback); + } + + return 0; +} + +/* + * Conversation function for use by sudo_warn/sudo_fatal. + * Logs to syslog. + */ +static int +logsrvd_conv_syslog(int num_msgs, const struct sudo_conv_message msgs[], + struct sudo_conv_reply replies[], struct sudo_conv_callback *callback) +{ + char *buf = NULL, *cp = NULL; + const char *progname; + size_t proglen, bufsize = 0; + int i; + debug_decl(logsrvd_conv_syslog, SUDO_DEBUG_UTIL); + + if (logsrvd_config == NULL) { + debug_return_int(logsrvd_conv_stderr(num_msgs, msgs, replies, callback)); + } + + /* Also write to stderr if still in the foreground. */ + if (logsrvd_warn_enable_stderr) { + (void)logsrvd_conv_stderr(num_msgs, msgs, replies, callback); + } + + /* + * Concat messages into a flag string that we can syslog. + */ + progname = getprogname(); + proglen = strlen(progname); + for (i = 0; i < num_msgs; i++) { + const char *msg = msgs[i].msg; + size_t len = strlen(msg); + size_t used = (size_t)(cp - buf); + + /* Strip leading "sudo_logsrvd: " prefix. */ + if (strncmp(msg, progname, proglen) == 0) { + msg += proglen; + len -= proglen; + if (len == 0) { + /* Skip over ": " string that follows program name. */ + if (i + 1 < num_msgs && strcmp(msgs[i + 1].msg, ": ") == 0) { + i++; + continue; + } + } else if (msg[0] == ':' && msg[1] == ' ') { + /* Handle "progname: " */ + msg += 2; + len -= 2; + } + } + + /* Strip off trailing newlines. */ + while (len > 1 && msg[len - 1] == '\n') + len--; + if (len == 0) + continue; + + if (len >= bufsize - used) { + bufsize += 1024; + char *tmp = realloc(buf, bufsize); + if (tmp == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + free(buf); + debug_return_int(-1); + } + buf = tmp; + cp = tmp + used; + } + memcpy(cp, msg, len); + cp[len] = '\0'; + cp += len; + } + if (buf != NULL) { + openlog(progname, 0, logsrvd_config->syslog.server_facility); + syslog(LOG_ERR, "%s", buf); + free(buf); + + /* Restore old syslog settings. */ + if (logsrvd_config->eventlog.log_type == EVLOG_SYSLOG) + openlog("sudo", 0, logsrvd_config->syslog.facility); + } + + debug_return_int(0); +} + +/* + * Conversation function for use by sudo_warn/sudo_fatal. + * Logs to an already-open log file. + */ +static int +logsrvd_conv_logfile(int num_msgs, const struct sudo_conv_message msgs[], + struct sudo_conv_reply replies[], struct sudo_conv_callback *callback) +{ + const char *progname; + size_t proglen; + int i; + debug_decl(logsrvd_conv_logfile, SUDO_DEBUG_UTIL); + + if (logsrvd_config == NULL) { + debug_return_int(logsrvd_conv_stderr(num_msgs, msgs, replies, callback)); + } + + /* Also write to stderr if still in the foreground. */ + if (logsrvd_warn_enable_stderr) { + (void)logsrvd_conv_stderr(num_msgs, msgs, replies, callback); + } + + if (logsrvd_config->server.log_stream == NULL) { + errno = EBADF; + debug_return_int(-1); + } + + progname = getprogname(); + proglen = strlen(progname); + for (i = 0; i < num_msgs; i++) { + const char *msg = msgs[i].msg; + size_t len = strlen(msg); + + /* Strip leading "sudo_logsrvd: " prefix. */ + if (strncmp(msg, progname, proglen) == 0) { + msg += proglen; + len -= proglen; + if (len == 0) { + /* Skip over ": " string that follows program name. */ + if (i + 1 < num_msgs && strcmp(msgs[i + 1].msg, ": ") == 0) { + i++; + continue; + } + } else if (msg[0] == ':' && msg[1] == ' ') { + /* Handle "progname: " */ + msg += 2; + len -= 2; + } + } + + if (fwrite(msg, len, 1, logsrvd_config->server.log_stream) != 1) + debug_return_int(-1); + } + + debug_return_int(0); +} + /* Free the specified struct logsrvd_config and its contents. */ static void logsrvd_conf_free(struct logsrvd_config *config) @@ -1172,6 +1451,9 @@ logsrvd_conf_free(struct logsrvd_config *config) /* struct logsrvd_config_server */ address_list_delref(&config->server.addresses.addrs); free(config->server.pid_file); + free(config->server.log_file); + if (config->server.log_stream != NULL) + fclose(config->server.log_stream); #if defined(HAVE_OPENSSL) free(config->server.tls_key_path); free(config->server.tls_cert_path); @@ -1245,6 +1527,7 @@ logsrvd_conf_alloc(void) config->server.addresses.refcnt = 1; config->server.timeout.tv_sec = DEFAULT_SOCKET_TIMEOUT_SEC; config->server.tcp_keepalive = true; + config->server.log_type = SERVER_LOG_SYSLOG; config->server.pid_file = strdup(_PATH_SUDO_LOGSRVD_PID); if (config->server.pid_file == NULL) { sudo_warn(NULL); @@ -1295,9 +1578,11 @@ logsrvd_conf_alloc(void) /* Event log defaults */ config->eventlog.log_type = EVLOG_SYSLOG; config->eventlog.log_format = EVLOG_SUDO; + config->eventlog.log_exit = false; /* Syslog defaults */ config->syslog.maxlen = 960; + config->syslog.server_facility = LOG_DAEMON; if (!cb_syslog_facility(config, LOGFAC, 0)) { sudo_warnx(U_("unknown syslog facility %s"), LOGFAC); goto bad; @@ -1411,6 +1696,31 @@ logsrvd_conf_apply(struct logsrvd_config *config) if (TAILQ_EMPTY(&config->relay.relays.addrs)) config->relay.store_first = false; + /* Open server log if specified. */ + switch (config->server.log_type) { + case SERVER_LOG_SYSLOG: + sudo_warn_set_conversation(logsrvd_conv_syslog); + break; + case SERVER_LOG_FILE: + config->server.log_stream = + logsrvd_open_log_file(config->server.log_file, O_WRONLY|O_APPEND|O_CREAT); + if (config->server.log_stream == NULL) + debug_return_bool(false); + sudo_warn_set_conversation(logsrvd_conv_logfile); + break; + case SERVER_LOG_NONE: + sudo_warn_set_conversation(logsrvd_conv_none); + break; + case SERVER_LOG_STDERR: + /* Default is stderr. */ + sudo_warn_set_conversation(NULL); + break; + default: + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "cannot open unknown log type %d", config->eventlog.log_type); + break; + } + /* Open event log if specified. */ switch (config->eventlog.log_type) { case EVLOG_SYSLOG: @@ -1493,3 +1803,9 @@ logsrvd_conf_cleanup(void) debug_return; } + +void +logsrvd_warn_stderr(bool enabled) +{ + logsrvd_warn_enable_stderr = enabled; +} diff --git a/logsrvd/logsrvd_journal.c b/logsrvd/logsrvd_journal.c index 9853243da..be6f33611 100644 --- a/logsrvd/logsrvd_journal.c +++ b/logsrvd/logsrvd_journal.c @@ -49,6 +49,7 @@ #include "sudo_debug.h" #include "sudo_event.h" #include "sudo_eventlog.h" +#include "sudo_fatal.h" #include "sudo_gettext.h" #include "sudo_iolog.h" #include "sudo_util.h" @@ -67,8 +68,7 @@ journal_fdopen(int fd, const char *journal_path, closure->journal_path = strdup(journal_path); if (closure->journal_path == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to allocate memory"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_bool(false); } @@ -85,29 +85,40 @@ journal_fdopen(int fd, const char *journal_path, static int journal_mkstemp(const char *parent_dir, char *pathbuf, int pathlen) { - int fd, len; + int len, fd = -1; + mode_t dirmode, oldmask; debug_decl(journal_mkstemp, SUDO_DEBUG_UTIL); + /* umask must not be more restrictive than the file modes. */ + dirmode = logsrvd_conf_iolog_mode() | S_IXUSR; + if (dirmode & (S_IRGRP|S_IWGRP)) + dirmode |= S_IXGRP; + if (dirmode & (S_IROTH|S_IWOTH)) + dirmode |= S_IXOTH; + oldmask = umask(ACCESSPERMS & ~dirmode); + len = snprintf(pathbuf, pathlen, "%s/%s/%s", logsrvd_conf_relay_dir(), parent_dir, RELAY_TEMPLATE); if (len >= pathlen) { errno = ENAMETOOLONG; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s/%s/%s", logsrvd_conf_relay_dir(), parent_dir, RELAY_TEMPLATE); - debug_return_int(-1); + sudo_warn("%s/%s/%s", logsrvd_conf_relay_dir(), parent_dir, + RELAY_TEMPLATE); + goto done; } - if (!sudo_mkdir_parents(pathbuf, ROOT_UID, ROOT_GID, - S_IRWXU|S_IXGRP|S_IXOTH, false)) { + if (!sudo_mkdir_parents(pathbuf, logsrvd_conf_iolog_uid(), + logsrvd_conf_iolog_gid(), S_IRWXU|S_IXGRP|S_IXOTH, false)) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, "unable to create parent dir for %s", pathbuf); - debug_return_int(-1); + goto done; } if ((fd = mkstemp(pathbuf)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to create journal file %s", pathbuf); - debug_return_int(-1); + sudo_warn(U_("%s: %s"), "mkstemp", pathbuf); + goto done; } +done: + umask(oldmask); + debug_return_int(fd); } @@ -127,8 +138,7 @@ journal_create(struct connection_closure *closure) debug_return_bool(false); } if (!sudo_lock_file(fd, SUDO_TLOCK)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to lock journal file %s", journal_path); + sudo_warn(U_("unable to lock %s"), journal_path); unlink(journal_path); close(fd); closure->errstr = _("unable to lock journal file"); @@ -139,7 +149,7 @@ journal_create(struct connection_closure *closure) "unable to fdopen journal file %s", journal_path); unlink(journal_path); close(fd); - closure->errstr = _("unable to allocate memory"); + closure->errstr = _("unable to open journal file"); debug_return_bool(false); } @@ -173,8 +183,8 @@ journal_finish(struct connection_closure *closure) } close(fd); if (rename(closure->journal_path, outgoing_path) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to rename %s -> %s", closure->journal_path, outgoing_path); + sudo_warn(U_("unable to rename %s to %s"), closure->journal_path, + outgoing_path); closure->errstr = _("unable to rename journal file"); unlink(outgoing_path); debug_return_bool(false); @@ -191,8 +201,7 @@ journal_finish(struct connection_closure *closure) free(closure->journal_path); closure->journal_path = strdup(outgoing_path); if (closure->journal_path == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to strdup new journal path %s", outgoing_path); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); closure->errstr = _("unable to allocate memory"); debug_return_bool(false); } @@ -221,19 +230,21 @@ journal_seek(struct timespec *target, struct connection_closure *closure) /* Read message size (uint32_t in network byte order). */ nread = fread(&msg_len, sizeof(msg_len), 1, closure->journal); if (nread != 1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to read message length from %s", closure->journal_path); - if (feof(closure->journal)) + if (feof(closure->journal)) { + sudo_warnx(U_("%s: %s"), closure->journal_path, + U_("unexpected EOF reading journal file")); closure->errstr = _("unexpected EOF reading journal file"); - else + } else { + sudo_warn(U_("%s: %s"), closure->journal_path, + U_("error reading journal file")); closure->errstr = _("error reading journal file"); + } break; } msg_len = ntohl(msg_len); if (msg_len > MESSAGE_SIZE_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "%s: client message too large %u > %u", - closure->journal_path, msg_len, MESSAGE_SIZE_MAX); + sudo_warnx(U_("%s: %s"), closure->journal_path, + U_("client message too large")); closure->errstr = _("client message too large"); break; } @@ -254,12 +265,15 @@ journal_seek(struct timespec *target, struct connection_closure *closure) nread = fread(buf, msg_len, 1, closure->journal); if (nread != 1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to read message from %s", closure->journal_path); - if (feof(closure->journal)) + if (feof(closure->journal)) { + sudo_warnx(U_("%s: %s"), closure->journal_path, + U_("unexpected EOF reading journal file")); closure->errstr = _("unexpected EOF reading journal file"); - else + } else { + sudo_warn(U_("%s: %s"), closure->journal_path, + U_("error reading journal file")); closure->errstr = _("error reading journal file"); + } break; } } @@ -267,8 +281,8 @@ journal_seek(struct timespec *target, struct connection_closure *closure) client_message__free_unpacked(msg, NULL); msg = client_message__unpack(NULL, msg_len, buf); if (msg == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to unpack ClientMessage size %u", msg_len); + sudo_warnx("unable to unpack %s size %zu", "ClientMessage", + (size_t)msg_len); closure->errstr = _("invalid journal file, unable to restart"); break; } @@ -341,8 +355,8 @@ journal_seek(struct timespec *target, struct connection_closure *closure) (long long)delay->tv_sec, (long)delay->tv_nsec); break; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected type_case value %d", msg->type_case); + sudo_warnx(U_("unexpected type_case value %d in %s from %s"), + msg->type_case, "ClientMessage", closure->journal_path); break; } if (delay != NULL) { @@ -361,10 +375,9 @@ journal_seek(struct timespec *target, struct connection_closure *closure) /* Mismatch between resume point and stored log. */ closure->errstr = _("invalid journal file, unable to restart"); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to find resume point [%lld, %ld] in %s", - (long long)target->tv_sec, target->tv_nsec, - closure->journal_path); + sudo_warnx(U_("%s: unable to find resume point [%lld, %ld]"), + closure->journal_path, (long long)target->tv_sec, + target->tv_nsec); break; } } @@ -400,20 +413,17 @@ journal_restart(RestartMessage *msg, uint8_t *buf, size_t buflen, logsrvd_conf_relay_dir(), cp); if (len >= ssizeof(journal_path)) { errno = ENAMETOOLONG; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s/incoming/%s", logsrvd_conf_relay_dir(), cp); + sudo_warn("%s/incoming/%s", logsrvd_conf_relay_dir(), cp); closure->errstr = _("unable to create journal file"); debug_return_bool(false); } if ((fd = open(journal_path, O_RDWR)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to open journal file %s", journal_path); + sudo_warn(U_("unable to open %s"), journal_path); closure->errstr = _("unable to create journal file"); debug_return_bool(false); } if (!journal_fdopen(fd, journal_path, closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to fdopen journal file %s", journal_path); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); close(fd); closure->errstr = _("unable to allocate memory"); debug_return_bool(false); @@ -423,8 +433,7 @@ journal_restart(RestartMessage *msg, uint8_t *buf, size_t buflen, target.tv_sec = msg->resume_point->tv_sec; target.tv_nsec = msg->resume_point->tv_nsec; if (!journal_seek(&target, closure)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to seek to [%lld, %ld] in journal file %s", + sudo_warn(U_("unable to seek to [%lld, %ld] in journal file %s"), (long long)target.tv_sec, target.tv_nsec, journal_path); debug_return_bool(false); } @@ -473,8 +482,7 @@ journal_accept(AcceptMessage *msg, uint8_t *buf, size_t len, debug_return_bool(false); if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); debug_return_bool(false); } } diff --git a/logsrvd/logsrvd_local.c b/logsrvd/logsrvd_local.c index 7ff3cc160..350bfd489 100644 --- a/logsrvd/logsrvd_local.c +++ b/logsrvd/logsrvd_local.c @@ -49,6 +49,7 @@ #include "sudo_debug.h" #include "sudo_event.h" #include "sudo_eventlog.h" +#include "sudo_fatal.h" #include "sudo_gettext.h" #include "sudo_json.h" #include "sudo_iolog.h" @@ -121,8 +122,8 @@ logsrvd_json_log_cb(struct json_container *json, void *v) break; } default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected value case %d", info->value_case); + sudo_warnx(U_("unexpected type_case value %d in %s from %s"), + info->value_case, "InfoMessage", "local"); goto bad; } } @@ -138,46 +139,72 @@ bool store_accept_local(AcceptMessage *msg, uint8_t *buf, size_t len, struct connection_closure *closure) { - char *log_id = NULL; struct logsrvd_info_closure info = { msg->info_msgs, msg->n_info_msgs }; + struct eventlog *evlog = NULL; + char *log_id = NULL; + bool ret = false; debug_decl(store_accept_local, SUDO_DEBUG_UTIL); /* Store sudo-style event and I/O logs. */ - closure->evlog = evlog_new(msg->submit_time, msg->info_msgs, - msg->n_info_msgs, closure); - if (closure->evlog == NULL) { + evlog = evlog_new(msg->submit_time, msg->info_msgs, msg->n_info_msgs, + closure); + if (evlog == NULL) { closure->errstr = _("error parsing AcceptMessage"); - debug_return_bool(false); + goto done; } - /* Create I/O log info file and parent directories. */ - if (msg->expect_iobufs) { - if (!iolog_init(msg, closure)) { - closure->errstr = _("error creating I/O log"); - debug_return_bool(false); + /* Additional setup for the initial command in the session. */ + if (closure->evlog == NULL) { + closure->evlog = evlog; + + /* Create I/O log info file and parent directories. */ + if (msg->expect_iobufs) { + if (!iolog_init(msg, closure)) { + closure->errstr = _("error creating I/O log"); + goto done; + } + closure->log_io = true; + log_id = closure->evlog->iolog_path; + } + } else if (closure->log_io) { + /* Sub-command from an existing session, set iolog and offset. */ + evlog->iolog_path = strdup(closure->evlog->iolog_path); + if (evlog->iolog_path == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + closure->errstr = _("unable to allocate memory"); + goto done; + } + if (closure->evlog->iolog_file != NULL) { + evlog->iolog_file = evlog->iolog_path + + (closure->evlog->iolog_file - closure->evlog->iolog_path); } - closure->log_io = true; - log_id = closure->evlog->iolog_path; + sudo_timespecsub(&evlog->submit_time, &closure->evlog->submit_time, + &evlog->iolog_offset); } - if (!eventlog_accept(closure->evlog, 0, logsrvd_json_log_cb, &info)) { + if (!eventlog_accept(evlog, 0, logsrvd_json_log_cb, &info)) { closure->errstr = _("error logging accept event"); - debug_return_bool(false); + goto done; } if (log_id != NULL) { /* Send log ID to client for restarting connections. */ if (!fmt_log_id_message(log_id, closure)) - debug_return_bool(false); + goto done; if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_server_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); - debug_return_bool(false); + sudo_warnx("%s", U_("unable to add event to queue")); + goto done; } } - debug_return_bool(true); + ret = true; + +done: + if (closure->evlog != evlog) + eventlog_free(evlog); + + debug_return_bool(ret); } /* @@ -188,33 +215,62 @@ store_reject_local(RejectMessage *msg, uint8_t *buf, size_t len, struct connection_closure *closure) { struct logsrvd_info_closure info = { msg->info_msgs, msg->n_info_msgs }; + struct eventlog *evlog = NULL; + bool ret = false; debug_decl(store_reject_local, SUDO_DEBUG_UTIL); - closure->evlog = evlog_new(msg->submit_time, msg->info_msgs, - msg->n_info_msgs, closure); - if (closure->evlog == NULL) { + evlog = evlog_new(msg->submit_time, msg->info_msgs, msg->n_info_msgs, + closure); + if (evlog == NULL) { closure->errstr = _("error parsing RejectMessage"); - debug_return_bool(false); + goto done; } - if (!eventlog_reject(closure->evlog, 0, msg->reason, - logsrvd_json_log_cb, &info)) { + if (closure->evlog == NULL) { + /* Initial command in session. */ + closure->evlog = evlog; + } else if (closure->log_io) { + /* Sub-command from an existing session, set iolog and offset. */ + evlog->iolog_path = strdup(closure->evlog->iolog_path); + if (evlog->iolog_path == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + closure->errstr = _("unable to allocate memory"); + goto done; + } + if (closure->evlog->iolog_file != NULL) { + evlog->iolog_file = evlog->iolog_path + + (closure->evlog->iolog_file - closure->evlog->iolog_path); + } + sudo_timespecsub(&evlog->submit_time, &closure->evlog->submit_time, + &evlog->iolog_offset); + } + + if (!eventlog_reject(evlog, 0, msg->reason, logsrvd_json_log_cb, &info)) { closure->errstr = _("error logging reject event"); - debug_return_bool(false); + goto done; } - debug_return_bool(true); + ret = true; + +done: + if (closure->evlog != evlog) + eventlog_free(evlog); + + debug_return_bool(ret); } bool store_exit_local(ExitMessage *msg, uint8_t *buf, size_t len, struct connection_closure *closure) { + const char *signame = NULL; + struct timespec run_time = { msg->run_time->tv_sec, msg->run_time->tv_nsec }; + int flags = 0; mode_t mode; debug_decl(store_exit_local, SUDO_DEBUG_UTIL); - /* Sudo I/O logs don't store this info. */ if (msg->signal != NULL && msg->signal[0] != '\0') { + signame = msg->signal; sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "command was killed by SIG%s%s", msg->signal, msg->dumped_core ? " (core dumped)" : ""); @@ -222,14 +278,21 @@ store_exit_local(ExitMessage *msg, uint8_t *buf, size_t len, sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "command exited with %d", msg->exit_value); } + if (logsrvd_conf_log_exit()) { + if (!eventlog_exit(closure->evlog, flags, &run_time, msg->exit_value, + signame, msg->dumped_core)) { + closure->errstr = _("error logging exit event"); + debug_return_bool(false); + } + } if (closure->log_io) { /* Clear write bits from I/O timing file to indicate completion. */ mode = logsrvd_conf_iolog_mode(); CLR(mode, S_IWUSR|S_IWGRP|S_IWOTH); if (fchmodat(closure->iolog_dir_fd, "timing", mode, 0) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to fchmodat timing file"); + sudo_warn("chmod 0%o %s/%s", (unsigned int)mode, "timing", + logsrvd_conf_iolog_dir()); } } @@ -251,15 +314,13 @@ store_restart_local(RestartMessage *msg, uint8_t *buf, size_t len, /* We must allocate closure->evlog for iolog_path. */ closure->evlog = calloc(1, sizeof(*closure->evlog)); if (closure->evlog == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "calloc(1, %zu)", sizeof(*closure->evlog)); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); closure->errstr = _("unable to allocate memory"); goto bad; } closure->evlog->iolog_path = strdup(msg->log_id); if (closure->evlog->iolog_path == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "strdup"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); closure->errstr = _("unable to allocate memory"); goto bad; } @@ -268,20 +329,18 @@ store_restart_local(RestartMessage *msg, uint8_t *buf, size_t len, closure->iolog_dir_fd = iolog_openat(AT_FDCWD, closure->evlog->iolog_path, O_RDONLY); if (closure->iolog_dir_fd == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s", closure->evlog->iolog_path); + sudo_warn("%s", closure->evlog->iolog_path); goto bad; } /* If the timing file write bit is clear, log is already complete. */ if (fstatat(closure->iolog_dir_fd, "timing", &sb, 0) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to stat %s/timing", closure->evlog->iolog_path); + sudo_warn("%s/timing", closure->evlog->iolog_path); goto bad; } if (!ISSET(sb.st_mode, S_IWUSR)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "%s already complete", closure->evlog->iolog_path); + sudo_warn(U_("%s: %s"), closure->evlog->iolog_path, + U_("log is already complete, cannot be restarted")); closure->errstr = _("log is already complete, cannot be restarted"); goto bad; } @@ -304,8 +363,7 @@ store_restart_local(RestartMessage *msg, uint8_t *buf, size_t len, /* Must seek or flush before switching from read -> write. */ if (iolog_seek(&closure->iolog_files[IOFD_TIMING], 0, SEEK_CUR) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "lseek(IOFD_TIMING, 0, SEEK_CUR)"); + sudo_warn("%s/timing", closure->evlog->iolog_path); goto bad; } @@ -321,26 +379,35 @@ bool store_alert_local(AlertMessage *msg, uint8_t *buf, size_t len, struct connection_closure *closure) { + struct eventlog *evlog = NULL; struct timespec alert_time; + bool ret = false; debug_decl(store_alert_local, SUDO_DEBUG_UTIL); if (msg->info_msgs != NULL && msg->n_info_msgs != 0) { - closure->evlog = evlog_new(NULL, msg->info_msgs, - msg->n_info_msgs, closure); - if (closure->evlog == NULL) { + evlog = evlog_new(NULL, msg->info_msgs, msg->n_info_msgs, closure); + if (evlog == NULL) { closure->errstr = _("error parsing AlertMessage"); - debug_return_bool(false); + goto done; } + if (closure->evlog == NULL) + closure->evlog = evlog; } - alert_time.tv_sec = msg->alert_time->tv_sec; alert_time.tv_nsec = msg->alert_time->tv_nsec; - if (!eventlog_alert(closure->evlog, 0, &alert_time, msg->reason, NULL)) { + + if (!eventlog_alert(evlog, 0, &alert_time, msg->reason, NULL)) { closure->errstr = _("error logging alert event"); - debug_return_bool(false); + goto done; } - debug_return_bool(true); + ret = true; + +done: + if (closure->evlog != evlog) + eventlog_free(evlog); + + debug_return_bool(ret); } bool @@ -365,25 +432,22 @@ store_iobuf_local(int iofd, IoBuffer *iobuf, uint8_t *buf, size_t buflen, iofd, (long long)iobuf->delay->tv_sec, (int)iobuf->delay->tv_nsec, iobuf->data.len); if (len < 0 || len >= ssizeof(tbuf)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format timing buffer, len %d", len); + sudo_warnx(U_("unable to format timing buffer, length %d"), len); goto bad; } /* Write to specified I/O log file. */ if (!iolog_write(&closure->iolog_files[iofd], iobuf->data.data, iobuf->data.len, &errstr)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to write to %s/%s: %s", evlog->iolog_path, - iolog_fd_to_name(iofd), errstr); + sudo_warnx(U_("%s/%s: %s"), evlog->iolog_path, iolog_fd_to_name(iofd), + errstr); goto bad; } /* Write timing data. */ if (!iolog_write(&closure->iolog_files[IOFD_TIMING], tbuf, len, &errstr)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to write to %s/%s: %s", evlog->iolog_path, + sudo_warnx(U_("%s/%s: %s"), evlog->iolog_path, iolog_fd_to_name(IOFD_TIMING), errstr); goto bad; } @@ -421,16 +485,14 @@ store_winsize_local(ChangeWindowSize *msg, uint8_t *buf, size_t buflen, (long long)msg->delay->tv_sec, (int)msg->delay->tv_nsec, msg->rows, msg->cols); if (len < 0 || len >= ssizeof(tbuf)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format timing buffer, len %d", len); + sudo_warnx(U_("unable to format timing buffer, length %d"), len); goto bad; } /* Write timing data. */ if (!iolog_write(&closure->iolog_files[IOFD_TIMING], tbuf, len, &errstr)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to write to %s/%s: %s", closure->evlog->iolog_path, + sudo_warnx(U_("%s/%s: %s"), closure->evlog->iolog_path, iolog_fd_to_name(IOFD_TIMING), errstr); goto bad; } @@ -458,17 +520,14 @@ store_suspend_local(CommandSuspend *msg, uint8_t *buf, size_t buflen, (long long)msg->delay->tv_sec, (int)msg->delay->tv_nsec, msg->signal); if (len < 0 || len >= ssizeof(tbuf)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to format timing buffer, len %d, signal %s", - len, msg->signal); + sudo_warnx(U_("unable to format timing buffer, length %d"), len); goto bad; } /* Write timing data. */ if (!iolog_write(&closure->iolog_files[IOFD_TIMING], tbuf, len, &errstr)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to write to %s/%s: %s", closure->evlog->iolog_path, + sudo_warnx(U_("%s/%s: %s"), closure->evlog->iolog_path, iolog_fd_to_name(IOFD_TIMING), errstr); goto bad; } diff --git a/logsrvd/logsrvd_queue.c b/logsrvd/logsrvd_queue.c index 5141cb322..bf75a53a3 100644 --- a/logsrvd/logsrvd_queue.c +++ b/logsrvd/logsrvd_queue.c @@ -50,6 +50,7 @@ #include "sudo_debug.h" #include "sudo_event.h" #include "sudo_eventlog.h" +#include "sudo_fatal.h" #include "sudo_gettext.h" #include "sudo_iolog.h" #include "sudo_queue.h" @@ -101,16 +102,14 @@ outgoing_queue_cb(int unused, int what, void *v) continue; } if (!sudo_lock_file(fd, SUDO_TLOCK)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to lock fd %d (%s)", fd, oj->journal_path); + sudo_warn(U_("unable to lock %s"), oj->journal_path); close(fd); continue; } fp = fdopen(fd, "r"); if (fp == NULL) { + sudo_warn(U_("unable to open %s"), oj->journal_path); close(fd); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to fdopen %s", oj->journal_path); break; } @@ -129,8 +128,7 @@ outgoing_queue_cb(int unused, int what, void *v) success = connect_relay(closure); if (!success) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to connect to relay"); + sudo_warnx(U_("unable to connect to relay")); connection_close(closure); } break; @@ -153,14 +151,13 @@ logsrvd_queue_enable(time_t timeout, struct sudo_event_base *evbase) outgoing_queue_event = sudo_ev_alloc(-1, SUDO_EV_TIMEOUT, outgoing_queue_cb, evbase); if (outgoing_queue_event == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to allocate memory"); + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); debug_return_bool(false); } } if (sudo_ev_add(evbase, outgoing_queue_event, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); debug_return_bool(false); } } @@ -185,8 +182,7 @@ logsrvd_queue_insert(struct connection_closure *closure) } if ((oj = malloc(sizeof(*oj))) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to allocate memory"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_bool(false); } oj->journal_path = closure->journal_path; @@ -222,8 +218,7 @@ logsrvd_queue_scan(struct sudo_event_base *evbase) logsrvd_conf_relay_dir(), RELAY_TEMPLATE); if (dirlen >= ssizeof(path)) { errno = ENAMETOOLONG; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "%s/outgoing/%s", logsrvd_conf_relay_dir(), RELAY_TEMPLATE); + sudo_warn("%s/outgoing/%s", logsrvd_conf_relay_dir(), RELAY_TEMPLATE); debug_return_bool(false); } dirlen -= sizeof(RELAY_TEMPLATE) - 1; @@ -231,8 +226,7 @@ logsrvd_queue_scan(struct sudo_event_base *evbase) dirp = opendir(path); if (dirp == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to opendir %s", path); + sudo_warn("opendir %s", path); debug_return_bool(false); } prefix_len = strcspn(RELAY_TEMPLATE, "X"); @@ -265,8 +259,7 @@ logsrvd_queue_scan(struct sudo_event_base *evbase) debug_return_bool(true); oom: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to allocate memory"); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); closedir(dirp); debug_return_bool(false); } diff --git a/logsrvd/logsrvd_relay.c b/logsrvd/logsrvd_relay.c index 5c3afa44d..a4f318d5e 100644 --- a/logsrvd/logsrvd_relay.c +++ b/logsrvd/logsrvd_relay.c @@ -57,6 +57,7 @@ #include "sudo_eventlog.h" #include "sudo_gettext.h" #include "sudo_iolog.h" +#include "sudo_fatal.h" #include "sudo_queue.h" #include "sudo_util.h" @@ -82,7 +83,8 @@ relay_closure_free(struct relay_closure *relay_closure) sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "closing down TLS connection to %s", relay_closure->relay_name.name); - SSL_shutdown(relay_closure->tls_client.ssl); + if (SSL_shutdown(relay_closure->tls_client.ssl) == 0) + SSL_shutdown(relay_closure->tls_client.ssl); SSL_free(relay_closure->tls_client.ssl); } #endif @@ -98,8 +100,10 @@ relay_closure_free(struct relay_closure *relay_closure) free(buf->data); free(buf); } - if (relay_closure->sock != -1) + if (relay_closure->sock != -1) { + shutdown(relay_closure->sock, SHUT_RDWR); close(relay_closure->sock); + } free(relay_closure); debug_return; @@ -166,8 +170,7 @@ relay_enqueue_write(uint8_t *msgbuf, size_t len, buf->len = sizeof(msg_len) + len; if (sudo_ev_add(closure->evbase, relay_closure->write_ev, NULL, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); goto done; } @@ -200,8 +203,7 @@ fmt_client_message(struct connection_closure *closure, ClientMessage *msg) len = client_message__get_packed_size(msg); if (len > MESSAGE_SIZE_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "client message too large: %zu", len); + sudo_warnx(U_("client message too large: %zu"), len); goto done; } @@ -245,13 +247,11 @@ fmt_client_hello(struct connection_closure *closure) ret = fmt_client_message(closure, &client_msg); if (ret) { if (sudo_ev_add(closure->evbase, relay_closure->read_ev, NULL, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server read event"); + sudo_warnx("%s", U_("unable to add event to queue")); ret = false; } if (sudo_ev_add(closure->evbase, relay_closure->write_ev, NULL, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); ret = false; } } @@ -324,22 +324,19 @@ connect_relay_next(struct connection_closure *closure) sock = socket(relay->sa_un.sa.sa_family, SOCK_STREAM, 0); if (sock == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to allocate relay socket"); + sudo_warn("socket"); goto bad; } if (logsrvd_conf_relay_tcp_keepalive()) { int keepalive = 1; if (setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &keepalive, sizeof(keepalive)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to set SO_KEEPALIVE option"); + sudo_warn("SO_KEEPALIVE"); } } ret = fcntl(sock, F_GETFL, 0); if (ret == -1 || fcntl(sock, F_SETFL, ret | O_NONBLOCK) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "fcntl(O_NONBLOCK) failed"); + sudo_warn("fcntl(O_NONBLOCK)"); goto bad; } @@ -355,9 +352,8 @@ connect_relay_next(struct connection_closure *closure) addr = (char *)&relay->sa_un.sin6.sin6_addr; break; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unsupported address family from connect(): %d", - relay->sa_un.sa.sa_family); + errno = EAFNOSUPPORT; + sudo_warn("connect"); goto bad; } inet_ntop(relay->sa_un.sa.sa_family, addr, @@ -366,8 +362,10 @@ connect_relay_next(struct connection_closure *closure) relay_closure->relay_name.name = sudo_rcstr_addref(relay->sa_host); if (ret == 0) { - if (relay_closure->sock != -1) + if (relay_closure->sock != -1) { + shutdown(relay_closure->sock, SHUT_RDWR); close(relay_closure->sock); + } relay_closure->sock = sock; #if defined(HAVE_OPENSSL) /* Relay connection succeeded, start TLS handshake. */ @@ -389,12 +387,13 @@ connect_relay_next(struct connection_closure *closure) goto bad; if (sudo_ev_add(closure->evbase, relay_closure->connect_ev, logsrvd_conf_relay_connect_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server connect event"); + sudo_warnx("%s", U_("unable to add event to queue")); goto bad; } - if (relay_closure->sock != -1) + if (relay_closure->sock != -1) { + shutdown(relay_closure->sock, SHUT_RDWR); close(relay_closure->sock); + } relay_closure->sock = sock; closure->state = CONNECTING; } @@ -402,8 +401,10 @@ connect_relay_next(struct connection_closure *closure) bad: /* Connection or system error. */ - if (sock != -1) + if (sock != -1) { + shutdown(sock, SHUT_RDWR); close(sock); + } sudo_rcstr_delref(relay_closure->relay_name.name); relay_closure->relay_name.name = NULL; sudo_ev_free(relay_closure->connect_ev); @@ -507,16 +508,16 @@ handle_server_hello(ServerHello *msg, struct connection_closure *closure) debug_decl(handle_server_hello, SUDO_DEBUG_UTIL); if (closure->state != INITIAL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d", closure->state); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, + relay_closure->relay_name.ipaddr); closure->errstr = _("state machine error"); debug_return_bool(false); } /* Check that ServerHello is valid. */ if (msg->server_id == NULL || msg->server_id[0] == '\0') { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "invalid ServerHello, missing server_id"); + sudo_warnx(U_("%s: invalid ServerHello, missing server_id"), + relay_closure->relay_name.ipaddr); closure->errstr = _("invalid ServerHello"); debug_return_bool(false); } @@ -540,8 +541,8 @@ handle_commit_point(TimeSpec *commit_point, struct connection_closure *closure) debug_decl(handle_commit_point, SUDO_DEBUG_UTIL); if (closure->state < RUNNING) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected state %d", closure->state); + sudo_warnx(U_("unexpected state %d for %s"), closure->state, + closure->relay_closure->relay_name.ipaddr); closure->errstr = _("state machine error"); debug_return_bool(false); } @@ -578,8 +579,7 @@ handle_log_id(char *id, struct connection_closure *closure) if (fmt_log_id_message(id, closure)) { if (sudo_ev_add(closure->evbase, closure->write_ev, logsrvd_conf_relay_timeout(), false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); } else { ret = true; } @@ -650,8 +650,7 @@ handle_server_message(uint8_t *buf, size_t len, struct connection_closure *closu sudo_debug_printf(SUDO_DEBUG_INFO, "%s: unpacking ServerMessage", __func__); msg = server_message__unpack(NULL, len, buf); if (msg == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to unpack ServerMessage size %zu", len); + sudo_warnx("unable to unpack %s size %zu", "ServerMessage", len); debug_return_bool(false); } @@ -675,9 +674,10 @@ handle_server_message(uint8_t *buf, size_t len, struct connection_closure *closu ret = handle_server_abort(msg->u.abort, closure); break; default: - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unexpected type_case value %d", msg->type_case); - closure->errstr = _("unrecognized ServerMessage type"); + sudo_warnx(U_("unexpected type_case value %d in %s from %s"), + msg->type_case, "ServerMessage", + closure->relay_closure->relay_name.ipaddr); + closure->errstr = _("unrecognized ServerMessage type"); break; } @@ -706,8 +706,7 @@ relay_server_msg_cb(int fd, int what, void *v) } if (what == SUDO_EV_TIMEOUT) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "timed out reading from relay %s (%s)", + sudo_warnx(U_("timed out reading from relay %s (%s)"), relay_closure->relay_name.name, relay_closure->relay_name.ipaddr); closure->errstr = _("timeout reading from relay"); goto send_error; @@ -741,8 +740,7 @@ relay_server_msg_cb(int fd, int what, void *v) if (!sudo_ev_pending(relay_closure->write_ev, SUDO_EV_WRITE, NULL)) { /* Enable a temporary write event. */ if (sudo_ev_add(closure->evbase, relay_closure->write_ev, NULL, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); closure->errstr = _("unable to allocate memory"); goto send_error; } @@ -767,32 +765,22 @@ relay_server_msg_cb(int fd, int what, void *v) errstr = ERR_reason_error_string(err); closure->errstr = _("error reading from relay"); } - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_read from %s (%s): %s", - relay_closure->relay_name.name, + sudo_warnx("%s: SSL_read: %s", relay_closure->relay_name.ipaddr, errstr); goto send_error; case SSL_ERROR_SYSCALL: if (nread == 0) { /* EOF, handled below */ - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "EOF from %s (%s) without proper TLS shutdown", - relay_closure->relay_name.name, + sudo_warnx(U_("EOF from %s without proper TLS shutdown"), relay_closure->relay_name.ipaddr); break; } - errstr = strerror(errno); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_read from %s (%s): %s", - relay_closure->relay_name.name, - relay_closure->relay_name.ipaddr, errstr); + sudo_warn("%s: SSL_read", relay_closure->relay_name.ipaddr); closure->errstr = _("error reading from relay"); goto send_error; default: errstr = ERR_reason_error_string(ERR_get_error()); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_read from %s (%s): %s", - relay_closure->relay_name.name, + sudo_warnx("%s: SSL_read: %s", relay_closure->relay_name.ipaddr, errstr); closure->errstr = _("error reading from relay"); goto send_error; @@ -814,13 +802,12 @@ relay_server_msg_cb(int fd, int what, void *v) case -1: if (errno == EAGAIN) debug_return; - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "read from %s (%s)", relay_closure->relay_name.name, - relay_closure->relay_name.ipaddr); + sudo_warn("%s: read", relay_closure->relay_name.ipaddr); closure->errstr = _("unable to read from relay"); goto send_error; case 0: /* EOF from relay server, close the socket. */ + shutdown(relay_closure->sock, SHUT_RDWR); close(relay_closure->sock); relay_closure->sock = -1; sudo_ev_del(closure->evbase, relay_closure->read_ev); @@ -848,8 +835,7 @@ relay_server_msg_cb(int fd, int what, void *v) msg_len = ntohl(msg_len); if (msg_len > MESSAGE_SIZE_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "server message too large: %u", msg_len); + sudo_warnx(U_("server message too large: %zu"), (size_t)msg_len); closure->errstr = _("server message too large"); goto send_error; } @@ -914,16 +900,15 @@ relay_client_msg_cb(int fd, int what, void *v) } if (what == SUDO_EV_TIMEOUT) { - closure->errstr = _("timeout writing to relay"); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "timed out writing to relay %s (%s)", + sudo_warnx(U_("timed out writing to relay %s (%s)"), relay_closure->relay_name.name, relay_closure->relay_name.ipaddr); + closure->errstr = _("timeout writing to relay"); goto send_error; } if ((buf = TAILQ_FIRST(&relay_closure->write_bufs)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "missing write buffer"); + sudo_warnx(U_("missing write buffer for client %s"), + relay_closure->relay_name.ipaddr); goto close_connection; } @@ -941,6 +926,7 @@ relay_client_msg_cb(int fd, int what, void *v) switch (SSL_get_error(ssl, nwritten)) { case SSL_ERROR_ZERO_RETURN: /* ssl connection shutdown cleanly */ + shutdown(relay_closure->sock, SHUT_RDWR); close(relay_closure->sock); relay_closure->sock = -1; sudo_ev_del(closure->evbase, relay_closure->read_ev); @@ -967,18 +953,13 @@ relay_client_msg_cb(int fd, int what, void *v) "SSL_write returns SSL_ERROR_WANT_WRITE"); debug_return; case SSL_ERROR_SYSCALL: - errstr = strerror(errno); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_write to %s (%s): %s", - relay_closure->relay_name.name, - relay_closure->relay_name.ipaddr, errstr); + sudo_warn("%s: SSL_write", + relay_closure->relay_name.ipaddr); closure->errstr = _("error writing to relay"); goto send_error; default: errstr = ERR_reason_error_string(ERR_get_error()); - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "SSL_write to %s (%s): %s", - relay_closure->relay_name.name, + sudo_warnx("%s: SSL_write: %s", relay_closure->relay_name.ipaddr, errstr); closure->errstr = _("error writing to relay"); goto send_error; @@ -989,9 +970,7 @@ relay_client_msg_cb(int fd, int what, void *v) { nwritten = write(fd, buf->data + buf->off, buf->len - buf->off); if (nwritten == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "write to %s (%s)", relay_closure->relay_name.name, - relay_closure->relay_name.ipaddr); + sudo_warn("%s: write", relay_closure->relay_name.ipaddr); closure->errstr = _("error writing to relay"); goto send_error; } @@ -1142,8 +1121,7 @@ relay_restart(RestartMessage *msg, uint8_t *buf, size_t len, ret = fmt_client_message(closure, &client_msg); if (ret) { if (sudo_ev_add(evbase, relay_closure->write_ev, NULL, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add server write event"); + sudo_warnx("%s", U_("unable to add event to queue")); ret = false; } } diff --git a/logsrvd/sendlog.c b/logsrvd/sendlog.c index be41001ef..37bbcb354 100644 --- a/logsrvd/sendlog.c +++ b/logsrvd/sendlog.c @@ -299,8 +299,7 @@ fmt_client_message(struct connection_buffer *buf, ClientMessage *msg) free(buf->data); buf->size = sudo_pow2_roundup(len); if ((buf->data = malloc(buf->size)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to malloc %u", buf->size); + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); buf->size = 0; goto done; } @@ -1055,7 +1054,7 @@ handle_server_message(uint8_t *buf, size_t len, sudo_debug_printf(SUDO_DEBUG_INFO, "%s: unpacking ServerMessage", __func__); msg = server_message__unpack(NULL, len, buf); if (msg == NULL) { - sudo_warnx("%s", U_("unable to unpack ServerMessage")); + sudo_warnx("unable to unpack %s size %zu", "ServerMessage", len); debug_return_bool(false); } @@ -1380,7 +1379,8 @@ client_closure_free(struct client_closure *closure) TAILQ_REMOVE(&connections, closure, entries); #if defined(HAVE_OPENSSL) if (closure->tls_client.ssl != NULL) { - SSL_shutdown(closure->tls_client.ssl); + if (SSL_shutdown(closure->tls_client.ssl) == 0) + SSL_shutdown(closure->tls_client.ssl); SSL_free(closure->tls_client.ssl); } sudo_ev_free(closure->tls_client.tls_connect_ev); @@ -1390,6 +1390,7 @@ client_closure_free(struct client_closure *closure) free(closure->read_buf.data); free(closure->write_buf.data); free(closure->buf); + shutdown(closure->sock, SHUT_RDWR); close(closure->sock); free(closure); } @@ -1525,7 +1526,7 @@ main(int argc, char *argv[]) if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) exit(EXIT_FAILURE); sudo_debug_register(getprogname(), NULL, NULL, - sudo_conf_debug_files(getprogname())); + sudo_conf_debug_files(getprogname()), -1); if (protobuf_c_version_number() < 1003000) sudo_fatalx("%s", U_("Protobuf-C version 1.3 or higher required")); diff --git a/logsrvd/tls_init.c b/logsrvd/tls_init.c index 9f9306a23..5b9e47702 100644 --- a/logsrvd/tls_init.c +++ b/logsrvd/tls_init.c @@ -54,6 +54,7 @@ static bool verify_cert_chain(SSL_CTX *ctx, const char *cert_file) { #ifdef HAVE_SSL_CTX_GET0_CERTIFICATE + const char *errstr; bool ret = false; X509_STORE_CTX *store_ctx = NULL; X509_STORE *ca_store; @@ -62,23 +63,20 @@ verify_cert_chain(SSL_CTX *ctx, const char *cert_file) debug_decl(verify_cert_chain, SUDO_DEBUG_UTIL); if ((x509 = SSL_CTX_get0_certificate(ctx)) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to get X509 object from SSL_CTX: %s", - ERR_error_string(ERR_peek_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("SSL_CTX_get0_certificate: %s", errstr); goto done; } if ((store_ctx = X509_STORE_CTX_new()) == NULL) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to allocate X509_STORE_CTX object: %s", - ERR_error_string(ERR_peek_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("X509_STORE_CTX_new: %s", errstr); goto done; } if (!SSL_CTX_get0_chain_certs(ctx, &chain_certs)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to get chain certs: %s", - ERR_error_string(ERR_peek_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("SSL_CTX_get0_chain_certs: %s", errstr); goto done; } @@ -86,16 +84,15 @@ verify_cert_chain(SSL_CTX *ctx, const char *cert_file) X509_STORE_set_flags(ca_store, X509_V_FLAG_X509_STRICT); if (!X509_STORE_CTX_init(store_ctx, ca_store, x509, chain_certs)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to initialize X509_STORE_CTX object: %s", - ERR_error_string(ERR_peek_error(), NULL)); + errstr = ERR_reason_error_string(ERR_get_error()); + sudo_warnx("X509_STORE_CTX_init: %s", errstr); goto done; } if (X509_verify_cert(store_ctx) <= 0) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to verify cert %s: %s", cert_file, - ERR_error_string(ERR_peek_error(), NULL)); + errstr = + X509_verify_cert_error_string(X509_STORE_CTX_get_error(store_ctx)); + sudo_warnx("X509_verify_cert: %s", errstr); goto done; } diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4 new file mode 100644 index 000000000..28fb18b90 --- /dev/null +++ b/m4/ax_prog_cc_for_build.m4 @@ -0,0 +1,155 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_PROG_CC_FOR_BUILD +# +# DESCRIPTION +# +# This macro searches for a C compiler that generates native executables, +# that is a C compiler that surely is not a cross-compiler. This can be +# useful if you have to generate source code at compile-time like for +# example GCC does. +# +# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything +# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). +# The value of these variables can be overridden by the user by specifying +# a compiler with an environment variable (like you do for standard CC). +# +# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object +# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if +# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are +# substituted in the Makefile. +# +# LICENSE +# +# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 20 + +AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) +AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_CPP])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl + +dnl Use the standard macros, but make them use other variable names +dnl +pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl +pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl +pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl +pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl +pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl +pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl +pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl +pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl +pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl +pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl +pushdef([ac_cv_objext], ac_cv_build_objext)dnl +pushdef([ac_exeext], ac_build_exeext)dnl +pushdef([ac_objext], ac_build_objext)dnl +pushdef([CC], CC_FOR_BUILD)dnl +pushdef([CPP], CPP_FOR_BUILD)dnl +pushdef([GCC], GCC_FOR_BUILD)dnl +pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl +pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl +pushdef([EXEEXT], BUILD_EXEEXT)dnl +pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl +pushdef([OBJEXT], BUILD_OBJEXT)dnl +pushdef([host], build)dnl +pushdef([host_alias], build_alias)dnl +pushdef([host_cpu], build_cpu)dnl +pushdef([host_vendor], build_vendor)dnl +pushdef([host_os], build_os)dnl +pushdef([ac_cv_host], ac_cv_build)dnl +pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl +pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl +pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl +pushdef([ac_cv_host_os], ac_cv_build_os)dnl +pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl +pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl +pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl +pushdef([cross_compiling], cross_compiling_build)dnl + +cross_compiling_build=no + +ac_build_tool_prefix= +AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"], + [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"]) + +AC_LANG_PUSH([C]) + +dnl The pushdef([ac_cv_c_compiler_gnu], ...) currently does not cover +dnl the use of this variable in _AC_LANG_COMPILER_GNU called by +dnl AC_PROG_CC. Unset this cache variable temporarily as a workaround. +was_set_ac_cv_c_compiler_gnu=${[ac_cv_c_compiler_gnu]+y} +AS_IF([test ${was_set_ac_cv_c_compiler_gnu}], + [saved_ac_cv_c_compiler_gnu=$[ac_cv_c_compiler_gnu] + AS_UNSET([[ac_cv_c_compiler_gnu]])]) + +AC_PROG_CC + +dnl Restore ac_cv_c_compiler_gnu +AS_IF([test ${was_set_ac_cv_c_compiler_gnu}], + [[ac_cv_c_compiler_gnu]=saved_ac_cv_c_compiler_gnu]) + +_AC_COMPILER_EXEEXT +_AC_COMPILER_OBJEXT +AC_PROG_CPP + +dnl Restore the old definitions +dnl +popdef([cross_compiling])dnl +popdef([am_cv_prog_cc_c_o])dnl +popdef([am_cv_CC_dependencies_compiler_type])dnl +popdef([ac_tool_prefix])dnl +popdef([ac_cv_host_os])dnl +popdef([ac_cv_host_vendor])dnl +popdef([ac_cv_host_cpu])dnl +popdef([ac_cv_host_alias])dnl +popdef([ac_cv_host])dnl +popdef([host_os])dnl +popdef([host_vendor])dnl +popdef([host_cpu])dnl +popdef([host_alias])dnl +popdef([host])dnl +popdef([OBJEXT])dnl +popdef([LDFLAGS])dnl +popdef([EXEEXT])dnl +popdef([CPPFLAGS])dnl +popdef([CFLAGS])dnl +popdef([GCC])dnl +popdef([CPP])dnl +popdef([CC])dnl +popdef([ac_objext])dnl +popdef([ac_exeext])dnl +popdef([ac_cv_objext])dnl +popdef([ac_cv_exeext])dnl +popdef([ac_cv_c_compiler_gnu])dnl +popdef([ac_cv_prog_cc_g])dnl +popdef([ac_cv_prog_cc_cross])dnl +popdef([ac_cv_prog_cc_works])dnl +popdef([ac_cv_prog_cc_c89])dnl +popdef([ac_cv_prog_gcc])dnl +popdef([ac_cv_prog_CPP])dnl + +dnl restore global variables ac_ext, ac_cpp, ac_compile, +dnl ac_link, ac_compiler_gnu (dependent on the current +dnl language after popping): +AC_LANG_POP([C]) + +dnl Finally, set Makefile variables +dnl +AC_SUBST(BUILD_EXEEXT)dnl +AC_SUBST(BUILD_OBJEXT)dnl +AC_SUBST([CFLAGS_FOR_BUILD])dnl +AC_SUBST([CPPFLAGS_FOR_BUILD])dnl +AC_SUBST([LDFLAGS_FOR_BUILD])dnl +]) diff --git a/m4/sudo.m4 b/m4/sudo.m4 index 45c0d3618..7023ac493 100644 --- a/m4/sudo.m4 +++ b/m4/sudo.m4 @@ -225,16 +225,14 @@ AC_DEFUN([SUDO_LOGDIR], [ dnl dnl check for working fnmatch(3) dnl -AC_DEFUN([SUDO_FUNC_FNMATCH], -[AC_MSG_CHECKING([for working fnmatch with FNM_CASEFOLD]) -AC_CACHE_VAL(sudo_cv_func_fnmatch, -[rm -f conftestdata; > conftestdata -AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <fnmatch.h> -int main() { return(fnmatch("/*/bin/echo *", "/usr/bin/echo just a test", FNM_CASEFOLD)); }]])], [sudo_cv_func_fnmatch=yes], [sudo_cv_func_fnmatch=no], - [sudo_cv_func_fnmatch=no]) -rm -f core core.* *.core]) -AC_MSG_RESULT($sudo_cv_func_fnmatch) -AS_IF([test $sudo_cv_func_fnmatch = yes], [$1], [$2])]) +AC_DEFUN([SUDO_FUNC_FNMATCH], [ + AC_CACHE_CHECK([for working fnmatch with FNM_CASEFOLD], + sudo_cv_func_fnmatch, [ + AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <fnmatch.h> +int main() { return(fnmatch("/*/bin/echo *", "/usr/bin/echo just a test", FNM_CASEFOLD)); }]])], [sudo_cv_func_fnmatch=yes], [sudo_cv_func_fnmatch=no], [sudo_cv_func_fnmatch=no]) + ]) + AS_IF([test $sudo_cv_func_fnmatch = yes], [$1], [$2]) +]) dnl dnl Attempt to check for working PIE support. @@ -242,16 +240,13 @@ dnl This is a bit of a hack but on Solaris 10 with GNU ld and GNU as dnl we can end up with strange values from malloc(). dnl A better check would be to verify that ASLR works with PIE. dnl -AC_DEFUN([SUDO_WORKING_PIE], -[AC_MSG_CHECKING([for working PIE support]) -AC_CACHE_VAL(sudo_cv_working_pie, -[rm -f conftestdata; > conftestdata -AC_RUN_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT -int main() { char *p = malloc(1024); if (p == NULL) return 1; memset(p, 0, 1024); return 0; }])], [sudo_cv_working_pie=yes], [sudo_cv_working_pie=no], - [sudo_cv_working_pie=no]) -rm -f core core.* *.core]) -AC_MSG_RESULT($sudo_cv_working_pie) -AS_IF([test $sudo_cv_working_pie = yes], [$1], [$2])]) +AC_DEFUN([SUDO_WORKING_PIE], [ + AC_CACHE_CHECK([for working PIE support], sudo_cv_working_pie, [ + AC_RUN_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT +int main() { char *p = malloc(1024); if (p == NULL) return 1; memset(p, 0, 1024); return 0; }])], [sudo_cv_working_pie=yes], [sudo_cv_working_pie=no], [sudo_cv_working_pie=no]) + ]) + AS_IF([test $sudo_cv_working_pie = yes], [$1], [$2]) +]) dnl dnl check for isblank(3) @@ -399,9 +394,8 @@ dnl only for backward compatibility. dnl AC_DEFUN([SUDO_UID_T_LEN], [AC_REQUIRE([AC_TYPE_UID_T]) -AC_MSG_CHECKING(max length of uid_t) -AC_CACHE_VAL(sudo_cv_uid_t_len, -[rm -f conftestdata +AC_CACHE_CHECK([max length of uid_t], sudo_cv_uid_t_len, [ +rm -f conftestdata AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include <stdio.h> #include <string.h> @@ -423,7 +417,6 @@ int main() { }]])], [sudo_cv_uid_t_len=`cat conftestdata`], [sudo_cv_uid_t_len=10], [sudo_cv_uid_t_len=10]) ]) rm -f conftestdata -AC_MSG_RESULT($sudo_cv_uid_t_len) AC_DEFINE_UNQUOTED(MAX_UID_T_LEN, $sudo_cv_uid_t_len, [Define to the max length of a uid_t in string context (excluding the NUL).]) ]) @@ -512,6 +505,17 @@ AC_DEFUN([SUDO_APPEND_COMPAT_EXP], [ ]) dnl +dnl +dnl Append one or more symbols to INTERCEPT_EXP +dnl +AC_DEFUN([SUDO_APPEND_INTERCEPT_EXP], [ + for _sym in $1; do + INTERCEPT_EXP="${INTERCEPT_EXP}${_sym} +" + done +]) + +dnl dnl Determine the mail spool location dnl NOTE: must be run *after* check for paths.h dnl diff --git a/pathnames.h.in b/pathnames.h.in index 0115961a5..76d7bb231 100644 --- a/pathnames.h.in +++ b/pathnames.h.in @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998, 1999, 2001, 2004, 2005, 2007-2014 + * Copyright (c) 1996, 1998, 1999, 2001, 2004, 2005, 2007-2021 * Todd C. Miller <Todd.Miller@sudo.ws>. * * Permission to use, copy, modify, and distribute this software for any @@ -162,6 +162,10 @@ # undef _PATH_SUDO_SENDMAIL #endif /* _PATH_SUDO_SENDMAIL */ +#ifndef _PATH_SUDO_INTERCEPT +# undef _PATH_SUDO_INTERCEPT +#endif /* _PATH_SUDO_INTERCEPT */ + #ifndef _PATH_SUDO_NOEXEC # undef _PATH_SUDO_NOEXEC #endif /* _PATH_SUDO_NOEXEC */ @@ -178,6 +182,10 @@ # undef _PATH_SUDO_DEVSEARCH #endif /* _PATH_SUDO_DEVSEARCH */ +#ifndef _PATH_ASAN_LIB +# undef _PATH_ASAN_LIB +#endif /* _PATH_ASAN_LIB */ + #ifndef _PATH_VI # undef _PATH_VI #endif /* _PATH_VI */ diff --git a/plugins/audit_json/audit_json.c b/plugins/audit_json/audit_json.c index a3cbdc4b6..74a2eb926 100644 --- a/plugins/audit_json/audit_json.c +++ b/plugins/audit_json/audit_json.c @@ -122,7 +122,7 @@ audit_json_open(unsigned int version, sudo_conv_t conversation, } if (plugin_path != NULL && !TAILQ_EMPTY(&debug_files)) { audit_debug_instance = - sudo_debug_register(plugin_path, NULL, NULL, &debug_files); + sudo_debug_register(plugin_path, NULL, NULL, &debug_files, -1); if (audit_debug_instance == SUDO_DEBUG_INSTANCE_ERROR) { *errstr = U_("unable to initialize debugging"); goto bad; diff --git a/plugins/python/sudo_python_debug.c b/plugins/python/sudo_python_debug.c index 18cb756e6..83e68456c 100644 --- a/plugins/python/sudo_python_debug.c +++ b/plugins/python/sudo_python_debug.c @@ -84,7 +84,7 @@ python_debug_register(const char *program, if (debug_files != NULL && !TAILQ_EMPTY(debug_files)) { if (program != NULL) { instance = sudo_debug_register(program, python_subsystem_names, - (unsigned int *)python_subsystem_ids, debug_files); + (unsigned int *)python_subsystem_ids, debug_files, -1); } TAILQ_FOREACH_SAFE(debug_file, debug_files, entries, debug_next) { TAILQ_REMOVE(debug_files, debug_file, entries); diff --git a/plugins/sample_approval/sample_approval.c b/plugins/sample_approval/sample_approval.c index c4634c101..cd1a8b268 100644 --- a/plugins/sample_approval/sample_approval.c +++ b/plugins/sample_approval/sample_approval.c @@ -77,7 +77,7 @@ sample_approval_open(unsigned int version, sudo_conv_t conversation, } if (plugin_path != NULL && !TAILQ_EMPTY(&debug_files)) { approval_debug_instance = - sudo_debug_register(plugin_path, NULL, NULL, &debug_files); + sudo_debug_register(plugin_path, NULL, NULL, &debug_files, -1); if (approval_debug_instance == SUDO_DEBUG_INSTANCE_ERROR) { *errstr = U_("unable to initialize debugging"); goto done; diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in index e96c78db2..4aa405f3c 100644 --- a/plugins/sudoers/Makefile.in +++ b/plugins/sudoers/Makefile.in @@ -190,8 +190,8 @@ SUDOERS_OBJS = $(AUTH_OBJS) audit.lo boottime.lo check.lo editor.lo env.lo \ SUDOERS_IOBJS = $(SUDOERS_OBJS:.lo=.i) -VISUDO_OBJS = check_aliases.o editor.lo find_path.lo goodpath.lo locale.lo \ - stubs.o sudo_printf.o visudo.o +VISUDO_OBJS = check_aliases.o editor.lo find_path.lo gc.lo goodpath.lo \ + locale.lo stubs.o sudo_printf.o visudo.o VISUDO_IOBJS = sudo_printf.i visudo.i @@ -225,7 +225,7 @@ CHECK_BASE64_OBJS = check_base64.o b64_decode.lo b64_encode.o sudoers_debug.lo CHECK_DIGEST_OBJS = check_digest.o filedigest.lo digestname.lo sudoers_debug.lo -CHECK_EDITOR_OBJS = check_editor.o editor.lo sudoers_debug.lo +CHECK_EDITOR_OBJS = check_editor.o gc.lo editor.lo sudoers_debug.lo CHECK_ENV_MATCH_OBJS = check_env_pattern.o env_pattern.lo sudoers_debug.lo diff --git a/plugins/sudoers/audit.c b/plugins/sudoers/audit.c index 67845d6d2..5f07cd140 100644 --- a/plugins/sudoers/audit.c +++ b/plugins/sudoers/audit.c @@ -43,7 +43,6 @@ #endif #ifdef SUDOERS_LOG_CLIENT -static struct client_closure *client_closure = NULL; static struct log_details audit_details; #endif char *audit_msg = NULL; @@ -199,13 +198,13 @@ sudoers_audit_open(unsigned int version, sudo_conv_t conversation, static void audit_to_eventlog(struct eventlog *evlog, char * const command_info[], - char * const run_argv[], char * const run_envp[]) + char * const run_argv[], char * const run_envp[], const char *uuid_str) { char * const *cur; debug_decl(audit_to_eventlog, SUDOERS_DEBUG_PLUGIN); /* Fill in evlog from sudoers Defaults, run_argv and run_envp. */ - sudoers_to_eventlog(evlog, run_argv, run_envp); + sudoers_to_eventlog(evlog, run_argv, run_envp, uuid_str); /* Update iolog and execution environment from command_info[]. */ if (command_info != NULL) { @@ -243,36 +242,51 @@ audit_to_eventlog(struct eventlog *evlog, char * const command_info[], #ifdef SUDOERS_LOG_CLIENT static bool -log_server_accept(char * const command_info[], char * const run_argv[], - char * const run_envp[]) +log_server_accept(struct eventlog *evlog) { - struct eventlog *evlog; struct timespec now; bool ret = false; debug_decl(log_server_accept, SUDOERS_DEBUG_PLUGIN); - /* Only send accept event to log server if I/O log plugin did not. */ - if (SLIST_EMPTY(&def_log_servers) || def_log_input || def_log_output) + if (SLIST_EMPTY(&def_log_servers)) debug_return_bool(true); + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + /* Older servers don't support multiple commands per session. */ + if (!client_closure->subcommands) + debug_return_bool(true); + } else { + /* Only send accept event to log server if I/O log plugin did not. */ + if (def_log_input || def_log_output) + debug_return_bool(true); + } + if (sudo_gettime_real(&now) == -1) { sudo_warn("%s", U_("unable to get time of day")); goto done; } - if ((evlog = malloc(sizeof(*evlog))) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - goto done; - } - audit_to_eventlog(evlog, command_info, run_argv, run_envp); - if (!init_log_details(&audit_details, evlog)) - goto done; + if (client_closure != NULL) { + /* Use existing client closure. */ + if (fmt_accept_message(client_closure, evlog)) { + if (client_closure->write_ev->add(client_closure->write_ev, + &client_closure->log_details->server_timeout) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + ret = true; + } + } else { + if (!init_log_details(&audit_details, evlog)) + goto done; + + /* Open connection to log server, send hello and accept messages. */ + client_closure = log_server_open(&audit_details, &now, false, + SEND_ACCEPT, NULL, sudoers_audit.event_alloc); + if (client_closure != NULL) + ret = true; + } - /* Open connection to log server, send hello and accept messages. */ - client_closure = log_server_open(&audit_details, &now, false, - SEND_ACCEPT, NULL, sudoers_audit.event_alloc); - if (client_closure != NULL) - ret = true; done: debug_return_bool(ret); } @@ -304,8 +318,7 @@ log_server_exit(int status_type, int status) } #else static bool -log_server_accept(char * const command_info[], char * const run_argv[], - char * const run_envp[]) +log_server_accept(struct eventlog *evlog) { return true; } @@ -322,6 +335,8 @@ sudoers_audit_accept(const char *plugin_name, unsigned int plugin_type, char * const command_info[], char * const run_argv[], char * const run_envp[], const char **errstr) { + const char *uuid_str = NULL; + struct eventlog evlog; int ret = true; debug_decl(sudoers_audit_accept, SUDOERS_DEBUG_PLUGIN); @@ -335,10 +350,14 @@ sudoers_audit_accept(const char *plugin_name, unsigned int plugin_type, if (audit_success(run_argv) != 0 && !def_ignore_audit_errors) ret = false; - if (!log_allowed() && !def_ignore_logfile_errors) + if (!ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) + uuid_str = sudo_user.uuid_str; + + audit_to_eventlog(&evlog, command_info, run_argv, run_envp, uuid_str); + if (!log_allowed(&evlog) && !def_ignore_logfile_errors) ret = false; - if (!log_server_accept(command_info, run_argv, run_envp)) { + if (!log_server_accept(&evlog)) { if (!def_ignore_logfile_errors) ret = false; } @@ -366,7 +385,7 @@ sudoers_audit_reject(const char *plugin_name, unsigned int plugin_type, ret = false; } - audit_to_eventlog(&evlog, command_info, NewArgv, env_get()); + audit_to_eventlog(&evlog, command_info, NewArgv, env_get(), NULL); if (!eventlog_reject(&evlog, 0, message, NULL, NULL)) ret = false; @@ -399,7 +418,7 @@ sudoers_audit_error(const char *plugin_name, unsigned int plugin_type, debug_return_bool(false); } - audit_to_eventlog(&evlog, command_info, NewArgv, env_get()); + audit_to_eventlog(&evlog, command_info, NewArgv, env_get(), NULL); if (!eventlog_alert(&evlog, 0, &now, message, NULL)) ret = false; diff --git a/plugins/sudoers/auth/bsdauth.c b/plugins/sudoers/auth/bsdauth.c index fec7402f2..e0292d634 100644 --- a/plugins/sudoers/auth/bsdauth.c +++ b/plugins/sudoers/auth/bsdauth.c @@ -192,8 +192,12 @@ bsdauth_cleanup(struct passwd *pw, sudo_auth *auth, bool force) if (state != NULL) { auth_close(state->as); + state->as = NULL; login_close(state->lc); + state->lc = NULL; + auth->data = NULL; } + login_style = NULL; debug_return_int(AUTH_SUCCESS); } diff --git a/plugins/sudoers/auth/pam.c b/plugins/sudoers/auth/pam.c index e917a3cc1..50015b7f5 100644 --- a/plugins/sudoers/auth/pam.c +++ b/plugins/sudoers/auth/pam.c @@ -528,7 +528,6 @@ sudo_pam_begin_session(struct passwd *pw, char **user_envp[], sudo_auth *auth) if (!env_init(*user_envp) || !env_merge(pam_envp)) status = AUTH_FATAL; *user_envp = env_get(); - (void)env_init(NULL); free(pam_envp); /* XXX - we leak any duplicates that were in pam_envp */ } diff --git a/plugins/sudoers/check.c b/plugins/sudoers/check.c index 4a7bb5edd..8cb9f0796 100644 --- a/plugins/sudoers/check.c +++ b/plugins/sudoers/check.c @@ -299,8 +299,14 @@ user_is_exempt(void) bool ret = false; debug_decl(user_is_exempt, SUDOERS_DEBUG_AUTH); - if (def_exempt_group) - ret = user_in_group(sudo_user.pw, def_exempt_group); + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + if (!def_intercept_authenticate) + ret = true; + } + if (def_exempt_group) { + if (user_in_group(sudo_user.pw, def_exempt_group)) + ret = true; + } debug_return_bool(ret); } @@ -322,17 +328,17 @@ get_authpw(int mode) } else { if (def_rootpw) { if ((pw = sudo_getpwuid(ROOT_UID)) == NULL) { - log_warningx(SLOG_SEND_MAIL, N_("unknown uid: %u"), ROOT_UID); + log_warningx(SLOG_SEND_MAIL, N_("unknown uid %u"), ROOT_UID); } } else if (def_runaspw) { if ((pw = sudo_getpwnam(def_runas_default)) == NULL) { log_warningx(SLOG_SEND_MAIL, - N_("unknown user: %s"), def_runas_default); + N_("unknown user %s"), def_runas_default); } } else if (def_targetpw) { if (runas_pw->pw_name == NULL) { /* This should never be NULL as we fake up the passwd struct */ - log_warningx(SLOG_RAW_MSG, N_("unknown uid: %u"), + log_warningx(SLOG_RAW_MSG, N_("unknown uid %u"), (unsigned int) runas_pw->pw_uid); } else { sudo_pw_addref(runas_pw); diff --git a/plugins/sudoers/cvtsudoers.c b/plugins/sudoers/cvtsudoers.c index f1fc0f9a6..79558c314 100644 --- a/plugins/sudoers/cvtsudoers.c +++ b/plugins/sudoers/cvtsudoers.c @@ -472,7 +472,7 @@ cvtsudoers_conf_read(const char *conf_file) /* Look up keyword in config tables */ if (!cvtsudoers_parse_keyword(conf_file, keyword, value, cvtsudoers_conf_vars)) - sudo_warnx(U_("%s: unknown key word: %s"), conf_file, keyword); + sudo_warnx(U_("%s: unknown key word %s"), conf_file, keyword); } free(line); fclose(fp); diff --git a/plugins/sudoers/cvtsudoers_json.c b/plugins/sudoers/cvtsudoers_json.c index ec4a6f557..bb481a667 100644 --- a/plugins/sudoers/cvtsudoers_json.c +++ b/plugins/sudoers/cvtsudoers_json.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2013-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2013-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -682,6 +682,11 @@ print_cmndspec_json(struct json_container *jsonc, value.u.boolean = tag.noexec; sudo_json_add_value_as_object(jsonc, "noexec", &value); } + if (tag.intercept != UNSPEC) { + value.type = JSON_BOOL; + value.u.boolean = tag.intercept; + sudo_json_add_value_as_object(jsonc, "intercept", &value); + } if (tag.send_mail != UNSPEC) { value.type = JSON_BOOL; value.u.boolean = tag.send_mail; diff --git a/plugins/sudoers/cvtsudoers_ldif.c b/plugins/sudoers/cvtsudoers_ldif.c index 0dd840912..f13b13762 100644 --- a/plugins/sudoers/cvtsudoers_ldif.c +++ b/plugins/sudoers/cvtsudoers_ldif.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2018 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2018-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -386,6 +386,10 @@ print_cmndspec_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, print_attribute_ldif(fp, "sudoOption", tag.noexec ? "noexec" : "!noexec"); } + if (tag.intercept != UNSPEC) { + print_attribute_ldif(fp, "sudoOption", + tag.intercept ? "intercept" : "!intercept"); + } if (tag.send_mail != UNSPEC) { if (tag.send_mail) { print_attribute_ldif(fp, "sudoOption", "mail_all_cmnds"); diff --git a/plugins/sudoers/def_data.c b/plugins/sudoers/def_data.c index 5952a069e..17495aa2c 100644 --- a/plugins/sudoers/def_data.c +++ b/plugins/sudoers/def_data.c @@ -578,6 +578,26 @@ struct sudo_defs_types sudo_defs_table[] = { N_("Path to the file that is created the first time sudo is run: %s"), NULL, }, { + "intercept", T_FLAG, + N_("Intercept further commands and apply sudoers restrictions to them"), + NULL, + }, { + "log_subcmds", T_FLAG, + N_("Log sub-commands run by the original command"), + NULL, + }, { + "log_exit_status", T_FLAG, + N_("Log the exit status of commands"), + NULL, + }, { + "intercept_authenticate", T_FLAG, + N_("Subsequent commands in an intercepted session must be authenticated"), + NULL, + }, { + "intercept_allow_setid", T_FLAG, + N_("Allow an intercepted command to run set setuid or setgid programs"), + NULL, + }, { NULL, 0, NULL } }; diff --git a/plugins/sudoers/def_data.h b/plugins/sudoers/def_data.h index fb3f8aa4b..e7983ceb6 100644 --- a/plugins/sudoers/def_data.h +++ b/plugins/sudoers/def_data.h @@ -266,6 +266,16 @@ #define def_selinux (sudo_defs_table[I_SELINUX].sd_un.flag) #define I_ADMIN_FLAG 132 #define def_admin_flag (sudo_defs_table[I_ADMIN_FLAG].sd_un.str) +#define I_INTERCEPT 133 +#define def_intercept (sudo_defs_table[I_INTERCEPT].sd_un.flag) +#define I_LOG_SUBCMDS 134 +#define def_log_subcmds (sudo_defs_table[I_LOG_SUBCMDS].sd_un.flag) +#define I_LOG_EXIT_STATUS 135 +#define def_log_exit_status (sudo_defs_table[I_LOG_EXIT_STATUS].sd_un.flag) +#define I_INTERCEPT_AUTHENTICATE 136 +#define def_intercept_authenticate (sudo_defs_table[I_INTERCEPT_AUTHENTICATE].sd_un.flag) +#define I_INTERCEPT_ALLOW_SETID 137 +#define def_intercept_allow_setid (sudo_defs_table[I_INTERCEPT_ALLOW_SETID].sd_un.flag) enum def_tuple { never, diff --git a/plugins/sudoers/def_data.in b/plugins/sudoers/def_data.in index 3183fae18..18272e995 100644 --- a/plugins/sudoers/def_data.in +++ b/plugins/sudoers/def_data.in @@ -415,3 +415,18 @@ selinux admin_flag T_STR|T_BOOL|T_CHPATH "Path to the file that is created the first time sudo is run: %s" +intercept + T_FLAG + "Intercept further commands and apply sudoers restrictions to them" +log_subcmds + T_FLAG + "Log sub-commands run by the original command" +log_exit_status + T_FLAG + "Log the exit status of commands" +intercept_authenticate + T_FLAG + "Subsequent commands in an intercepted session must be authenticated" +intercept_allow_setid + T_FLAG + "Allow an intercepted command to run set setuid or setgid programs" diff --git a/plugins/sudoers/defaults.c b/plugins/sudoers/defaults.c index fd25579f0..5739b40e2 100644 --- a/plugins/sudoers/defaults.c +++ b/plugins/sudoers/defaults.c @@ -243,6 +243,20 @@ parse_default_entry(struct sudo_defs_types *def, const char *val, int op, } } + /* Only lists support append/remove. */ + if ((op == '+' || op == '-') && (def->type & T_MASK) != T_LIST) { + if (!quiet) { + if (line > 0) { + sudo_warnx(U_("%s:%d:%d: invalid operator \"%c=\" for \"%s\""), + file, line, column, op, def->name); + } else { + sudo_warnx(U_("%s: invalid operator \"%c=\" for \"%s\""), + file, op, def->name); + } + } + debug_return_bool(false); + } + switch (def->type & T_MASK) { case T_LOGFAC: rc = store_syslogfac(val, &def->sd_un); @@ -436,7 +450,7 @@ free_defs_val(int type, union sudo_defs_val *sd_un) bool init_defaults(void) { - static int firsttime = 1; + static bool firsttime = true; struct sudo_defs_types *def; debug_decl(init_defaults, SUDOERS_DEBUG_DEFAULTS); @@ -631,7 +645,7 @@ init_defaults(void) /* Init eventlog config. */ init_eventlog_config(); - firsttime = 0; + firsttime = false; debug_return_bool(true); oom: @@ -1113,3 +1127,36 @@ list_op(const char *str, size_t len, union sudo_defs_val *sd_un, } debug_return_bool(true); } + +bool +append_default(const char *var, const char *val, int op, + char *source, struct defaults_list *defs) +{ + struct defaults *def; + debug_decl(append_default, SUDOERS_DEBUG_DEFAULTS); + + if ((def = calloc(1, sizeof(*def))) == NULL) + goto oom; + + def->type = DEFAULTS; + def->op = op; + if ((def->var = strdup(var)) == NULL) { + goto oom; + } + if (val != NULL) { + if ((def->val = strdup(val)) == NULL) + goto oom; + } + def->file = source; + sudo_rcstr_addref(source); + TAILQ_INSERT_TAIL(defs, def, entries); + debug_return_bool(true); + +oom: + if (def != NULL) { + free(def->var); + free(def->val); + free(def); + } + debug_return_bool(false); +} diff --git a/plugins/sudoers/defaults.h b/plugins/sudoers/defaults.h index 53a615170..b90481bd9 100644 --- a/plugins/sudoers/defaults.h +++ b/plugins/sudoers/defaults.h @@ -137,6 +137,7 @@ bool set_early_default(const char *var, const char *val, int op, const char *fil bool set_default(const char *var, const char *val, int op, const char *file, int line, int column, bool quiet); bool update_defaults(struct sudoers_parse_tree *parse_tree, struct defaults_list *defs, int what, bool quiet); bool check_defaults(struct sudoers_parse_tree *parse_tree, bool quiet); +bool append_default(const char *var, const char *val, int op, char *source, struct defaults_list *defs); extern struct sudo_defs_types sudo_defs_table[]; diff --git a/plugins/sudoers/editor.c b/plugins/sudoers/editor.c index f2d6a3cc2..99f179e95 100644 --- a/plugins/sudoers/editor.c +++ b/plugins/sudoers/editor.c @@ -101,6 +101,7 @@ copy_arg(const char *src, size_t len) debug_decl(copy_arg, SUDOERS_DEBUG_UTIL); if ((copy = malloc(len + 1)) != NULL) { + sudoers_gc_add(GC_PTR, copy); for (dst = copy; src < src_end; ) { if (src[0] == '\\' && src[1] != '\0') { src++; @@ -150,6 +151,7 @@ resolve_editor(const char *ed, size_t edlen, int nfiles, char **files, /* If we can't find the editor in the user's PATH, give up. */ if (find_path(editor, &editor_path, &user_editor_sb, getenv("PATH"), NULL, 0, allowlist) != FOUND) { + sudoers_gc_remove(GC_PTR, editor); free(editor); errno = ENOENT; debug_return_str(NULL); @@ -163,6 +165,7 @@ resolve_editor(const char *ed, size_t edlen, int nfiles, char **files, nargv = reallocarray(NULL, nargc + 1, sizeof(char *)); if (nargv == NULL) goto oom; + sudoers_gc_add(GC_PTR, nargv); /* Fill in editor argv (assumes files[] is NULL-terminated). */ nargv[0] = editor; @@ -185,11 +188,15 @@ resolve_editor(const char *ed, size_t edlen, int nfiles, char **files, debug_return_str(editor_path); oom: sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + sudoers_gc_remove(GC_PTR, editor); free(editor); free(editor_path); if (nargv != NULL) { - while (nargc--) + while (nargc--) { + sudoers_gc_remove(GC_PTR, nargv[nargc]); free(nargv[nargc]); + } + sudoers_gc_remove(GC_PTR, nargv); free(nargv); } debug_return_str(NULL); @@ -254,5 +261,6 @@ find_editor(int nfiles, char **files, int *argc_out, char ***argv_out, } } + /* Caller is responsible for freeing editor_path, not g/c'd. */ debug_return_str(editor_path); } diff --git a/plugins/sudoers/exptilde.c b/plugins/sudoers/exptilde.c index bbdd09dbc..00ab0ac5c 100644 --- a/plugins/sudoers/exptilde.c +++ b/plugins/sudoers/exptilde.c @@ -82,7 +82,7 @@ expand_tilde(char **path, const char *user) *slash = '/'; if (pw == NULL) { /* Unknown user. */ - sudo_warnx(U_("unknown user: %s"), user); + sudo_warnx(U_("unknown user %s"), user); debug_return_bool(false); } diff --git a/plugins/sudoers/file.c b/plugins/sudoers/file.c index 5b12b8fb3..d845f10da 100644 --- a/plugins/sudoers/file.c +++ b/plugins/sudoers/file.c @@ -60,6 +60,7 @@ sudo_file_open(struct sudo_nss *nss) debug_decl(sudo_file_open, SUDOERS_DEBUG_NSS); struct sudo_file_handle *handle; + /* Note: relies on defaults being initialized early. */ if (def_ignore_local_sudoers) debug_return_int(-1); diff --git a/plugins/sudoers/find_path.c b/plugins/sudoers/find_path.c index e1b6a0135..3ca3d4d12 100644 --- a/plugins/sudoers/find_path.c +++ b/plugins/sudoers/find_path.c @@ -97,6 +97,9 @@ find_path(const char *infile, char **outfile, struct stat *sbp, int len; debug_decl(find_path, SUDOERS_DEBUG_UTIL); + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "resolving %s", infile); + /* * If we were given a fully qualified or relative path * there is no need to look at $PATH. @@ -159,6 +162,8 @@ find_path(const char *infile, char **outfile, struct stat *sbp, done: if (found) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "found %s", command); if ((*outfile = strdup(command)) == NULL) debug_return_int(NOT_FOUND_ERROR); debug_return_int(FOUND); diff --git a/plugins/sudoers/fmtsudoers.c b/plugins/sudoers/fmtsudoers.c index 9ab1473f2..a58071e5d 100644 --- a/plugins/sudoers/fmtsudoers.c +++ b/plugins/sudoers/fmtsudoers.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2005, 2007-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2004-2005, 2007-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -152,6 +152,8 @@ sudoers_defaults_to_tags(const char *var, const char *val, int op, tags->log_output = op == true; } else if (strcmp(var, "noexec") == 0) { tags->noexec = op == true; + } else if (strcmp(var, "intercept") == 0) { + tags->intercept = op == true; } else if (strcmp(var, "setenv") == 0) { tags->setenv = op == true; } else if (strcmp(var, "mail_all_cmnds") == 0 || @@ -251,6 +253,8 @@ sudoers_format_cmndspec(struct sudo_lbuf *lbuf, } if (TAG_CHANGED(prev_cs, cs, tags, setenv)) sudo_lbuf_append(lbuf, tags.setenv ? "SETENV: " : "NOSETENV: "); + if (TAG_CHANGED(prev_cs, cs, tags, intercept)) + sudo_lbuf_append(lbuf, tags.intercept ? "INTERCEPT: " : "NOINTERCEPT: "); if (TAG_CHANGED(prev_cs, cs, tags, noexec)) sudo_lbuf_append(lbuf, tags.noexec ? "NOEXEC: " : "EXEC: "); if (TAG_CHANGED(prev_cs, cs, tags, nopasswd)) diff --git a/plugins/sudoers/gc.c b/plugins/sudoers/gc.c index 25209c83e..73594dffb 100644 --- a/plugins/sudoers/gc.c +++ b/plugins/sudoers/gc.c @@ -62,7 +62,6 @@ sudoers_gc_add(enum sudoers_gc_types type, void *v) gc->u.ptr = v; break; case GC_VECTOR: - case GC_EDIT_ARGS: gc->u.vec = v; break; default: @@ -95,7 +94,6 @@ sudoers_gc_remove(enum sudoers_gc_types type, void *v) goto found; break; case GC_VECTOR: - case GC_EDIT_ARGS: if (gc->u.vec == v) goto found; break; @@ -146,16 +144,6 @@ sudoers_gc_run(void) free(gc->u.vec); free(gc); break; - case GC_EDIT_ARGS: - for (cur = gc->u.vec; *cur != NULL; cur++) { - /* The "--" separates dynamic from non-dynamic args. */ - if (strcmp(*cur, "--") == 0) - break; - free(*cur); - } - free(gc->u.vec); - free(gc); - break; default: sudo_warnx("unexpected garbage type %d", gc->type); } diff --git a/plugins/sudoers/gram.c b/plugins/sudoers/gram.c index 16873aed2..28a4d6e27 100644 --- a/plugins/sudoers/gram.c +++ b/plugins/sudoers/gram.c @@ -4,7 +4,7 @@ */ #include <config.h> -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C @@ -22,7 +22,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 @@ -52,10 +52,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30705 +#define YYBISON 30706 /* Bison version string. */ -#define YYBISON_VERSION "3.7.5" +#define YYBISON_VERSION "3.7.6" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -85,7 +85,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2020 + * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2021 * Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any @@ -112,9 +112,6 @@ #include <stddef.h> #include <string.h> #include <unistd.h> -#if defined(YYBISON) && defined(HAVE_ALLOCA_H) && !defined(__GNUC__) -# include <alloca.h> -#endif /* YYBISON && HAVE_ALLOCA_H && !__GNUC__ */ #include <errno.h> #include "sudoers.h" @@ -167,7 +164,7 @@ static struct sudo_command *new_command(char *, char *); static struct command_digest *new_digest(int, char *); static void alias_error(const char *name, int errnum); -#line 165 "gram.c" +#line 162 "gram.c" # ifndef YY_CAST # ifdef __cplusplus @@ -240,27 +237,29 @@ extern int sudoersdebug; NOMAIL = 284, /* NOMAIL */ FOLLOWLNK = 285, /* FOLLOWLNK */ NOFOLLOWLNK = 286, /* NOFOLLOWLNK */ - ALL = 287, /* ALL */ - HOSTALIAS = 288, /* HOSTALIAS */ - CMNDALIAS = 289, /* CMNDALIAS */ - USERALIAS = 290, /* USERALIAS */ - RUNASALIAS = 291, /* RUNASALIAS */ - ERROR = 292, /* ERROR */ - NOMATCH = 293, /* NOMATCH */ - CHROOT = 294, /* CHROOT */ - CWD = 295, /* CWD */ - TYPE = 296, /* TYPE */ - ROLE = 297, /* ROLE */ - PRIVS = 298, /* PRIVS */ - LIMITPRIVS = 299, /* LIMITPRIVS */ - CMND_TIMEOUT = 300, /* CMND_TIMEOUT */ - NOTBEFORE = 301, /* NOTBEFORE */ - NOTAFTER = 302, /* NOTAFTER */ - MYSELF = 303, /* MYSELF */ - SHA224_TOK = 304, /* SHA224_TOK */ - SHA256_TOK = 305, /* SHA256_TOK */ - SHA384_TOK = 306, /* SHA384_TOK */ - SHA512_TOK = 307 /* SHA512_TOK */ + INTERCEPT = 287, /* INTERCEPT */ + NOINTERCEPT = 288, /* NOINTERCEPT */ + ALL = 289, /* ALL */ + HOSTALIAS = 290, /* HOSTALIAS */ + CMNDALIAS = 291, /* CMNDALIAS */ + USERALIAS = 292, /* USERALIAS */ + RUNASALIAS = 293, /* RUNASALIAS */ + ERROR = 294, /* ERROR */ + NOMATCH = 295, /* NOMATCH */ + CHROOT = 296, /* CHROOT */ + CWD = 297, /* CWD */ + TYPE = 298, /* TYPE */ + ROLE = 299, /* ROLE */ + PRIVS = 300, /* PRIVS */ + LIMITPRIVS = 301, /* LIMITPRIVS */ + CMND_TIMEOUT = 302, /* CMND_TIMEOUT */ + NOTBEFORE = 303, /* NOTBEFORE */ + NOTAFTER = 304, /* NOTAFTER */ + MYSELF = 305, /* MYSELF */ + SHA224_TOK = 306, /* SHA224_TOK */ + SHA256_TOK = 307, /* SHA256_TOK */ + SHA384_TOK = 308, /* SHA384_TOK */ + SHA512_TOK = 309 /* SHA512_TOK */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -298,33 +297,35 @@ extern int sudoersdebug; #define NOMAIL 284 #define FOLLOWLNK 285 #define NOFOLLOWLNK 286 -#define ALL 287 -#define HOSTALIAS 288 -#define CMNDALIAS 289 -#define USERALIAS 290 -#define RUNASALIAS 291 -#define ERROR 292 -#define NOMATCH 293 -#define CHROOT 294 -#define CWD 295 -#define TYPE 296 -#define ROLE 297 -#define PRIVS 298 -#define LIMITPRIVS 299 -#define CMND_TIMEOUT 300 -#define NOTBEFORE 301 -#define NOTAFTER 302 -#define MYSELF 303 -#define SHA224_TOK 304 -#define SHA256_TOK 305 -#define SHA384_TOK 306 -#define SHA512_TOK 307 +#define INTERCEPT 287 +#define NOINTERCEPT 288 +#define ALL 289 +#define HOSTALIAS 290 +#define CMNDALIAS 291 +#define USERALIAS 292 +#define RUNASALIAS 293 +#define ERROR 294 +#define NOMATCH 295 +#define CHROOT 296 +#define CWD 297 +#define TYPE 298 +#define ROLE 299 +#define PRIVS 300 +#define LIMITPRIVS 301 +#define CMND_TIMEOUT 302 +#define NOTBEFORE 303 +#define NOTAFTER 304 +#define MYSELF 305 +#define SHA224_TOK 306 +#define SHA256_TOK 307 +#define SHA384_TOK 308 +#define SHA512_TOK 309 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 88 "gram.y" +#line 85 "gram.y" struct cmndspec *cmndspec; struct defaults *defaults; @@ -338,7 +339,7 @@ union YYSTYPE char *string; int tok; -#line 336 "gram.c" +#line 337 "gram.c" }; typedef union YYSTYPE YYSTYPE; @@ -388,90 +389,92 @@ enum yysymbol_kind_t YYSYMBOL_NOMAIL = 29, /* NOMAIL */ YYSYMBOL_FOLLOWLNK = 30, /* FOLLOWLNK */ YYSYMBOL_NOFOLLOWLNK = 31, /* NOFOLLOWLNK */ - YYSYMBOL_ALL = 32, /* ALL */ - YYSYMBOL_HOSTALIAS = 33, /* HOSTALIAS */ - YYSYMBOL_CMNDALIAS = 34, /* CMNDALIAS */ - YYSYMBOL_USERALIAS = 35, /* USERALIAS */ - YYSYMBOL_RUNASALIAS = 36, /* RUNASALIAS */ - YYSYMBOL_37_ = 37, /* ':' */ - YYSYMBOL_38_ = 38, /* '=' */ - YYSYMBOL_39_ = 39, /* ',' */ - YYSYMBOL_40_ = 40, /* '!' */ - YYSYMBOL_41_ = 41, /* '+' */ - YYSYMBOL_42_ = 42, /* '-' */ - YYSYMBOL_43_ = 43, /* '(' */ - YYSYMBOL_44_ = 44, /* ')' */ - YYSYMBOL_45_n_ = 45, /* '\n' */ - YYSYMBOL_ERROR = 46, /* ERROR */ - YYSYMBOL_NOMATCH = 47, /* NOMATCH */ - YYSYMBOL_CHROOT = 48, /* CHROOT */ - YYSYMBOL_CWD = 49, /* CWD */ - YYSYMBOL_TYPE = 50, /* TYPE */ - YYSYMBOL_ROLE = 51, /* ROLE */ - YYSYMBOL_PRIVS = 52, /* PRIVS */ - YYSYMBOL_LIMITPRIVS = 53, /* LIMITPRIVS */ - YYSYMBOL_CMND_TIMEOUT = 54, /* CMND_TIMEOUT */ - YYSYMBOL_NOTBEFORE = 55, /* NOTBEFORE */ - YYSYMBOL_NOTAFTER = 56, /* NOTAFTER */ - YYSYMBOL_MYSELF = 57, /* MYSELF */ - YYSYMBOL_SHA224_TOK = 58, /* SHA224_TOK */ - YYSYMBOL_SHA256_TOK = 59, /* SHA256_TOK */ - YYSYMBOL_SHA384_TOK = 60, /* SHA384_TOK */ - YYSYMBOL_SHA512_TOK = 61, /* SHA512_TOK */ - YYSYMBOL_YYACCEPT = 62, /* $accept */ - YYSYMBOL_file = 63, /* file */ - YYSYMBOL_line = 64, /* line */ - YYSYMBOL_entry = 65, /* entry */ - YYSYMBOL_include = 66, /* include */ - YYSYMBOL_includedir = 67, /* includedir */ - YYSYMBOL_defaults_list = 68, /* defaults_list */ - YYSYMBOL_defaults_entry = 69, /* defaults_entry */ - YYSYMBOL_privileges = 70, /* privileges */ - YYSYMBOL_privilege = 71, /* privilege */ - YYSYMBOL_ophost = 72, /* ophost */ - YYSYMBOL_host = 73, /* host */ - YYSYMBOL_cmndspeclist = 74, /* cmndspeclist */ - YYSYMBOL_cmndspec = 75, /* cmndspec */ - YYSYMBOL_digestspec = 76, /* digestspec */ - YYSYMBOL_digestlist = 77, /* digestlist */ - YYSYMBOL_digcmnd = 78, /* digcmnd */ - YYSYMBOL_opcmnd = 79, /* opcmnd */ - YYSYMBOL_chdirspec = 80, /* chdirspec */ - YYSYMBOL_chrootspec = 81, /* chrootspec */ - YYSYMBOL_timeoutspec = 82, /* timeoutspec */ - YYSYMBOL_notbeforespec = 83, /* notbeforespec */ - YYSYMBOL_notafterspec = 84, /* notafterspec */ - YYSYMBOL_rolespec = 85, /* rolespec */ - YYSYMBOL_typespec = 86, /* typespec */ - YYSYMBOL_privsspec = 87, /* privsspec */ - YYSYMBOL_limitprivsspec = 88, /* limitprivsspec */ - YYSYMBOL_runasspec = 89, /* runasspec */ - YYSYMBOL_runaslist = 90, /* runaslist */ - YYSYMBOL_reserved_word = 91, /* reserved_word */ - YYSYMBOL_reserved_alias = 92, /* reserved_alias */ - YYSYMBOL_options = 93, /* options */ - YYSYMBOL_cmndtag = 94, /* cmndtag */ - YYSYMBOL_cmnd = 95, /* cmnd */ - YYSYMBOL_hostaliases = 96, /* hostaliases */ - YYSYMBOL_hostalias = 97, /* hostalias */ - YYSYMBOL_98_1 = 98, /* $@1 */ - YYSYMBOL_hostlist = 99, /* hostlist */ - YYSYMBOL_cmndaliases = 100, /* cmndaliases */ - YYSYMBOL_cmndalias = 101, /* cmndalias */ - YYSYMBOL_102_2 = 102, /* $@2 */ - YYSYMBOL_cmndlist = 103, /* cmndlist */ - YYSYMBOL_runasaliases = 104, /* runasaliases */ - YYSYMBOL_runasalias = 105, /* runasalias */ - YYSYMBOL_106_3 = 106, /* $@3 */ - YYSYMBOL_useraliases = 107, /* useraliases */ - YYSYMBOL_useralias = 108, /* useralias */ - YYSYMBOL_109_4 = 109, /* $@4 */ - YYSYMBOL_userlist = 110, /* userlist */ - YYSYMBOL_opuser = 111, /* opuser */ - YYSYMBOL_user = 112, /* user */ - YYSYMBOL_grouplist = 113, /* grouplist */ - YYSYMBOL_opgroup = 114, /* opgroup */ - YYSYMBOL_group = 115 /* group */ + YYSYMBOL_INTERCEPT = 32, /* INTERCEPT */ + YYSYMBOL_NOINTERCEPT = 33, /* NOINTERCEPT */ + YYSYMBOL_ALL = 34, /* ALL */ + YYSYMBOL_HOSTALIAS = 35, /* HOSTALIAS */ + YYSYMBOL_CMNDALIAS = 36, /* CMNDALIAS */ + YYSYMBOL_USERALIAS = 37, /* USERALIAS */ + YYSYMBOL_RUNASALIAS = 38, /* RUNASALIAS */ + YYSYMBOL_39_ = 39, /* ':' */ + YYSYMBOL_40_ = 40, /* '=' */ + YYSYMBOL_41_ = 41, /* ',' */ + YYSYMBOL_42_ = 42, /* '!' */ + YYSYMBOL_43_ = 43, /* '+' */ + YYSYMBOL_44_ = 44, /* '-' */ + YYSYMBOL_45_ = 45, /* '(' */ + YYSYMBOL_46_ = 46, /* ')' */ + YYSYMBOL_47_n_ = 47, /* '\n' */ + YYSYMBOL_ERROR = 48, /* ERROR */ + YYSYMBOL_NOMATCH = 49, /* NOMATCH */ + YYSYMBOL_CHROOT = 50, /* CHROOT */ + YYSYMBOL_CWD = 51, /* CWD */ + YYSYMBOL_TYPE = 52, /* TYPE */ + YYSYMBOL_ROLE = 53, /* ROLE */ + YYSYMBOL_PRIVS = 54, /* PRIVS */ + YYSYMBOL_LIMITPRIVS = 55, /* LIMITPRIVS */ + YYSYMBOL_CMND_TIMEOUT = 56, /* CMND_TIMEOUT */ + YYSYMBOL_NOTBEFORE = 57, /* NOTBEFORE */ + YYSYMBOL_NOTAFTER = 58, /* NOTAFTER */ + YYSYMBOL_MYSELF = 59, /* MYSELF */ + YYSYMBOL_SHA224_TOK = 60, /* SHA224_TOK */ + YYSYMBOL_SHA256_TOK = 61, /* SHA256_TOK */ + YYSYMBOL_SHA384_TOK = 62, /* SHA384_TOK */ + YYSYMBOL_SHA512_TOK = 63, /* SHA512_TOK */ + YYSYMBOL_YYACCEPT = 64, /* $accept */ + YYSYMBOL_file = 65, /* file */ + YYSYMBOL_line = 66, /* line */ + YYSYMBOL_entry = 67, /* entry */ + YYSYMBOL_include = 68, /* include */ + YYSYMBOL_includedir = 69, /* includedir */ + YYSYMBOL_defaults_list = 70, /* defaults_list */ + YYSYMBOL_defaults_entry = 71, /* defaults_entry */ + YYSYMBOL_privileges = 72, /* privileges */ + YYSYMBOL_privilege = 73, /* privilege */ + YYSYMBOL_ophost = 74, /* ophost */ + YYSYMBOL_host = 75, /* host */ + YYSYMBOL_cmndspeclist = 76, /* cmndspeclist */ + YYSYMBOL_cmndspec = 77, /* cmndspec */ + YYSYMBOL_digestspec = 78, /* digestspec */ + YYSYMBOL_digestlist = 79, /* digestlist */ + YYSYMBOL_digcmnd = 80, /* digcmnd */ + YYSYMBOL_opcmnd = 81, /* opcmnd */ + YYSYMBOL_chdirspec = 82, /* chdirspec */ + YYSYMBOL_chrootspec = 83, /* chrootspec */ + YYSYMBOL_timeoutspec = 84, /* timeoutspec */ + YYSYMBOL_notbeforespec = 85, /* notbeforespec */ + YYSYMBOL_notafterspec = 86, /* notafterspec */ + YYSYMBOL_rolespec = 87, /* rolespec */ + YYSYMBOL_typespec = 88, /* typespec */ + YYSYMBOL_privsspec = 89, /* privsspec */ + YYSYMBOL_limitprivsspec = 90, /* limitprivsspec */ + YYSYMBOL_runasspec = 91, /* runasspec */ + YYSYMBOL_runaslist = 92, /* runaslist */ + YYSYMBOL_reserved_word = 93, /* reserved_word */ + YYSYMBOL_reserved_alias = 94, /* reserved_alias */ + YYSYMBOL_options = 95, /* options */ + YYSYMBOL_cmndtag = 96, /* cmndtag */ + YYSYMBOL_cmnd = 97, /* cmnd */ + YYSYMBOL_hostaliases = 98, /* hostaliases */ + YYSYMBOL_hostalias = 99, /* hostalias */ + YYSYMBOL_100_1 = 100, /* $@1 */ + YYSYMBOL_hostlist = 101, /* hostlist */ + YYSYMBOL_cmndaliases = 102, /* cmndaliases */ + YYSYMBOL_cmndalias = 103, /* cmndalias */ + YYSYMBOL_104_2 = 104, /* $@2 */ + YYSYMBOL_cmndlist = 105, /* cmndlist */ + YYSYMBOL_runasaliases = 106, /* runasaliases */ + YYSYMBOL_runasalias = 107, /* runasalias */ + YYSYMBOL_108_3 = 108, /* $@3 */ + YYSYMBOL_useraliases = 109, /* useraliases */ + YYSYMBOL_useralias = 110, /* useralias */ + YYSYMBOL_111_4 = 111, /* $@4 */ + YYSYMBOL_userlist = 112, /* userlist */ + YYSYMBOL_opuser = 113, /* opuser */ + YYSYMBOL_user = 114, /* user */ + YYSYMBOL_grouplist = 115, /* grouplist */ + YYSYMBOL_opgroup = 116, /* opgroup */ + YYSYMBOL_group = 117 /* group */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -793,19 +796,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 88 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 320 +#define YYLAST 321 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 62 +#define YYNTOKENS 64 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 54 /* YYNRULES -- Number of rules. */ -#define YYNRULES 149 +#define YYNRULES 151 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 248 +#define YYNSTATES 250 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 307 +#define YYMAXUTOK 309 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -820,12 +823,12 @@ union yyalloc static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 45, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 40, 2, 2, 2, 2, 2, 2, - 43, 44, 2, 41, 39, 42, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 37, 2, - 2, 38, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 42, 2, 2, 2, 2, 2, 2, + 45, 46, 2, 43, 41, 44, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 39, 2, + 2, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -848,29 +851,30 @@ static const yytype_int8 yytranslate[] = 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61 + 35, 36, 37, 38, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 197, 197, 200, 203, 204, 207, 210, 213, 222, - 231, 237, 240, 243, 246, 249, 253, 257, 261, 265, - 271, 274, 280, 283, 289, 290, 297, 306, 315, 325, - 335, 347, 348, 353, 359, 376, 380, 386, 395, 403, - 412, 421, 432, 433, 493, 559, 568, 577, 586, 597, - 598, 605, 608, 630, 634, 640, 652, 664, 669, 673, - 678, 683, 688, 692, 697, 700, 705, 721, 732, 744, - 755, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 785, 791, 794, 799, 804, 813, 822, 834, 841, - 848, 855, 864, 867, 870, 873, 876, 879, 882, 885, - 888, 891, 894, 897, 900, 903, 906, 911, 919, 928, - 947, 948, 951, 951, 963, 966, 967, 974, 975, 978, - 978, 990, 993, 994, 1001, 1002, 1005, 1005, 1017, 1020, - 1021, 1024, 1024, 1036, 1039, 1040, 1047, 1051, 1057, 1066, - 1074, 1083, 1092, 1103, 1104, 1111, 1115, 1121, 1130, 1138 + 0, 196, 196, 199, 202, 203, 206, 209, 212, 221, + 230, 236, 239, 242, 245, 248, 252, 256, 260, 264, + 270, 273, 279, 282, 288, 289, 296, 305, 314, 324, + 334, 346, 347, 352, 358, 375, 379, 385, 394, 402, + 411, 420, 431, 432, 494, 560, 569, 578, 587, 598, + 599, 606, 609, 623, 627, 633, 645, 657, 662, 666, + 671, 676, 681, 685, 690, 693, 698, 714, 725, 737, + 748, 766, 767, 768, 769, 770, 771, 772, 773, 774, + 775, 778, 784, 787, 792, 797, 806, 815, 827, 834, + 841, 848, 857, 860, 863, 866, 869, 872, 875, 878, + 881, 884, 887, 890, 893, 896, 899, 902, 905, 910, + 924, 933, 952, 953, 956, 956, 968, 971, 972, 979, + 980, 983, 983, 995, 998, 999, 1006, 1007, 1010, 1010, + 1022, 1025, 1026, 1029, 1029, 1041, 1044, 1045, 1052, 1056, + 1062, 1071, 1079, 1088, 1097, 1108, 1109, 1116, 1120, 1126, + 1135, 1143 }; #endif @@ -891,22 +895,22 @@ static const char *const yytname[] = "INCLUDE", "INCLUDEDIR", "DEFAULTS", "DEFAULTS_HOST", "DEFAULTS_USER", "DEFAULTS_RUNAS", "DEFAULTS_CMND", "NOPASSWD", "PASSWD", "NOEXEC", "EXEC", "SETENV", "NOSETENV", "LOG_INPUT", "NOLOG_INPUT", "LOG_OUTPUT", - "NOLOG_OUTPUT", "MAIL", "NOMAIL", "FOLLOWLNK", "NOFOLLOWLNK", "ALL", - "HOSTALIAS", "CMNDALIAS", "USERALIAS", "RUNASALIAS", "':'", "'='", "','", - "'!'", "'+'", "'-'", "'('", "')'", "'\\n'", "ERROR", "NOMATCH", "CHROOT", - "CWD", "TYPE", "ROLE", "PRIVS", "LIMITPRIVS", "CMND_TIMEOUT", - "NOTBEFORE", "NOTAFTER", "MYSELF", "SHA224_TOK", "SHA256_TOK", - "SHA384_TOK", "SHA512_TOK", "$accept", "file", "line", "entry", - "include", "includedir", "defaults_list", "defaults_entry", "privileges", - "privilege", "ophost", "host", "cmndspeclist", "cmndspec", "digestspec", - "digestlist", "digcmnd", "opcmnd", "chdirspec", "chrootspec", - "timeoutspec", "notbeforespec", "notafterspec", "rolespec", "typespec", - "privsspec", "limitprivsspec", "runasspec", "runaslist", "reserved_word", - "reserved_alias", "options", "cmndtag", "cmnd", "hostaliases", - "hostalias", "$@1", "hostlist", "cmndaliases", "cmndalias", "$@2", - "cmndlist", "runasaliases", "runasalias", "$@3", "useraliases", - "useralias", "$@4", "userlist", "opuser", "user", "grouplist", "opgroup", - "group", YY_NULLPTR + "NOLOG_OUTPUT", "MAIL", "NOMAIL", "FOLLOWLNK", "NOFOLLOWLNK", + "INTERCEPT", "NOINTERCEPT", "ALL", "HOSTALIAS", "CMNDALIAS", "USERALIAS", + "RUNASALIAS", "':'", "'='", "','", "'!'", "'+'", "'-'", "'('", "')'", + "'\\n'", "ERROR", "NOMATCH", "CHROOT", "CWD", "TYPE", "ROLE", "PRIVS", + "LIMITPRIVS", "CMND_TIMEOUT", "NOTBEFORE", "NOTAFTER", "MYSELF", + "SHA224_TOK", "SHA256_TOK", "SHA384_TOK", "SHA512_TOK", "$accept", + "file", "line", "entry", "include", "includedir", "defaults_list", + "defaults_entry", "privileges", "privilege", "ophost", "host", + "cmndspeclist", "cmndspec", "digestspec", "digestlist", "digcmnd", + "opcmnd", "chdirspec", "chrootspec", "timeoutspec", "notbeforespec", + "notafterspec", "rolespec", "typespec", "privsspec", "limitprivsspec", + "runasspec", "runaslist", "reserved_word", "reserved_alias", "options", + "cmndtag", "cmnd", "hostaliases", "hostalias", "$@1", "hostlist", + "cmndaliases", "cmndalias", "$@2", "cmndlist", "runasaliases", + "runasalias", "$@3", "useraliases", "useralias", "$@4", "userlist", + "opuser", "user", "grouplist", "opgroup", "group", YY_NULLPTR }; static const char * @@ -924,10 +928,10 @@ static const yytype_int16 yytoknum[] = 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 58, 61, 44, - 33, 43, 45, 40, 41, 10, 292, 293, 294, 295, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 58, + 61, 44, 33, 43, 45, 40, 41, 10, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307 + 306, 307, 308, 309 }; #endif @@ -945,31 +949,31 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 178, -11, -114, -114, -114, -114, 27, 44, 9, 240, - 148, 148, 6, -114, 31, 40, 112, 121, 193, -114, - 75, 220, -114, -114, -114, 95, -114, -114, -114, 10, - 11, 16, 73, 32, -114, -114, -114, -114, -114, -114, - 255, -114, -114, 8, 12, 12, -114, -114, -114, 106, - 63, 70, 74, 89, -114, 66, -114, -114, -114, 34, + 169, 13, -114, -114, -114, -114, 70, 87, 9, 237, + 249, 249, 6, -114, 37, 48, 74, 110, 184, -114, + 120, 213, -114, -114, -114, 227, -114, -114, -114, 10, + 11, 41, 102, 18, -114, -114, -114, -114, -114, -114, + 268, -114, -114, 8, 32, 32, -114, -114, -114, 52, + 83, 94, 98, 99, -114, 12, -114, -114, -114, 104, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, 107, 77, -114, -114, 120, 83, -114, -114, - 143, 87, -114, -114, 158, 92, -114, -114, -114, -114, - 148, 105, -114, 145, 88, -114, 102, -114, 189, 190, - 197, -114, 9, -114, -114, 240, 91, 101, 104, -114, - 198, 206, 207, 212, 209, -114, 6, 170, 169, 240, - 31, -114, 188, 6, 40, -114, 192, 148, 112, -114, - 201, 148, 121, -114, -114, 36, -114, 202, -114, -114, + -114, -114, 113, 100, -114, -114, 115, 132, -114, -114, + 116, 176, -114, -114, 117, 198, -114, -114, -114, -114, + 249, 215, -114, -23, 93, -114, 95, -114, 163, 165, + 166, -114, 9, -114, -114, 237, 29, 36, 111, -114, + 177, 179, 180, 199, 224, -114, 6, 235, 168, 237, + 37, -114, 170, 6, 48, -114, 172, 249, 74, -114, + 192, 249, 110, -114, -114, 38, -114, 174, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, -114, -114, -114, 240, 211, -114, 6, 218, - -114, 148, 219, -114, 148, 219, -114, -114, -114, 234, - 224, -114, -114, 211, 218, 219, 219, 99, 196, -21, - 202, 241, -114, -114, -114, 109, 236, -114, -114, -114, - 99, -114, 210, 213, 235, 238, 239, 243, 244, 245, - 246, -114, -114, -114, -114, -114, -114, -114, -114, -114, - 1, -114, 99, 236, 269, 270, 276, 277, 279, 289, - 290, 291, 292, -114, -114, -114, -114, -114, -114, -114, + -114, -114, -114, -114, -114, 237, 201, -114, 6, 211, + -114, 249, 218, -114, 249, 218, -114, -114, -114, 231, + 222, -114, -114, 201, 211, 218, 218, 107, 220, -3, + 174, 144, -114, -114, -114, 109, 223, -114, -114, -114, + 107, -114, 238, 240, 241, 248, 250, 252, 253, 254, + 255, -114, -114, -114, -114, -114, -114, -114, -114, -114, + 1, -114, 107, 223, 258, 280, 287, 288, 289, 290, + 291, 292, 294, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, -114, -114, -114, -114, -114, -114 + -114, -114, -114, -114, -114, -114, -114, -114, -114, -114 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -977,42 +981,42 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 138, 140, 141, 142, 0, 0, 0, 0, - 0, 0, 0, 139, 0, 0, 0, 0, 0, 6, - 0, 0, 4, 8, 9, 0, 134, 136, 7, 0, + 0, 0, 140, 142, 143, 144, 0, 0, 0, 0, + 0, 0, 0, 141, 0, 0, 0, 0, 0, 6, + 0, 0, 4, 8, 9, 0, 136, 138, 7, 0, 0, 26, 0, 0, 24, 37, 40, 39, 41, 38, - 0, 115, 35, 0, 0, 0, 109, 108, 107, 0, - 0, 0, 0, 0, 49, 0, 122, 51, 53, 0, - 112, 71, 72, 73, 78, 77, 79, 80, 74, 75, - 76, 81, 0, 0, 110, 119, 0, 0, 117, 131, - 0, 0, 129, 126, 0, 0, 124, 137, 1, 5, + 0, 117, 35, 0, 0, 0, 111, 110, 109, 0, + 0, 0, 0, 0, 49, 0, 124, 51, 53, 0, + 114, 71, 72, 73, 78, 77, 79, 80, 74, 75, + 76, 81, 0, 0, 112, 121, 0, 0, 119, 133, + 0, 0, 131, 128, 0, 0, 126, 139, 1, 5, 0, 0, 31, 0, 0, 20, 0, 22, 0, 0, 0, 27, 0, 15, 36, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 11, - 0, 0, 0, 14, 135, 0, 10, 64, 21, 23, - 28, 29, 30, 25, 116, 18, 16, 17, 45, 46, - 47, 48, 50, 123, 19, 0, 114, 111, 0, 121, - 118, 0, 133, 130, 0, 128, 125, 33, 32, 66, - 34, 42, 82, 113, 120, 132, 127, 70, 0, 67, - 64, 92, 147, 149, 148, 0, 69, 143, 145, 65, + 0, 0, 0, 14, 137, 0, 10, 64, 21, 23, + 28, 29, 30, 25, 118, 18, 16, 17, 45, 46, + 47, 48, 50, 125, 19, 0, 116, 113, 0, 123, + 120, 0, 135, 132, 0, 130, 127, 33, 32, 66, + 34, 42, 82, 115, 122, 134, 129, 70, 0, 67, + 64, 92, 149, 151, 150, 0, 69, 145, 147, 65, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 84, 87, 85, 86, 88, 89, 90, 91, - 0, 146, 0, 68, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 105, 106, 103, 104, 44, 144, 56, - 55, 61, 60, 62, 63, 57, 58, 59 + 0, 148, 0, 68, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 93, 94, 95, 96, 99, 100, 101, + 102, 103, 104, 107, 108, 105, 106, 97, 98, 44, + 146, 56, 55, 61, 60, 62, 63, 57, 58, 59 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -114, -114, -114, 281, -114, -114, 160, 203, -114, 168, - 199, 266, -114, 127, 194, -114, -113, 254, -114, -114, + -114, -114, -114, 283, -114, -114, 91, 203, -114, 171, + 202, 269, -114, 128, 196, -114, -113, 256, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -9, -114, -114, 261, -114, 191, -114, -7, -114, 195, - -114, -108, -114, 180, -114, -114, 185, -114, -10, 225, - 296, 126, 108, 132 + -9, -114, -114, 263, -114, 193, -114, -7, -114, 190, + -114, -48, -114, 183, -114, -114, 188, -114, -10, 228, + 299, 129, 108, 136 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1032,75 +1036,75 @@ static const yytype_uint8 yydefgoto[] = static const yytype_int16 yytable[] = { 44, 45, 43, 153, 46, 47, 76, 80, 84, 46, - 47, 94, 96, 31, 31, 159, 190, 31, 90, 223, + 47, 94, 96, 31, 31, 46, 47, 137, 105, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 48, 28, 60, 29, 167, 48, 31, - 35, 49, 36, 37, 75, 38, 49, 105, 32, 32, - 174, 90, 32, 30, 98, 95, 97, 99, 100, 50, - 51, 52, 53, 61, 50, 51, 52, 53, 39, 46, - 47, 102, 61, 116, 32, 88, 40, 103, 101, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 237, 48, 35, - 110, 36, 37, 182, 38, 114, 49, 111, 183, 46, - 47, 112, 156, 182, 120, 76, 79, 162, 183, 80, - 124, 165, 121, 84, 128, 83, 113, 39, 125, 132, - 102, 184, 129, 138, 90, 40, 145, 133, 48, 185, - 102, 184, 135, 102, 61, 119, 146, 139, 173, 147, - 136, 175, 2, 61, 176, 3, 4, 5, 123, 179, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 62, - 63, 64, 65, 66, 67, 68, 69, 70, -2, 1, - 13, 127, 2, 137, 105, 3, 4, 5, 18, 6, - 7, 8, 9, 10, 11, 12, 131, 2, 140, 141, - 3, 4, 5, 106, 107, 108, 142, 155, 148, 102, - 13, 14, 15, 16, 17, 154, 149, 150, 18, 117, - -3, 1, 151, 19, 2, 13, 158, 3, 4, 5, - 161, 6, 7, 8, 9, 10, 11, 12, 2, 164, - 189, 3, 4, 5, 35, 169, 36, 37, 214, 38, - 105, 215, 13, 14, 15, 16, 17, 116, 90, 35, - 18, 36, 37, 180, 38, 19, 13, 50, 51, 52, - 53, 177, 39, 216, 18, 212, 217, 218, 239, 240, - 40, 219, 220, 221, 222, 241, 242, 39, 243, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 244, 245, - 246, 247, 89, 168, 144, 143, 104, 191, 152, 115, - 109, 157, 166, 163, 87, 134, 213, 211, 0, 160, - 238 + 234, 235, 236, 237, 238, 48, 190, 31, 90, 167, + 48, 60, 35, 49, 36, 37, 48, 38, 49, 105, + 32, 32, 75, 114, 49, 46, 47, 95, 97, 102, + 28, 50, 51, 52, 53, 103, 50, 51, 52, 53, + 102, 61, 39, 90, 32, 159, 145, 102, 79, 29, + 40, 98, 61, 146, 99, 100, 48, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 30, 239, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 101, 61, 31, + 174, 182, 156, 182, 83, 76, 183, 162, 183, 80, + 88, 165, 110, 84, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 111, 106, 107, 108, 112, 113, 120, + 138, 184, 139, 184, 61, 116, 32, 121, 173, 185, + 117, 175, 102, 119, 176, 123, 127, 131, 147, 179, + 62, 63, 64, 65, 66, 67, 68, 69, 70, -2, + 1, 124, 140, 2, 141, 142, 3, 4, 5, 125, + 6, 7, 8, 9, 10, 11, 12, 148, 2, 149, + 150, 3, 4, 5, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 13, 14, 15, 16, 17, 155, 151, + 158, 18, 161, -3, 1, 128, 19, 2, 13, 169, + 3, 4, 5, 129, 6, 7, 8, 9, 10, 11, + 12, 35, 164, 36, 37, 2, 38, 132, 3, 4, + 5, 35, 105, 36, 37, 133, 38, 13, 14, 15, + 16, 17, 116, 2, 135, 18, 3, 4, 5, 90, + 19, 39, 136, 180, 212, 13, 189, 241, 90, 40, + 177, 39, 35, 18, 36, 37, 102, 38, 214, 40, + 215, 216, 154, 13, 50, 51, 52, 53, 217, 242, + 218, 18, 219, 220, 221, 222, 243, 244, 245, 246, + 247, 248, 39, 249, 89, 143, 168, 144, 191, 104, + 152, 115, 109, 157, 160, 166, 163, 87, 134, 213, + 240, 211 }; -static const yytype_int16 yycheck[] = +static const yytype_uint8 yycheck[] = { 10, 11, 9, 116, 3, 4, 15, 16, 17, 3, - 4, 1, 1, 5, 5, 123, 37, 5, 39, 18, + 4, 1, 1, 5, 5, 3, 4, 40, 41, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 45, 4, 9, 1, 32, 5, - 4, 40, 6, 7, 4, 9, 40, 39, 40, 40, - 158, 39, 40, 9, 38, 45, 45, 41, 42, 58, - 59, 60, 61, 32, 58, 59, 60, 61, 32, 3, - 4, 39, 32, 39, 40, 0, 40, 45, 5, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 210, 32, 4, - 37, 6, 7, 4, 9, 39, 40, 37, 9, 3, - 4, 37, 119, 4, 37, 124, 4, 127, 9, 128, - 37, 131, 45, 132, 37, 4, 37, 32, 45, 37, - 39, 32, 45, 45, 39, 40, 45, 45, 32, 40, - 39, 32, 37, 39, 32, 38, 45, 45, 155, 45, - 45, 161, 4, 32, 164, 7, 8, 9, 38, 169, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 0, 1, - 32, 38, 4, 38, 39, 7, 8, 9, 40, 11, - 12, 13, 14, 15, 16, 17, 38, 4, 9, 9, - 7, 8, 9, 43, 44, 45, 9, 38, 10, 39, - 32, 33, 34, 35, 36, 45, 10, 10, 40, 59, - 0, 1, 10, 45, 4, 32, 38, 7, 8, 9, - 38, 11, 12, 13, 14, 15, 16, 17, 4, 38, - 44, 7, 8, 9, 4, 43, 6, 7, 38, 9, - 39, 38, 32, 33, 34, 35, 36, 39, 39, 4, - 40, 6, 7, 39, 9, 45, 32, 58, 59, 60, - 61, 37, 32, 38, 40, 39, 38, 38, 9, 9, - 40, 38, 38, 38, 38, 9, 9, 32, 9, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 9, 9, - 9, 9, 21, 135, 105, 102, 40, 180, 114, 55, - 49, 120, 132, 128, 18, 90, 190, 185, -1, 124, - 212 + 29, 30, 31, 32, 33, 34, 39, 5, 41, 1, + 34, 4, 4, 42, 6, 7, 34, 9, 42, 41, + 42, 42, 4, 41, 42, 3, 4, 47, 47, 41, + 47, 60, 61, 62, 63, 47, 60, 61, 62, 63, + 41, 34, 34, 41, 42, 123, 47, 41, 4, 9, + 42, 40, 34, 47, 43, 44, 34, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 9, 210, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 5, 34, 5, + 158, 4, 119, 4, 4, 124, 9, 127, 9, 128, + 0, 131, 39, 132, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 39, 43, 44, 45, 39, 39, 39, + 47, 34, 47, 34, 34, 41, 42, 47, 155, 42, + 59, 161, 41, 40, 164, 40, 40, 40, 47, 169, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 1, 39, 9, 4, 9, 9, 7, 8, 9, 47, + 11, 12, 13, 14, 15, 16, 17, 10, 4, 10, + 10, 7, 8, 9, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 34, 35, 36, 37, 38, 40, 10, + 40, 42, 40, 0, 1, 39, 47, 4, 34, 45, + 7, 8, 9, 47, 11, 12, 13, 14, 15, 16, + 17, 4, 40, 6, 7, 4, 9, 39, 7, 8, + 9, 4, 41, 6, 7, 47, 9, 34, 35, 36, + 37, 38, 41, 4, 39, 42, 7, 8, 9, 41, + 47, 34, 47, 41, 41, 34, 46, 9, 41, 42, + 39, 34, 4, 42, 6, 7, 41, 9, 40, 42, + 40, 40, 47, 34, 60, 61, 62, 63, 40, 9, + 40, 42, 40, 40, 40, 40, 9, 9, 9, 9, + 9, 9, 34, 9, 21, 102, 135, 105, 180, 40, + 114, 55, 49, 120, 124, 132, 128, 18, 90, 190, + 212, 185 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1108,50 +1112,51 @@ static const yytype_int16 yycheck[] = static const yytype_int8 yystos[] = { 0, 1, 4, 7, 8, 9, 11, 12, 13, 14, - 15, 16, 17, 32, 33, 34, 35, 36, 40, 45, - 63, 64, 65, 66, 67, 110, 111, 112, 45, 9, - 9, 5, 40, 68, 69, 4, 6, 7, 9, 32, - 40, 72, 73, 99, 110, 110, 3, 4, 32, 40, - 58, 59, 60, 61, 76, 77, 78, 79, 95, 103, - 4, 32, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 91, 92, 96, 97, 4, 92, 100, 101, 4, - 92, 107, 108, 4, 92, 104, 105, 112, 0, 65, - 39, 70, 71, 99, 1, 45, 1, 45, 38, 41, - 42, 5, 39, 45, 73, 39, 68, 68, 68, 95, - 37, 37, 37, 37, 39, 79, 39, 68, 98, 38, - 37, 45, 102, 38, 37, 45, 109, 38, 37, 45, - 106, 38, 37, 45, 111, 37, 45, 38, 45, 45, - 9, 9, 9, 69, 72, 45, 45, 45, 10, 10, - 10, 10, 76, 78, 45, 38, 99, 97, 38, 103, - 101, 38, 110, 108, 38, 110, 105, 1, 71, 43, - 74, 75, 89, 99, 103, 110, 110, 37, 90, 110, - 39, 93, 4, 9, 32, 40, 113, 114, 115, 44, - 37, 75, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 94, 115, 39, 113, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 78, 114, 9, - 9, 9, 9, 9, 9, 9, 9, 9 + 15, 16, 17, 34, 35, 36, 37, 38, 42, 47, + 65, 66, 67, 68, 69, 112, 113, 114, 47, 9, + 9, 5, 42, 70, 71, 4, 6, 7, 9, 34, + 42, 74, 75, 101, 112, 112, 3, 4, 34, 42, + 60, 61, 62, 63, 78, 79, 80, 81, 97, 105, + 4, 34, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 93, 94, 98, 99, 4, 94, 102, 103, 4, + 94, 109, 110, 4, 94, 106, 107, 114, 0, 67, + 41, 72, 73, 101, 1, 47, 1, 47, 40, 43, + 44, 5, 41, 47, 75, 41, 70, 70, 70, 97, + 39, 39, 39, 39, 41, 81, 41, 70, 100, 40, + 39, 47, 104, 40, 39, 47, 111, 40, 39, 47, + 108, 40, 39, 47, 113, 39, 47, 40, 47, 47, + 9, 9, 9, 71, 74, 47, 47, 47, 10, 10, + 10, 10, 78, 80, 47, 40, 101, 99, 40, 105, + 103, 40, 112, 110, 40, 112, 107, 1, 73, 45, + 76, 77, 91, 101, 105, 112, 112, 39, 92, 112, + 41, 95, 4, 9, 34, 42, 115, 116, 117, 46, + 39, 77, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 96, 117, 41, 115, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 80, + 116, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int8 yyr1[] = { - 0, 62, 63, 63, 64, 64, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 66, 66, 67, 67, 68, 68, 69, 69, 69, 69, - 69, 70, 70, 70, 71, 72, 72, 73, 73, 73, - 73, 73, 74, 74, 75, 76, 76, 76, 76, 77, - 77, 78, 78, 79, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 89, 90, 90, 90, 90, - 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 92, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, - 96, 96, 98, 97, 97, 99, 99, 100, 100, 102, - 101, 101, 103, 103, 104, 104, 106, 105, 105, 107, - 107, 109, 108, 108, 110, 110, 111, 111, 112, 112, - 112, 112, 112, 113, 113, 114, 114, 115, 115, 115 + 0, 64, 65, 65, 66, 66, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 68, 68, 69, 69, 70, 70, 71, 71, 71, 71, + 71, 72, 72, 72, 73, 74, 74, 75, 75, 75, + 75, 75, 76, 76, 77, 78, 78, 78, 78, 79, + 79, 80, 80, 81, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 91, 92, 92, 92, 92, + 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 94, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, + 97, 97, 98, 98, 100, 99, 99, 101, 101, 102, + 102, 104, 103, 103, 105, 105, 106, 106, 108, 107, + 107, 109, 109, 111, 110, 110, 112, 112, 113, 113, + 114, 114, 114, 114, 114, 115, 115, 116, 116, 117, + 117, 117 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1167,11 +1172,12 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 3, 0, 4, 3, 1, 3, 1, 3, 0, - 4, 3, 1, 3, 1, 3, 0, 4, 3, 1, - 3, 0, 4, 3, 1, 3, 1, 2, 1, 1, - 1, 1, 1, 1, 3, 1, 2, 1, 1, 1 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 3, 0, 4, 3, 1, 3, 1, + 3, 0, 4, 3, 1, 3, 1, 3, 0, 4, + 3, 1, 3, 0, 4, 3, 1, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, + 1, 1 }; @@ -1639,31 +1645,31 @@ yyreduce: switch (yyn) { case 2: /* file: %empty */ -#line 197 "gram.y" +#line 196 "gram.y" { ; /* empty file */ } -#line 1641 "gram.c" +#line 1647 "gram.c" break; case 6: /* entry: '\n' */ -#line 207 "gram.y" +#line 206 "gram.y" { ; /* blank line */ } -#line 1649 "gram.c" +#line 1655 "gram.c" break; case 7: /* entry: error '\n' */ -#line 210 "gram.y" +#line 209 "gram.y" { yyerrok; } -#line 1657 "gram.c" +#line 1663 "gram.c" break; case 8: /* entry: include */ -#line 213 "gram.y" +#line 212 "gram.y" { if (!push_include((yyvsp[0].string), false)) { parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -1673,11 +1679,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); free((yyvsp[0].string)); } -#line 1671 "gram.c" +#line 1677 "gram.c" break; case 9: /* entry: includedir */ -#line 222 "gram.y" +#line 221 "gram.y" { if (!push_include((yyvsp[0].string), true)) { parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -1687,143 +1693,143 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); free((yyvsp[0].string)); } -#line 1685 "gram.c" +#line 1691 "gram.c" break; case 10: /* entry: userlist privileges '\n' */ -#line 231 "gram.y" +#line 230 "gram.y" { if (!add_userspec((yyvsp[-2].member), (yyvsp[-1].privilege))) { sudoerserror(N_("unable to allocate memory")); YYERROR; } } -#line 1696 "gram.c" +#line 1702 "gram.c" break; case 11: /* entry: USERALIAS useraliases '\n' */ -#line 237 "gram.y" +#line 236 "gram.y" { ; } -#line 1704 "gram.c" +#line 1710 "gram.c" break; case 12: /* entry: HOSTALIAS hostaliases '\n' */ -#line 240 "gram.y" +#line 239 "gram.y" { ; } -#line 1712 "gram.c" +#line 1718 "gram.c" break; case 13: /* entry: CMNDALIAS cmndaliases '\n' */ -#line 243 "gram.y" +#line 242 "gram.y" { ; } -#line 1720 "gram.c" +#line 1726 "gram.c" break; case 14: /* entry: RUNASALIAS runasaliases '\n' */ -#line 246 "gram.y" +#line 245 "gram.y" { ; } -#line 1728 "gram.c" +#line 1734 "gram.c" break; case 15: /* entry: DEFAULTS defaults_list '\n' */ -#line 249 "gram.y" +#line 248 "gram.y" { if (!add_defaults(DEFAULTS, NULL, (yyvsp[-1].defaults))) YYERROR; } -#line 1737 "gram.c" +#line 1743 "gram.c" break; case 16: /* entry: DEFAULTS_USER userlist defaults_list '\n' */ -#line 253 "gram.y" +#line 252 "gram.y" { if (!add_defaults(DEFAULTS_USER, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1746 "gram.c" +#line 1752 "gram.c" break; case 17: /* entry: DEFAULTS_RUNAS userlist defaults_list '\n' */ -#line 257 "gram.y" +#line 256 "gram.y" { if (!add_defaults(DEFAULTS_RUNAS, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1755 "gram.c" +#line 1761 "gram.c" break; case 18: /* entry: DEFAULTS_HOST hostlist defaults_list '\n' */ -#line 261 "gram.y" +#line 260 "gram.y" { if (!add_defaults(DEFAULTS_HOST, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1764 "gram.c" +#line 1770 "gram.c" break; case 19: /* entry: DEFAULTS_CMND cmndlist defaults_list '\n' */ -#line 265 "gram.y" +#line 264 "gram.y" { if (!add_defaults(DEFAULTS_CMND, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1773 "gram.c" +#line 1779 "gram.c" break; case 20: /* include: INCLUDE WORD '\n' */ -#line 271 "gram.y" +#line 270 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1781 "gram.c" +#line 1787 "gram.c" break; case 21: /* include: INCLUDE WORD error '\n' */ -#line 274 "gram.y" +#line 273 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1790 "gram.c" +#line 1796 "gram.c" break; case 22: /* includedir: INCLUDEDIR WORD '\n' */ -#line 280 "gram.y" +#line 279 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1798 "gram.c" +#line 1804 "gram.c" break; case 23: /* includedir: INCLUDEDIR WORD error '\n' */ -#line 283 "gram.y" +#line 282 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1807 "gram.c" +#line 1813 "gram.c" break; case 25: /* defaults_list: defaults_list ',' defaults_entry */ -#line 290 "gram.y" +#line 289 "gram.y" { parser_leak_remove(LEAK_DEFAULTS, (yyvsp[0].defaults)); HLTQ_CONCAT((yyvsp[-2].defaults), (yyvsp[0].defaults), entries); (yyval.defaults) = (yyvsp[-2].defaults); } -#line 1817 "gram.c" +#line 1823 "gram.c" break; case 26: /* defaults_entry: DEFVAR */ -#line 297 "gram.y" +#line 296 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, true); if ((yyval.defaults) == NULL) { @@ -1833,11 +1839,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1831 "gram.c" +#line 1837 "gram.c" break; case 27: /* defaults_entry: '!' DEFVAR */ -#line 306 "gram.y" +#line 305 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, false); if ((yyval.defaults) == NULL) { @@ -1847,11 +1853,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1845 "gram.c" +#line 1851 "gram.c" break; case 28: /* defaults_entry: DEFVAR '=' WORD */ -#line 315 "gram.y" +#line 314 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), true); if ((yyval.defaults) == NULL) { @@ -1862,11 +1868,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1860 "gram.c" +#line 1866 "gram.c" break; case 29: /* defaults_entry: DEFVAR '+' WORD */ -#line 325 "gram.y" +#line 324 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '+'); if ((yyval.defaults) == NULL) { @@ -1877,11 +1883,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1875 "gram.c" +#line 1881 "gram.c" break; case 30: /* defaults_entry: DEFVAR '-' WORD */ -#line 335 "gram.y" +#line 334 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '-'); if ((yyval.defaults) == NULL) { @@ -1892,30 +1898,30 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1890 "gram.c" +#line 1896 "gram.c" break; case 32: /* privileges: privileges ':' privilege */ -#line 348 "gram.y" +#line 347 "gram.y" { parser_leak_remove(LEAK_PRIVILEGE, (yyvsp[0].privilege)); HLTQ_CONCAT((yyvsp[-2].privilege), (yyvsp[0].privilege), entries); (yyval.privilege) = (yyvsp[-2].privilege); } -#line 1900 "gram.c" +#line 1906 "gram.c" break; case 33: /* privileges: privileges ':' error */ -#line 353 "gram.y" +#line 352 "gram.y" { yyerrok; (yyval.privilege) = (yyvsp[-2].privilege); } -#line 1909 "gram.c" +#line 1915 "gram.c" break; case 34: /* privilege: hostlist '=' cmndspeclist */ -#line 359 "gram.y" +#line 358 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1931,29 +1937,29 @@ yyreduce: HLTQ_INIT(p, entries); (yyval.privilege) = p; } -#line 1929 "gram.c" +#line 1935 "gram.c" break; case 35: /* ophost: host */ -#line 376 "gram.y" +#line 375 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 1938 "gram.c" +#line 1944 "gram.c" break; case 36: /* ophost: '!' host */ -#line 380 "gram.y" +#line 379 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 1947 "gram.c" +#line 1953 "gram.c" break; case 37: /* host: ALIAS */ -#line 386 "gram.y" +#line 385 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -1963,11 +1969,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1961 "gram.c" +#line 1967 "gram.c" break; case 38: /* host: ALL */ -#line 395 "gram.y" +#line 394 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -1976,11 +1982,11 @@ yyreduce: } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1974 "gram.c" +#line 1980 "gram.c" break; case 39: /* host: NETGROUP */ -#line 403 "gram.y" +#line 402 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -1990,11 +1996,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1988 "gram.c" +#line 1994 "gram.c" break; case 40: /* host: NTWKADDR */ -#line 412 "gram.y" +#line 411 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NTWKADDR); if ((yyval.member) == NULL) { @@ -2004,11 +2010,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2002 "gram.c" +#line 2008 "gram.c" break; case 41: /* host: WORD */ -#line 421 "gram.y" +#line 420 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -2018,11 +2024,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2016 "gram.c" +#line 2022 "gram.c" break; case 43: /* cmndspeclist: cmndspeclist ',' cmndspec */ -#line 433 "gram.y" +#line 432 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST((yyvsp[-2].cmndspec), cmndspec, entries); @@ -2061,6 +2067,8 @@ yyreduce: (yyvsp[0].cmndspec)->tags.nopasswd = prev->tags.nopasswd; if ((yyvsp[0].cmndspec)->tags.noexec == UNSPEC) (yyvsp[0].cmndspec)->tags.noexec = prev->tags.noexec; + if ((yyvsp[0].cmndspec)->tags.intercept == UNSPEC) + (yyvsp[0].cmndspec)->tags.intercept = prev->tags.intercept; if ((yyvsp[0].cmndspec)->tags.setenv == UNSPEC && prev->tags.setenv != IMPLIED) (yyvsp[0].cmndspec)->tags.setenv = prev->tags.setenv; @@ -2081,11 +2089,11 @@ yyreduce: } (yyval.cmndspec) = (yyvsp[-2].cmndspec); } -#line 2079 "gram.c" +#line 2087 "gram.c" break; case 44: /* cmndspec: runasspec options cmndtag digcmnd */ -#line 493 "gram.y" +#line 494 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -2150,11 +2158,11 @@ yyreduce: cs->tags.setenv = IMPLIED; (yyval.cmndspec) = cs; } -#line 2148 "gram.c" +#line 2156 "gram.c" break; case 45: /* digestspec: SHA224_TOK ':' DIGEST */ -#line 559 "gram.y" +#line 560 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA224, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2164,11 +2172,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2162 "gram.c" +#line 2170 "gram.c" break; case 46: /* digestspec: SHA256_TOK ':' DIGEST */ -#line 568 "gram.y" +#line 569 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA256, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2178,11 +2186,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2176 "gram.c" +#line 2184 "gram.c" break; case 47: /* digestspec: SHA384_TOK ':' DIGEST */ -#line 577 "gram.y" +#line 578 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA384, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2192,11 +2200,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2190 "gram.c" +#line 2198 "gram.c" break; case 48: /* digestspec: SHA512_TOK ':' DIGEST */ -#line 586 "gram.y" +#line 587 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA512, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2206,29 +2214,29 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2204 "gram.c" +#line 2212 "gram.c" break; case 50: /* digestlist: digestlist ',' digestspec */ -#line 598 "gram.y" +#line 599 "gram.y" { parser_leak_remove(LEAK_DIGEST, (yyvsp[0].digest)); HLTQ_CONCAT((yyvsp[-2].digest), (yyvsp[0].digest), entries); (yyval.digest) = (yyvsp[-2].digest); } -#line 2214 "gram.c" +#line 2222 "gram.c" break; case 51: /* digcmnd: opcmnd */ -#line 605 "gram.y" +#line 606 "gram.y" { (yyval.member) = (yyvsp[0].member); } -#line 2222 "gram.c" +#line 2230 "gram.c" break; case 52: /* digcmnd: digestlist opcmnd */ -#line 608 "gram.y" +#line 609 "gram.y" { struct sudo_command *c = (struct sudo_command *) (yyvsp[0].member)->name; @@ -2237,14 +2245,6 @@ yyreduce: sudoerserror(N_("a digest requires a path name")); YYERROR; } - if (c == NULL) { - /* lazy-allocate sudo_command for ALL */ - if ((c = new_command(NULL, NULL)) == NULL) { - sudoerserror(N_("unable to allocate memory")); - YYERROR; - } - (yyvsp[0].member)->name = (char *)c; - } parser_leak_remove(LEAK_DIGEST, (yyvsp[-1].digest)); HLTQ_TO_TAILQ(&c->digests, (yyvsp[-1].digest), entries); (yyval.member) = (yyvsp[0].member); @@ -2253,7 +2253,7 @@ yyreduce: break; case 53: /* opcmnd: cmnd */ -#line 630 "gram.y" +#line 623 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; @@ -2262,7 +2262,7 @@ yyreduce: break; case 54: /* opcmnd: '!' cmnd */ -#line 634 "gram.y" +#line 627 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; @@ -2271,7 +2271,7 @@ yyreduce: break; case 55: /* chdirspec: CWD '=' WORD */ -#line 640 "gram.y" +#line 633 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2286,7 +2286,7 @@ yyreduce: break; case 56: /* chrootspec: CHROOT '=' WORD */ -#line 652 "gram.y" +#line 645 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2301,7 +2301,7 @@ yyreduce: break; case 57: /* timeoutspec: CMND_TIMEOUT '=' WORD */ -#line 664 "gram.y" +#line 657 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2309,7 +2309,7 @@ yyreduce: break; case 58: /* notbeforespec: NOTBEFORE '=' WORD */ -#line 669 "gram.y" +#line 662 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2317,7 +2317,7 @@ yyreduce: break; case 59: /* notafterspec: NOTAFTER '=' WORD */ -#line 673 "gram.y" +#line 666 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2325,7 +2325,7 @@ yyreduce: break; case 60: /* rolespec: ROLE '=' WORD */ -#line 678 "gram.y" +#line 671 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2333,7 +2333,7 @@ yyreduce: break; case 61: /* typespec: TYPE '=' WORD */ -#line 683 "gram.y" +#line 676 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2341,7 +2341,7 @@ yyreduce: break; case 62: /* privsspec: PRIVS '=' WORD */ -#line 688 "gram.y" +#line 681 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2349,7 +2349,7 @@ yyreduce: break; case 63: /* limitprivsspec: LIMITPRIVS '=' WORD */ -#line 692 "gram.y" +#line 685 "gram.y" { (yyval.string) = (yyvsp[0].string); } @@ -2357,7 +2357,7 @@ yyreduce: break; case 64: /* runasspec: %empty */ -#line 697 "gram.y" +#line 690 "gram.y" { (yyval.runas) = NULL; } @@ -2365,7 +2365,7 @@ yyreduce: break; case 65: /* runasspec: '(' runaslist ')' */ -#line 700 "gram.y" +#line 693 "gram.y" { (yyval.runas) = (yyvsp[-1].runas); } @@ -2373,7 +2373,7 @@ yyreduce: break; case 66: /* runaslist: %empty */ -#line 705 "gram.y" +#line 698 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { @@ -2394,7 +2394,7 @@ yyreduce: break; case 67: /* runaslist: userlist */ -#line 721 "gram.y" +#line 714 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2410,7 +2410,7 @@ yyreduce: break; case 68: /* runaslist: userlist ':' grouplist */ -#line 732 "gram.y" +#line 725 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2427,7 +2427,7 @@ yyreduce: break; case 69: /* runaslist: ':' grouplist */ -#line 744 "gram.y" +#line 737 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2443,7 +2443,7 @@ yyreduce: break; case 70: /* runaslist: ':' */ -#line 755 "gram.y" +#line 748 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { @@ -2464,67 +2464,67 @@ yyreduce: break; case 71: /* reserved_word: ALL */ -#line 773 "gram.y" +#line 766 "gram.y" { (yyval.string) = "ALL"; } #line 2464 "gram.c" break; case 72: /* reserved_word: CHROOT */ -#line 774 "gram.y" +#line 767 "gram.y" { (yyval.string) = "CHROOT"; } #line 2470 "gram.c" break; case 73: /* reserved_word: CWD */ -#line 775 "gram.y" +#line 768 "gram.y" { (yyval.string) = "CWD"; } #line 2476 "gram.c" break; case 74: /* reserved_word: CMND_TIMEOUT */ -#line 776 "gram.y" +#line 769 "gram.y" { (yyval.string) = "CMND_TIMEOUT"; } #line 2482 "gram.c" break; case 75: /* reserved_word: NOTBEFORE */ -#line 777 "gram.y" +#line 770 "gram.y" { (yyval.string) = "NOTBEFORE"; } #line 2488 "gram.c" break; case 76: /* reserved_word: NOTAFTER */ -#line 778 "gram.y" +#line 771 "gram.y" { (yyval.string) = "NOTAFTER"; } #line 2494 "gram.c" break; case 77: /* reserved_word: ROLE */ -#line 779 "gram.y" +#line 772 "gram.y" { (yyval.string) = "ROLE"; } #line 2500 "gram.c" break; case 78: /* reserved_word: TYPE */ -#line 780 "gram.y" +#line 773 "gram.y" { (yyval.string) = "TYPE"; } #line 2506 "gram.c" break; case 79: /* reserved_word: PRIVS */ -#line 781 "gram.y" +#line 774 "gram.y" { (yyval.string) = "PRIVS"; } #line 2512 "gram.c" break; case 80: /* reserved_word: LIMITPRIVS */ -#line 782 "gram.y" +#line 775 "gram.y" { (yyval.string) = "LIMITPRIVS"; } #line 2518 "gram.c" break; case 81: /* reserved_alias: reserved_word */ -#line 785 "gram.y" +#line 778 "gram.y" { sudoerserrorf(U_("syntax error, reserved word %s used as an alias name"), (yyvsp[0].string)); YYERROR; @@ -2533,7 +2533,7 @@ yyreduce: break; case 82: /* options: %empty */ -#line 791 "gram.y" +#line 784 "gram.y" { init_options(&(yyval.options)); } @@ -2541,7 +2541,7 @@ yyreduce: break; case 83: /* options: options chdirspec */ -#line 794 "gram.y" +#line 787 "gram.y" { parser_leak_remove(LEAK_PTR, (yyval.options).runcwd); free((yyval.options).runcwd); @@ -2551,7 +2551,7 @@ yyreduce: break; case 84: /* options: options chrootspec */ -#line 799 "gram.y" +#line 792 "gram.y" { parser_leak_remove(LEAK_PTR, (yyval.options).runchroot); free((yyval.options).runchroot); @@ -2561,7 +2561,7 @@ yyreduce: break; case 85: /* options: options notbeforespec */ -#line 804 "gram.y" +#line 797 "gram.y" { (yyval.options).notbefore = parse_gentime((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2575,7 +2575,7 @@ yyreduce: break; case 86: /* options: options notafterspec */ -#line 813 "gram.y" +#line 806 "gram.y" { (yyval.options).notafter = parse_gentime((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2589,7 +2589,7 @@ yyreduce: break; case 87: /* options: options timeoutspec */ -#line 822 "gram.y" +#line 815 "gram.y" { (yyval.options).timeout = parse_timeout((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2606,7 +2606,7 @@ yyreduce: break; case 88: /* options: options rolespec */ -#line 834 "gram.y" +#line 827 "gram.y" { #ifdef HAVE_SELINUX parser_leak_remove(LEAK_PTR, (yyval.options).role); @@ -2618,7 +2618,7 @@ yyreduce: break; case 89: /* options: options typespec */ -#line 841 "gram.y" +#line 834 "gram.y" { #ifdef HAVE_SELINUX parser_leak_remove(LEAK_PTR, (yyval.options).type); @@ -2630,7 +2630,7 @@ yyreduce: break; case 90: /* options: options privsspec */ -#line 848 "gram.y" +#line 841 "gram.y" { #ifdef HAVE_PRIV_SET parser_leak_remove(LEAK_PTR, (yyval.options).privs); @@ -2642,7 +2642,7 @@ yyreduce: break; case 91: /* options: options limitprivsspec */ -#line 855 "gram.y" +#line 848 "gram.y" { #ifdef HAVE_PRIV_SET parser_leak_remove(LEAK_PTR, (yyval.options).limitprivs); @@ -2654,7 +2654,7 @@ yyreduce: break; case 92: /* cmndtag: %empty */ -#line 864 "gram.y" +#line 857 "gram.y" { TAGS_INIT(&(yyval.tag)); } @@ -2662,7 +2662,7 @@ yyreduce: break; case 93: /* cmndtag: cmndtag NOPASSWD */ -#line 867 "gram.y" +#line 860 "gram.y" { (yyval.tag).nopasswd = true; } @@ -2670,7 +2670,7 @@ yyreduce: break; case 94: /* cmndtag: cmndtag PASSWD */ -#line 870 "gram.y" +#line 863 "gram.y" { (yyval.tag).nopasswd = false; } @@ -2678,7 +2678,7 @@ yyreduce: break; case 95: /* cmndtag: cmndtag NOEXEC */ -#line 873 "gram.y" +#line 866 "gram.y" { (yyval.tag).noexec = true; } @@ -2686,108 +2686,130 @@ yyreduce: break; case 96: /* cmndtag: cmndtag EXEC */ -#line 876 "gram.y" +#line 869 "gram.y" { (yyval.tag).noexec = false; } #line 2688 "gram.c" break; - case 97: /* cmndtag: cmndtag SETENV */ -#line 879 "gram.y" + case 97: /* cmndtag: cmndtag INTERCEPT */ +#line 872 "gram.y" + { + (yyval.tag).intercept = true; + } +#line 2696 "gram.c" + break; + + case 98: /* cmndtag: cmndtag NOINTERCEPT */ +#line 875 "gram.y" + { + (yyval.tag).intercept = false; + } +#line 2704 "gram.c" + break; + + case 99: /* cmndtag: cmndtag SETENV */ +#line 878 "gram.y" { (yyval.tag).setenv = true; } -#line 2696 "gram.c" +#line 2712 "gram.c" break; - case 98: /* cmndtag: cmndtag NOSETENV */ -#line 882 "gram.y" + case 100: /* cmndtag: cmndtag NOSETENV */ +#line 881 "gram.y" { (yyval.tag).setenv = false; } -#line 2704 "gram.c" +#line 2720 "gram.c" break; - case 99: /* cmndtag: cmndtag LOG_INPUT */ -#line 885 "gram.y" + case 101: /* cmndtag: cmndtag LOG_INPUT */ +#line 884 "gram.y" { (yyval.tag).log_input = true; } -#line 2712 "gram.c" +#line 2728 "gram.c" break; - case 100: /* cmndtag: cmndtag NOLOG_INPUT */ -#line 888 "gram.y" + case 102: /* cmndtag: cmndtag NOLOG_INPUT */ +#line 887 "gram.y" { (yyval.tag).log_input = false; } -#line 2720 "gram.c" +#line 2736 "gram.c" break; - case 101: /* cmndtag: cmndtag LOG_OUTPUT */ -#line 891 "gram.y" + case 103: /* cmndtag: cmndtag LOG_OUTPUT */ +#line 890 "gram.y" { (yyval.tag).log_output = true; } -#line 2728 "gram.c" +#line 2744 "gram.c" break; - case 102: /* cmndtag: cmndtag NOLOG_OUTPUT */ -#line 894 "gram.y" + case 104: /* cmndtag: cmndtag NOLOG_OUTPUT */ +#line 893 "gram.y" { (yyval.tag).log_output = false; } -#line 2736 "gram.c" +#line 2752 "gram.c" break; - case 103: /* cmndtag: cmndtag FOLLOWLNK */ -#line 897 "gram.y" + case 105: /* cmndtag: cmndtag FOLLOWLNK */ +#line 896 "gram.y" { (yyval.tag).follow = true; } -#line 2744 "gram.c" +#line 2760 "gram.c" break; - case 104: /* cmndtag: cmndtag NOFOLLOWLNK */ -#line 900 "gram.y" + case 106: /* cmndtag: cmndtag NOFOLLOWLNK */ +#line 899 "gram.y" { (yyval.tag).follow = false; } -#line 2752 "gram.c" +#line 2768 "gram.c" break; - case 105: /* cmndtag: cmndtag MAIL */ -#line 903 "gram.y" + case 107: /* cmndtag: cmndtag MAIL */ +#line 902 "gram.y" { (yyval.tag).send_mail = true; } -#line 2760 "gram.c" +#line 2776 "gram.c" break; - case 106: /* cmndtag: cmndtag NOMAIL */ -#line 906 "gram.y" + case 108: /* cmndtag: cmndtag NOMAIL */ +#line 905 "gram.y" { (yyval.tag).send_mail = false; } -#line 2768 "gram.c" +#line 2784 "gram.c" break; - case 107: /* cmnd: ALL */ -#line 911 "gram.y" + case 109: /* cmnd: ALL */ +#line 910 "gram.y" { - (yyval.member) = new_member(NULL, ALL); + struct sudo_command *c; + + if ((c = new_command(NULL, NULL)) == NULL) { + sudoerserror(N_("unable to allocate memory")); + YYERROR; + } + (yyval.member) = new_member((char *)c, ALL); if ((yyval.member) == NULL) { sudoerserror(N_("unable to allocate memory")); YYERROR; } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2781 "gram.c" +#line 2803 "gram.c" break; - case 108: /* cmnd: ALIAS */ -#line 919 "gram.y" + case 110: /* cmnd: ALIAS */ +#line 924 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2797,11 +2819,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2795 "gram.c" +#line 2817 "gram.c" break; - case 109: /* cmnd: COMMAND */ -#line 928 "gram.y" + case 111: /* cmnd: COMMAND */ +#line 933 "gram.y" { struct sudo_command *c; @@ -2819,20 +2841,20 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].command).args); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2817 "gram.c" +#line 2839 "gram.c" break; - case 112: /* $@1: %empty */ -#line 951 "gram.y" + case 114: /* $@1: %empty */ +#line 956 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2826 "gram.c" +#line 2848 "gram.c" break; - case 113: /* hostalias: ALIAS $@1 '=' hostlist */ -#line 954 "gram.y" + case 115: /* hostalias: ALIAS $@1 '=' hostlist */ +#line 959 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), HOSTALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2842,30 +2864,30 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2840 "gram.c" +#line 2862 "gram.c" break; - case 116: /* hostlist: hostlist ',' ophost */ -#line 967 "gram.y" + case 118: /* hostlist: hostlist ',' ophost */ +#line 972 "gram.y" { parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2850 "gram.c" +#line 2872 "gram.c" break; - case 119: /* $@2: %empty */ -#line 978 "gram.y" + case 121: /* $@2: %empty */ +#line 983 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2859 "gram.c" +#line 2881 "gram.c" break; - case 120: /* cmndalias: ALIAS $@2 '=' cmndlist */ -#line 981 "gram.y" + case 122: /* cmndalias: ALIAS $@2 '=' cmndlist */ +#line 986 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), CMNDALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2875,30 +2897,30 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2873 "gram.c" +#line 2895 "gram.c" break; - case 123: /* cmndlist: cmndlist ',' digcmnd */ -#line 994 "gram.y" + case 125: /* cmndlist: cmndlist ',' digcmnd */ +#line 999 "gram.y" { parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2883 "gram.c" +#line 2905 "gram.c" break; - case 126: /* $@3: %empty */ -#line 1005 "gram.y" + case 128: /* $@3: %empty */ +#line 1010 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2892 "gram.c" +#line 2914 "gram.c" break; - case 127: /* runasalias: ALIAS $@3 '=' userlist */ -#line 1008 "gram.y" + case 129: /* runasalias: ALIAS $@3 '=' userlist */ +#line 1013 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), RUNASALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2908,20 +2930,20 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2906 "gram.c" +#line 2928 "gram.c" break; - case 131: /* $@4: %empty */ -#line 1024 "gram.y" + case 133: /* $@4: %empty */ +#line 1029 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2915 "gram.c" +#line 2937 "gram.c" break; - case 132: /* useralias: ALIAS $@4 '=' userlist */ -#line 1027 "gram.y" + case 134: /* useralias: ALIAS $@4 '=' userlist */ +#line 1032 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), USERALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2931,39 +2953,39 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2929 "gram.c" +#line 2951 "gram.c" break; - case 135: /* userlist: userlist ',' opuser */ -#line 1040 "gram.y" + case 137: /* userlist: userlist ',' opuser */ +#line 1045 "gram.y" { parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2939 "gram.c" +#line 2961 "gram.c" break; - case 136: /* opuser: user */ -#line 1047 "gram.y" + case 138: /* opuser: user */ +#line 1052 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 2948 "gram.c" +#line 2970 "gram.c" break; - case 137: /* opuser: '!' user */ -#line 1051 "gram.y" + case 139: /* opuser: '!' user */ +#line 1056 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 2957 "gram.c" +#line 2979 "gram.c" break; - case 138: /* user: ALIAS */ -#line 1057 "gram.y" + case 140: /* user: ALIAS */ +#line 1062 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2973,11 +2995,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2971 "gram.c" +#line 2993 "gram.c" break; - case 139: /* user: ALL */ -#line 1066 "gram.y" + case 141: /* user: ALL */ +#line 1071 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -2986,11 +3008,11 @@ yyreduce: } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2984 "gram.c" +#line 3006 "gram.c" break; - case 140: /* user: NETGROUP */ -#line 1074 "gram.y" + case 142: /* user: NETGROUP */ +#line 1079 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -3000,11 +3022,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2998 "gram.c" +#line 3020 "gram.c" break; - case 141: /* user: USERGROUP */ -#line 1083 "gram.y" + case 143: /* user: USERGROUP */ +#line 1088 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), USERGROUP); if ((yyval.member) == NULL) { @@ -3014,11 +3036,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3012 "gram.c" +#line 3034 "gram.c" break; - case 142: /* user: WORD */ -#line 1092 "gram.y" + case 144: /* user: WORD */ +#line 1097 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -3028,39 +3050,39 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3026 "gram.c" +#line 3048 "gram.c" break; - case 144: /* grouplist: grouplist ',' opgroup */ -#line 1104 "gram.y" + case 146: /* grouplist: grouplist ',' opgroup */ +#line 1109 "gram.y" { parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 3036 "gram.c" +#line 3058 "gram.c" break; - case 145: /* opgroup: group */ -#line 1111 "gram.y" + case 147: /* opgroup: group */ +#line 1116 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 3045 "gram.c" +#line 3067 "gram.c" break; - case 146: /* opgroup: '!' group */ -#line 1115 "gram.y" + case 148: /* opgroup: '!' group */ +#line 1120 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 3054 "gram.c" +#line 3076 "gram.c" break; - case 147: /* group: ALIAS */ -#line 1121 "gram.y" + case 149: /* group: ALIAS */ +#line 1126 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -3070,11 +3092,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3068 "gram.c" +#line 3090 "gram.c" break; - case 148: /* group: ALL */ -#line 1130 "gram.y" + case 150: /* group: ALL */ +#line 1135 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -3083,11 +3105,11 @@ yyreduce: } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3081 "gram.c" +#line 3103 "gram.c" break; - case 149: /* group: WORD */ -#line 1138 "gram.y" + case 151: /* group: WORD */ +#line 1143 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -3097,11 +3119,11 @@ yyreduce: parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3095 "gram.c" +#line 3117 "gram.c" break; -#line 3099 "gram.c" +#line 3121 "gram.c" default: break; } @@ -3295,7 +3317,7 @@ yyreturn: return yyresult; } -#line 1148 "gram.y" +#line 1153 "gram.y" /* Like yyerror() but takes a printf-style format string. */ void diff --git a/plugins/sudoers/gram.h b/plugins/sudoers/gram.h index e862e119a..ad58cf3d9 100644 --- a/plugins/sudoers/gram.h +++ b/plugins/sudoers/gram.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.5. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C @@ -16,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 @@ -83,27 +83,29 @@ extern int sudoersdebug; NOMAIL = 284, /* NOMAIL */ FOLLOWLNK = 285, /* FOLLOWLNK */ NOFOLLOWLNK = 286, /* NOFOLLOWLNK */ - ALL = 287, /* ALL */ - HOSTALIAS = 288, /* HOSTALIAS */ - CMNDALIAS = 289, /* CMNDALIAS */ - USERALIAS = 290, /* USERALIAS */ - RUNASALIAS = 291, /* RUNASALIAS */ - ERROR = 292, /* ERROR */ - NOMATCH = 293, /* NOMATCH */ - CHROOT = 294, /* CHROOT */ - CWD = 295, /* CWD */ - TYPE = 296, /* TYPE */ - ROLE = 297, /* ROLE */ - PRIVS = 298, /* PRIVS */ - LIMITPRIVS = 299, /* LIMITPRIVS */ - CMND_TIMEOUT = 300, /* CMND_TIMEOUT */ - NOTBEFORE = 301, /* NOTBEFORE */ - NOTAFTER = 302, /* NOTAFTER */ - MYSELF = 303, /* MYSELF */ - SHA224_TOK = 304, /* SHA224_TOK */ - SHA256_TOK = 305, /* SHA256_TOK */ - SHA384_TOK = 306, /* SHA384_TOK */ - SHA512_TOK = 307 /* SHA512_TOK */ + INTERCEPT = 287, /* INTERCEPT */ + NOINTERCEPT = 288, /* NOINTERCEPT */ + ALL = 289, /* ALL */ + HOSTALIAS = 290, /* HOSTALIAS */ + CMNDALIAS = 291, /* CMNDALIAS */ + USERALIAS = 292, /* USERALIAS */ + RUNASALIAS = 293, /* RUNASALIAS */ + ERROR = 294, /* ERROR */ + NOMATCH = 295, /* NOMATCH */ + CHROOT = 296, /* CHROOT */ + CWD = 297, /* CWD */ + TYPE = 298, /* TYPE */ + ROLE = 299, /* ROLE */ + PRIVS = 300, /* PRIVS */ + LIMITPRIVS = 301, /* LIMITPRIVS */ + CMND_TIMEOUT = 302, /* CMND_TIMEOUT */ + NOTBEFORE = 303, /* NOTBEFORE */ + NOTAFTER = 304, /* NOTAFTER */ + MYSELF = 305, /* MYSELF */ + SHA224_TOK = 306, /* SHA224_TOK */ + SHA256_TOK = 307, /* SHA256_TOK */ + SHA384_TOK = 308, /* SHA384_TOK */ + SHA512_TOK = 309 /* SHA512_TOK */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -141,33 +143,35 @@ extern int sudoersdebug; #define NOMAIL 284 #define FOLLOWLNK 285 #define NOFOLLOWLNK 286 -#define ALL 287 -#define HOSTALIAS 288 -#define CMNDALIAS 289 -#define USERALIAS 290 -#define RUNASALIAS 291 -#define ERROR 292 -#define NOMATCH 293 -#define CHROOT 294 -#define CWD 295 -#define TYPE 296 -#define ROLE 297 -#define PRIVS 298 -#define LIMITPRIVS 299 -#define CMND_TIMEOUT 300 -#define NOTBEFORE 301 -#define NOTAFTER 302 -#define MYSELF 303 -#define SHA224_TOK 304 -#define SHA256_TOK 305 -#define SHA384_TOK 306 -#define SHA512_TOK 307 +#define INTERCEPT 287 +#define NOINTERCEPT 288 +#define ALL 289 +#define HOSTALIAS 290 +#define CMNDALIAS 291 +#define USERALIAS 292 +#define RUNASALIAS 293 +#define ERROR 294 +#define NOMATCH 295 +#define CHROOT 296 +#define CWD 297 +#define TYPE 298 +#define ROLE 299 +#define PRIVS 300 +#define LIMITPRIVS 301 +#define CMND_TIMEOUT 302 +#define NOTBEFORE 303 +#define NOTAFTER 304 +#define MYSELF 305 +#define SHA224_TOK 306 +#define SHA256_TOK 307 +#define SHA384_TOK 308 +#define SHA512_TOK 309 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 88 "gram.y" +#line 85 "gram.y" struct cmndspec *cmndspec; struct defaults *defaults; @@ -181,7 +185,7 @@ union YYSTYPE char *string; int tok; -#line 185 "y.tab.h" +#line 189 "y.tab.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/plugins/sudoers/gram.y b/plugins/sudoers/gram.y index 1c05a48c4..112efd3fb 100644 --- a/plugins/sudoers/gram.y +++ b/plugins/sudoers/gram.y @@ -2,7 +2,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2020 + * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2021 * Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any @@ -29,9 +29,6 @@ #include <stddef.h> #include <string.h> #include <unistd.h> -#if defined(YYBISON) && defined(HAVE_ALLOCA_H) && !defined(__GNUC__) -# include <alloca.h> -#endif /* YYBISON && HAVE_ALLOCA_H && !__GNUC__ */ #include <errno.h> #include "sudoers.h" @@ -129,6 +126,8 @@ static void alias_error(const char *name, int errnum); %token <tok> NOMAIL /* don't mail log message */ %token <tok> FOLLOWLNK /* follow symbolic links */ %token <tok> NOFOLLOWLNK /* don't follow symbolic links */ +%token <tok> INTERCEPT /* intercept children of command */ +%token <tok> NOINTERCEPT /* disable intercepting of children */ %token <tok> ALL /* ALL keyword */ %token <tok> HOSTALIAS /* Host_Alias keyword */ %token <tok> CMNDALIAS /* Cmnd_Alias keyword */ @@ -468,6 +467,8 @@ cmndspeclist : cmndspec $3->tags.nopasswd = prev->tags.nopasswd; if ($3->tags.noexec == UNSPEC) $3->tags.noexec = prev->tags.noexec; + if ($3->tags.intercept == UNSPEC) + $3->tags.intercept = prev->tags.intercept; if ($3->tags.setenv == UNSPEC && prev->tags.setenv != IMPLIED) $3->tags.setenv = prev->tags.setenv; @@ -613,14 +614,6 @@ digcmnd : opcmnd { sudoerserror(N_("a digest requires a path name")); YYERROR; } - if (c == NULL) { - /* lazy-allocate sudo_command for ALL */ - if ((c = new_command(NULL, NULL)) == NULL) { - sudoerserror(N_("unable to allocate memory")); - YYERROR; - } - $2->name = (char *)c; - } parser_leak_remove(LEAK_DIGEST, $1); HLTQ_TO_TAILQ(&c->digests, $1, entries); $$ = $2; @@ -876,6 +869,12 @@ cmndtag : /* empty */ { | cmndtag EXEC { $$.noexec = false; } + | cmndtag INTERCEPT { + $$.intercept = true; + } + | cmndtag NOINTERCEPT { + $$.intercept = false; + } | cmndtag SETENV { $$.setenv = true; } @@ -909,7 +908,13 @@ cmndtag : /* empty */ { ; cmnd : ALL { - $$ = new_member(NULL, ALL); + struct sudo_command *c; + + if ((c = new_command(NULL, NULL)) == NULL) { + sudoerserror(N_("unable to allocate memory")); + YYERROR; + } + $$ = new_member((char *)c, ALL); if ($$ == NULL) { sudoerserror(N_("unable to allocate memory")); YYERROR; diff --git a/plugins/sudoers/iolog.c b/plugins/sudoers/iolog.c index 252317717..4c4ccc6d2 100644 --- a/plugins/sudoers/iolog.c +++ b/plugins/sudoers/iolog.c @@ -64,9 +64,6 @@ static struct sudoers_io_operations { const char **errstr); } io_operations; -#ifdef SUDOERS_LOG_CLIENT -static struct client_closure *client_closure; -#endif static struct log_details iolog_details; static bool warned = false; static int iolog_dir_fd = -1; @@ -115,7 +112,7 @@ cb_iolog_user(const union sudo_defs_val *sd_un) iolog_set_owner(ROOT_UID, ROOT_GID); } else { if ((pw = sudo_getpwnam(name)) == NULL) { - log_warningx(SLOG_SEND_MAIL, N_("unknown user: %s"), name); + log_warningx(SLOG_SEND_MAIL, N_("unknown user %s"), name); debug_return_bool(false); } iolog_set_owner(pw->pw_uid, pw->pw_gid); @@ -140,7 +137,7 @@ cb_iolog_group(const union sudo_defs_val *sd_un) iolog_set_gid(ROOT_GID); } else { if ((gr = sudo_getgrnam(name)) == NULL) { - log_warningx(SLOG_SEND_MAIL, N_("unknown group: %s"), name); + log_warningx(SLOG_SEND_MAIL, N_("unknown group %s"), name); debug_return_bool(false); } iolog_set_gid(gr->gr_gid); diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c index 1ecfcf62d..ef65db555 100644 --- a/plugins/sudoers/ldap.c +++ b/plugins/sudoers/ldap.c @@ -449,7 +449,7 @@ sudo_ldap_parse_options(LDAP *ld, LDAPMessage *entry, struct defaults_list *defs int op; op = sudo_ldap_parse_option((*p)->bv_val, &var, &val); - if (!sudo_ldap_add_default(var, val, op, source, defs)) { + if (!append_default(var, val, op, source, defs)) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } diff --git a/plugins/sudoers/ldap_util.c b/plugins/sudoers/ldap_util.c index 7f1de0a26..e9ee98e8f 100644 --- a/plugins/sudoers/ldap_util.c +++ b/plugins/sudoers/ldap_util.c @@ -242,39 +242,6 @@ oom: debug_return_ptr(NULL); } -bool -sudo_ldap_add_default(const char *var, const char *val, int op, - char *source, struct defaults_list *defs) -{ - struct defaults *def; - debug_decl(sudo_ldap_add_default, SUDOERS_DEBUG_LDAP); - - if ((def = calloc(1, sizeof(*def))) == NULL) - goto oom; - - def->type = DEFAULTS; - def->op = op; - if ((def->var = strdup(var)) == NULL) { - goto oom; - } - if (val != NULL) { - if ((def->val = strdup(val)) == NULL) - goto oom; - } - def->file = source; - sudo_rcstr_addref(source); - TAILQ_INSERT_TAIL(defs, def, entries); - debug_return_bool(true); - -oom: - if (def != NULL) { - free(def->var); - free(def->val); - free(def); - } - debug_return_bool(false); -} - /* * If a digest prefix is present, add it to struct command_digest_list * and update cmnd to point to the command after the digest. @@ -583,7 +550,7 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers, break; #endif /* HAVE_PRIV_SET */ } else if (store_options) { - if (!sudo_ldap_add_default(var, val, op, source, + if (!append_default(var, val, op, source, &priv->defaults)) { break; } diff --git a/plugins/sudoers/log_client.c b/plugins/sudoers/log_client.c index c56e54606..fab3443a5 100644 --- a/plugins/sudoers/log_client.c +++ b/plugins/sudoers/log_client.c @@ -63,6 +63,9 @@ #include "hostcheck.h" #include "log_client.h" +/* Shared between iolog.c and audit.c */ +struct client_closure *client_closure; + /* Server callback may redirect to client callback for TLS. */ static void client_msg_cb(int fd, int what, void *v); static void server_msg_cb(int fd, int what, void *v); @@ -491,6 +494,7 @@ connect_server(const char *host, const char *port, bool tls, default: cause = "ai_family"; save_errno = EAFNOSUPPORT; + shutdown(sock, SHUT_RDWR); close(sock); errno = save_errno; sock = -1; @@ -500,6 +504,7 @@ connect_server(const char *host, const char *port, bool tls, sizeof(closure->server_ip)) == NULL) { cause = "inet_ntop"; save_errno = errno; + shutdown(sock, SHUT_RDWR); close(sock); errno = save_errno; sock = -1; @@ -509,6 +514,7 @@ connect_server(const char *host, const char *port, bool tls, if ((closure->server_name = strdup(host)) == NULL) { cause = "strdup"; save_errno = errno; + shutdown(sock, SHUT_RDWR); close(sock); errno = save_errno; sock = -1; @@ -520,6 +526,7 @@ connect_server(const char *host, const char *port, bool tls, if (!tls_init(closure) || !SSL_set_fd(closure->ssl, sock)) { cause = U_("TLS initialization was unsuccessful"); save_errno = errno; + shutdown(sock, SHUT_RDWR); close(sock); errno = save_errno; sock = -1; @@ -529,6 +536,7 @@ connect_server(const char *host, const char *port, bool tls, if (!tls_timed_connect(closure->ssl, host, port, timeout)) { cause = U_("TLS handshake was unsuccessful"); save_errno = errno; + shutdown(sock, SHUT_RDWR); close(sock); errno = save_errno; sock = -1; @@ -624,14 +632,17 @@ client_closure_free(struct client_closure *closure) #if defined(HAVE_OPENSSL) /* Shut down the TLS connection cleanly and free SSL data. */ if (closure->ssl != NULL) { - SSL_shutdown(closure->ssl); + if (SSL_shutdown(closure->ssl) == 0) + SSL_shutdown(closure->ssl); SSL_free(closure->ssl); } SSL_CTX_free(closure->ssl_ctx); #endif - if (closure->sock != -1) + if (closure->sock != -1) { + shutdown(closure->sock, SHUT_RDWR); close(closure->sock); + } free(closure->server_name); while ((buf = TAILQ_FIRST(&closure->write_bufs)) != NULL) { TAILQ_REMOVE(&closure->write_bufs, buf, entries); @@ -698,6 +709,9 @@ fmt_client_message(struct client_closure *closure, ClientMessage *msg) msg_len = htonl((uint32_t)len); len += sizeof(msg_len); + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: new ClientMessage, %zu bytes", + __func__, len); + /* Resize buffer as needed. */ if (len > buf->size) { free(buf->data); @@ -775,10 +789,9 @@ free_info_messages(InfoMessage **info_msgs, size_t n) } static InfoMessage ** -fmt_info_messages(struct client_closure *closure, size_t *n_info_msgs) +fmt_info_messages(struct client_closure *closure, struct eventlog *evlog, + size_t *n_info_msgs) { - struct log_details *details = closure->log_details; - struct eventlog *evlog = details->evlog; InfoMessage__StringList *runargv = NULL; InfoMessage__StringList *runenv = NULL; InfoMessage **info_msgs = NULL; @@ -945,8 +958,8 @@ bad: * Appends the wire format message to the closure's write queue. * Returns true on success, false on failure. */ -static bool -fmt_accept_message(struct client_closure *closure) +bool +fmt_accept_message(struct client_closure *closure, struct eventlog *evlog) { ClientMessage client_msg = CLIENT_MESSAGE__INIT; AcceptMessage accept_msg = ACCEPT_MESSAGE__INIT; @@ -969,7 +982,8 @@ fmt_accept_message(struct client_closure *closure) /* Client will send IoBuffer messages. */ accept_msg.expect_iobufs = closure->log_io; - accept_msg.info_msgs = fmt_info_messages(closure, &accept_msg.n_info_msgs); + accept_msg.info_msgs = fmt_info_messages(closure, evlog, + &accept_msg.n_info_msgs); if (accept_msg.info_msgs == NULL) goto done; @@ -993,8 +1007,8 @@ done: * Appends the wire format message to the closure's write queue. * Returns true on success, false on failure. */ -static bool -fmt_reject_message(struct client_closure *closure) +bool +fmt_reject_message(struct client_closure *closure, struct eventlog *evlog) { ClientMessage client_msg = CLIENT_MESSAGE__INIT; RejectMessage reject_msg = REJECT_MESSAGE__INIT; @@ -1017,7 +1031,8 @@ fmt_reject_message(struct client_closure *closure) /* Reason for rejecting the request. */ reject_msg.reason = (char *)closure->reason; - reject_msg.info_msgs = fmt_info_messages(closure, &reject_msg.n_info_msgs); + reject_msg.info_msgs = fmt_info_messages(closure, evlog, + &reject_msg.n_info_msgs); if (reject_msg.info_msgs == NULL) goto done; @@ -1042,7 +1057,7 @@ done: * Returns true on success, false on failure. */ static bool -fmt_alert_message(struct client_closure *closure) +fmt_alert_message(struct client_closure *closure, struct eventlog *evlog) { ClientMessage client_msg = CLIENT_MESSAGE__INIT; AlertMessage alert_msg = ALERT_MESSAGE__INIT; @@ -1065,7 +1080,8 @@ fmt_alert_message(struct client_closure *closure) /* Reason for the alert. */ alert_msg.reason = (char *)closure->reason; - alert_msg.info_msgs = fmt_info_messages(closure, &alert_msg.n_info_msgs); + alert_msg.info_msgs = fmt_info_messages(closure, evlog, + &alert_msg.n_info_msgs); if (alert_msg.info_msgs == NULL) goto done; @@ -1100,7 +1116,7 @@ fmt_initial_message(struct client_closure *closure) switch (closure->state) { case SEND_ACCEPT: /* Format and schedule AcceptMessage. */ - if ((ret = fmt_accept_message(closure))) { + if ((ret = fmt_accept_message(closure, closure->log_details->evlog))) { /* * Move read/write events back to main sudo event loop. * Server messages may occur at any time, so no timeout. @@ -1116,11 +1132,11 @@ fmt_initial_message(struct client_closure *closure) break; case SEND_REJECT: /* Format and schedule RejectMessage. */ - ret = fmt_reject_message(closure); + ret = fmt_reject_message(closure, closure->log_details->evlog); break; case SEND_ALERT: /* Format and schedule AlertMessage. */ - ret = fmt_alert_message(closure); + ret = fmt_alert_message(closure, closure->log_details->evlog); break; default: sudo_warnx(U_("%s: unexpected state %d"), __func__, closure->state); @@ -1490,6 +1506,9 @@ handle_server_hello(ServerHello *msg, struct client_closure *closure) __func__, n + 1, msg->servers[n]); } + /* Does the server support logging sub-commands in a session? */ + closure->subcommands = msg->subcommands; + debug_return_bool(true); } diff --git a/plugins/sudoers/log_client.h b/plugins/sudoers/log_client.h index cb8a7a619..b956bd382 100644 --- a/plugins/sudoers/log_client.h +++ b/plugins/sudoers/log_client.h @@ -94,6 +94,7 @@ struct client_closure { SSL *ssl; bool ssl_initialized; #endif /* HAVE_OPENSSL */ + bool subcommands; enum client_state state; enum client_state initial_state; /* XXX - bad name */ struct connection_buffer_list write_bufs; @@ -113,6 +114,8 @@ struct client_closure { struct client_closure *log_server_open(struct log_details *details, struct timespec *now, bool log_io, enum client_state initial_state, const char *reason, struct sudo_plugin_event * (*event_alloc)(void)); bool log_server_close(struct client_closure *closure, int exit_status, int error); bool fmt_client_message(struct client_closure *closure, ClientMessage *msg); +bool fmt_accept_message(struct client_closure *closure, struct eventlog *evlog); +bool fmt_reject_message(struct client_closure *closure, struct eventlog *evlog); bool fmt_exit_message(struct client_closure *closure, int exit_status, int error); bool fmt_io_buf(struct client_closure *closure, int type, const char *buf, unsigned int len, struct timespec *delay); bool fmt_suspend(struct client_closure *closure, const char *signame, struct timespec *delay); @@ -120,5 +123,6 @@ bool fmt_winsize(struct client_closure *closure, unsigned int lines, unsigned in bool log_server_connect(struct client_closure *closure); void client_closure_free(struct client_closure *closure); bool read_server_hello(struct client_closure *closure); +extern struct client_closure *client_closure; #endif /* SUDOERS_LOG_CLIENT_H */ diff --git a/plugins/sudoers/logging.c b/plugins/sudoers/logging.c index 06efbf576..b410113ff 100644 --- a/plugins/sudoers/logging.c +++ b/plugins/sudoers/logging.c @@ -47,6 +47,7 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> +#include <signal.h> #include <syslog.h> #ifndef HAVE_GETADDRINFO # include "compat/getaddrinfo.h" @@ -120,27 +121,45 @@ bool log_server_reject(struct eventlog *evlog, const char *message, struct sudo_plugin_event * (*event_alloc)(void)) { - struct client_closure *client_closure; - struct log_details details; bool ret = false; debug_decl(log_server_reject, SUDOERS_DEBUG_LOGGING); if (SLIST_EMPTY(&def_log_servers)) debug_return_bool(true); - if (!init_log_details(&details, evlog)) - debug_return_bool(false); + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + /* Older servers don't support multiple commands per session. */ + if (!client_closure->subcommands) + debug_return_bool(true); + + /* Use existing client closure. */ + if (fmt_reject_message(client_closure, evlog)) { + if (client_closure->write_ev->add(client_closure->write_ev, + &client_closure->log_details->server_timeout) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + ret = true; + } + } else { + struct log_details details; + + if (!init_log_details(&details, evlog)) + debug_return_bool(false); - /* Open connection to log server, send hello and reject messages. */ - client_closure = log_server_open(&details, &sudo_user.submit_time, false, - SEND_REJECT, message, event_alloc); - if (client_closure != NULL) { - client_closure_free(client_closure); - ret = true; + /* Open connection to log server, send hello and reject messages. */ + client_closure = log_server_open(&details, &sudo_user.submit_time, + false, SEND_REJECT, message, event_alloc); + if (client_closure != NULL) { + client_closure_free(client_closure); + ret = true; + } + + /* Only the log_servers string list is dynamically allocated. */ + str_list_free(details.log_servers); } - /* Only the log_servers string list is dynamically allocated. */ - str_list_free(details.log_servers); +done: debug_return_bool(ret); } @@ -149,7 +168,6 @@ log_server_alert(struct eventlog *evlog, struct timespec *now, const char *message, const char *errstr, struct sudo_plugin_event * (*event_alloc)(void)) { - struct client_closure *client_closure; struct log_details details; char *emessage = NULL; bool ret = false; @@ -158,9 +176,6 @@ log_server_alert(struct eventlog *evlog, struct timespec *now, if (SLIST_EMPTY(&def_log_servers)) debug_return_bool(true); - if (!init_log_details(&details, evlog)) - goto done; - if (errstr != NULL) { if (asprintf(&emessage, _("%s: %s"), message, errstr) == -1) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); @@ -168,18 +183,38 @@ log_server_alert(struct eventlog *evlog, struct timespec *now, } } - /* Open connection to log server, send hello and alert messages. */ - client_closure = log_server_open(&details, now, false, - SEND_ALERT, emessage ? emessage : message, event_alloc); - if (client_closure != NULL) { - client_closure_free(client_closure); - ret = true; + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + /* Older servers don't support multiple commands per session. */ + if (!client_closure->subcommands) + debug_return_bool(true); + + /* Use existing client closure. */ + if (fmt_reject_message(client_closure, evlog)) { + if (client_closure->write_ev->add(client_closure->write_ev, + &client_closure->log_details->server_timeout) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + ret = true; + } + } else { + if (!init_log_details(&details, evlog)) + goto done; + + /* Open connection to log server, send hello and alert messages. */ + client_closure = log_server_open(&details, now, false, + SEND_ALERT, emessage ? emessage : message, event_alloc); + if (client_closure != NULL) { + client_closure_free(client_closure); + ret = true; + } + + /* Only the log_servers string list is dynamically allocated. */ + str_list_free(details.log_servers); } done: - /* Only the log_servers string list is dynamically allocated. */ free(emessage); - str_list_free(details.log_servers); debug_return_bool(ret); } #else @@ -205,17 +240,21 @@ log_server_alert(struct eventlog *evlog, struct timespec *now, static bool log_reject(const char *message, bool logit, bool mailit) { - int evl_flags = 0; + const char *uuid_str = NULL; struct eventlog evlog; + int evl_flags = 0; bool ret = true; debug_decl(log_reject, SUDOERS_DEBUG_LOGGING); + if (!ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) + uuid_str = sudo_user.uuid_str; + if (mailit) { SET(evl_flags, EVLOG_MAIL); if (!logit) SET(evl_flags, EVLOG_MAIL_ONLY); } - sudoers_to_eventlog(&evlog, NewArgv, env_get()); + sudoers_to_eventlog(&evlog, NewArgv, env_get(), uuid_str); if (!eventlog_reject(&evlog, evl_flags, message, NULL, NULL)) ret = false; @@ -462,9 +501,8 @@ log_auth_failure(int status, unsigned int tries) * Log and potentially mail the allowed command. */ bool -log_allowed(void) +log_allowed(struct eventlog *evlog) { - struct eventlog evlog; int oldlocale; int evl_flags = 0; bool mailit, ret = true; @@ -477,13 +515,12 @@ log_allowed(void) /* Log and mail messages should be in the sudoers locale. */ sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); - sudoers_to_eventlog(&evlog, NewArgv, env_get()); if (mailit) { SET(evl_flags, EVLOG_MAIL); if (!def_log_allowed) SET(evl_flags, EVLOG_MAIL_ONLY); } - if (!eventlog_accept(&evlog, evl_flags, NULL, NULL)) + if (!eventlog_accept(evlog, evl_flags, NULL, NULL)) ret = false; sudoers_setlocale(oldlocale, NULL); @@ -492,6 +529,63 @@ log_allowed(void) debug_return_bool(ret); } +bool +log_exit_status(int exit_status) +{ + struct eventlog evlog; + int evl_flags = 0; + int ecode = 0; + int oldlocale; + struct timespec run_time; + char sigbuf[SIG2STR_MAX]; + char *signame = NULL; + bool dumped_core = false; + bool ret = true; + debug_decl(log_exit_status, SUDOERS_DEBUG_LOGGING); + + if (def_log_exit_status || def_mail_always) { + if (sudo_gettime_real(&run_time) == -1) { + sudo_warn("%s", U_("unable to get time of day")); + ret = false; + goto done; + } + sudo_timespecsub(&run_time, &sudo_user.submit_time, &run_time); + + if (WIFEXITED(exit_status)) { + ecode = WEXITSTATUS(exit_status); + } else if (WIFSIGNALED(exit_status)) { + int signo = WTERMSIG(exit_status); + if (signo <= 0 || sig2str(signo, sigbuf) == -1) + (void)snprintf(sigbuf, sizeof(sigbuf), "%d", signo); + signame = sigbuf; + ecode = signo | 128; + dumped_core = WCOREDUMP(exit_status); + } else { + sudo_warnx("invalid exit status 0x%x", exit_status); + ret = false; + goto done; + } + + /* Log and mail messages should be in the sudoers locale. */ + sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); + + sudoers_to_eventlog(&evlog, NewArgv, env_get(), sudo_user.uuid_str); + if (def_mail_always) { + SET(evl_flags, EVLOG_MAIL); + if (!def_log_exit_status) + SET(evl_flags, EVLOG_MAIL_ONLY); + } + if (!eventlog_exit(&evlog, evl_flags, &run_time, ecode, signame, + dumped_core)) + ret = false; + + sudoers_setlocale(oldlocale, NULL); + } + +done: + debug_return_bool(ret); +} + /* * Perform logging for log_warning()/log_warningx(). */ @@ -555,7 +649,7 @@ vlog_warning(int flags, int errnum, const char *fmt, va_list ap) if (ISSET(flags, SLOG_NO_LOG)) SET(evl_flags, EVLOG_MAIL_ONLY); } - sudoers_to_eventlog(&evlog, NewArgv, env_get()); + sudoers_to_eventlog(&evlog, NewArgv, env_get(), sudo_user.uuid_str); eventlog_alert(&evlog, evl_flags, &now, message, errstr); log_server_alert(&evlog, &now, message, errstr, @@ -650,7 +744,7 @@ should_mail(int status) */ void sudoers_to_eventlog(struct eventlog *evlog, char * const argv[], - char * const envp[]) + char * const envp[], const char *uuid_str) { struct group *grp; debug_decl(sudoers_to_eventlog, SUDOERS_DEBUG_LOGGING); @@ -695,6 +789,23 @@ sudoers_to_eventlog(struct eventlog *evlog, char * const argv[], evlog->runuid = (uid_t)-1; evlog->runuser = sudo_user.runas_user; } + if (uuid_str == NULL) { + unsigned char uuid[16]; + + sudo_uuid_create(uuid); + if (sudo_uuid_to_string(uuid, evlog->uuid_str, sizeof(evlog->uuid_str)) == NULL) + sudo_warnx("%s", U_("unable to generate UUID")); + } else { + strlcpy(evlog->uuid_str, uuid_str, sizeof(evlog->uuid_str)); + } + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + struct timespec now; + if (sudo_gettime_real(&now) == -1) { + sudo_warn("%s", U_("unable to get time of day")); + } else { + sudo_timespecsub(&now, &sudo_user.submit_time, &evlog->iolog_offset); + } + } debug_return; } @@ -736,7 +847,7 @@ sudoers_log_open(int type, const char *log_file) if (!warned) { warned = true; log_warning(SLOG_SEND_MAIL|SLOG_NO_LOG, - N_("unable to open log file: %s"), log_file); + N_("unable to open log file %s"), log_file); } if (fd != -1) close(fd); diff --git a/plugins/sudoers/logging.h b/plugins/sudoers/logging.h index 029b5616e..7c6fa8731 100644 --- a/plugins/sudoers/logging.h +++ b/plugins/sudoers/logging.h @@ -56,7 +56,8 @@ bool sudoers_setlocale(int locale_type, int *prev_locale); int sudoers_getlocale(void); int audit_failure(char *const argv[], char const *const fmt, ...) __printflike(2, 3); int vaudit_failure(char *const argv[], char const *const fmt, va_list ap) __printflike(2, 0); -bool log_allowed(void); +bool log_allowed(struct eventlog *evlog); +bool log_exit_status(int exit_status); bool log_auth_failure(int status, unsigned int tries); bool log_denial(int status, bool inform_user); bool log_failure(int status, int flags); @@ -67,7 +68,7 @@ bool log_warningx(int flags, const char *fmt, ...) __printflike(2, 3); bool gai_log_warning(int flags, int errnum, const char *fmt, ...) __printflike(3, 4); bool sudoers_initlocale(const char *ulocale, const char *slocale); bool sudoers_locale_callback(const union sudo_defs_val *); -void sudoers_to_eventlog(struct eventlog *evlog, char * const argv[], char *const envp[]); +void sudoers_to_eventlog(struct eventlog *evlog, char * const argv[], char *const envp[], const char *uuid_str); void init_eventlog_config(void); bool init_log_details(struct log_details *details, struct eventlog *evlog); diff --git a/plugins/sudoers/match.c b/plugins/sudoers/match.c index eb77cf2c3..9801f3894 100644 --- a/plugins/sudoers/match.c +++ b/plugins/sudoers/match.c @@ -396,11 +396,6 @@ cmnd_matches(struct sudoers_parse_tree *parse_tree, const struct member *m, switch (m->type) { case ALL: - if (m->name == NULL) { - matched = !m->negated; - break; - } - FALLTHROUGH; case COMMAND: c = (struct sudo_command *)m->name; if (command_matches(c->cmnd, c->args, runchroot, info, &c->digests)) diff --git a/plugins/sudoers/match_command.c b/plugins/sudoers/match_command.c index a6f847226..6d8b3a65c 100644 --- a/plugins/sudoers/match_command.c +++ b/plugins/sudoers/match_command.c @@ -87,29 +87,40 @@ command_args_match(const char *sudoers_cmnd, const char *sudoers_args) * Returns true on success, else false. */ static bool -do_stat(int fd, const char *path, const char *runchroot, struct stat *sb) +do_stat(int fd, const char *path, const char *runchroot, bool intercepted, + struct stat *sb) { struct stat sbuf; char pathbuf[PATH_MAX]; + bool ret; debug_decl(do_stat, SUDOERS_DEBUG_MATCH); if (sb == NULL) sb = &sbuf; - if (fd != -1) - debug_return_bool(fstat(fd, sb) == 0); - - /* Make path relative to the new root, if any. */ - if (runchroot != NULL) { - const int len = - snprintf(pathbuf, sizeof(pathbuf), "%s%s", runchroot, path); - if (len >= ssizeof(pathbuf)) { - errno = ENAMETOOLONG; - debug_return_bool(false); + if (fd != -1) { + ret = fstat(fd, sb) == 0; + } else { + /* Make path relative to the new root, if any. */ + if (runchroot != NULL) { + const int len = + snprintf(pathbuf, sizeof(pathbuf), "%s%s", runchroot, path); + if (len >= ssizeof(pathbuf)) { + errno = ENAMETOOLONG; + debug_return_bool(false); + } + path = pathbuf; } - path = pathbuf; + ret = stat(path, sb) == 0; } - debug_return_bool(stat(path, sb) == 0); + if (ret && intercepted) { + if (!def_intercept_allow_setid && ISSET(sb->st_mode, S_ISUID|S_ISGID)) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "rejecting setid command %s", path); + ret = false; + } + } + debug_return_int(ret); } #endif /* SUDOERS_NAME_MATCH */ @@ -220,7 +231,7 @@ set_cmnd_fd(int fd) */ static bool command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, - const struct command_digest_list *digests) + bool intercepted, const struct command_digest_list *digests) { char buf[PATH_MAX], sdbuf[PATH_MAX]; struct stat sudoers_stat; @@ -271,7 +282,7 @@ command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, /* Open the file for fdexec or for digest matching. */ if (!open_cmnd(buf, NULL, digests, &fd)) continue; - if (!do_stat(fd, buf, NULL, &sudoers_stat)) + if (!do_stat(fd, buf, NULL, intercepted, &sudoers_stat)) continue; if (user_stat == NULL || @@ -305,7 +316,7 @@ command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, */ static bool command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, - const struct command_digest_list *digests) + bool intercepted, const struct command_digest_list *digests) { int fd = -1; debug_decl(command_matches_dir, SUDOERS_DEBUG_MATCH); @@ -335,7 +346,7 @@ bad: static bool command_matches_all(const char *runchroot, - const struct command_digest_list *digests) + bool intercepted, const struct command_digest_list *digests) { int fd = -1; debug_decl(command_matches_all, SUDOERS_DEBUG_MATCH); @@ -345,7 +356,7 @@ command_matches_all(const char *runchroot, if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) goto bad; #ifndef SUDOERS_NAME_MATCH - if (!do_stat(fd, user_cmnd, runchroot, NULL)) + if (!do_stat(fd, user_cmnd, runchroot, intercepted, NULL)) goto bad; #endif } @@ -365,7 +376,8 @@ bad: static bool command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, const struct command_digest_list *digests) + const char *runchroot, bool intercepted, + const struct command_digest_list *digests) { int fd = -1; debug_decl(command_matches_fnmatch, SUDOERS_DEBUG_MATCH); @@ -386,7 +398,7 @@ command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args, if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) goto bad; #ifndef SUDOERS_NAME_MATCH - if (!do_stat(fd, user_cmnd, runchroot, NULL)) + if (!do_stat(fd, user_cmnd, runchroot, intercepted, NULL)) goto bad; #endif /* Check digest of user_cmnd since sudoers_cmnd is a pattern. */ @@ -407,7 +419,8 @@ bad: #ifndef SUDOERS_NAME_MATCH static bool command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, const struct command_digest_list *digests) + const char *runchroot, bool intercepted, + const struct command_digest_list *digests) { struct stat sudoers_stat; bool bad_digest = false; @@ -468,7 +481,7 @@ command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, /* Open the file for fdexec or for digest matching. */ if (!open_cmnd(cp, runchroot, digests, &fd)) continue; - if (!do_stat(fd, cp, runchroot, &sudoers_stat)) + if (!do_stat(fd, cp, runchroot, intercepted, &sudoers_stat)) continue; if (user_stat == NULL || (user_stat->st_dev == sudoers_stat.st_dev && @@ -505,7 +518,7 @@ command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, /* If it ends in '/' it is a directory spec. */ dlen = strlen(cp); if (cp[dlen - 1] == '/') { - if (command_matches_dir(cp, dlen, runchroot, digests)) { + if (command_matches_dir(cp, dlen, runchroot, intercepted, digests)) { globfree(&gl); debug_return_bool(true); } @@ -520,7 +533,7 @@ command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, /* Open the file for fdexec or for digest matching. */ if (!open_cmnd(cp, runchroot, digests, &fd)) continue; - if (!do_stat(fd, cp, runchroot, &sudoers_stat)) + if (!do_stat(fd, cp, runchroot, intercepted, &sudoers_stat)) continue; if (user_stat == NULL || (user_stat->st_dev == sudoers_stat.st_dev && @@ -553,7 +566,8 @@ done: static bool command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, const struct command_digest_list *digests) + const char *runchroot, bool intercepted, + const struct command_digest_list *digests) { struct stat sudoers_stat; const char *base; @@ -565,7 +579,7 @@ command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, dlen = strlen(sudoers_cmnd); if (sudoers_cmnd[dlen - 1] == '/') { debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, runchroot, - digests)); + intercepted, digests)); } /* Only proceed if user_base and basename(sudoers_cmnd) match */ @@ -584,7 +598,7 @@ command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, * c) there are args in sudoers and on command line and they match * d) there is a digest and it matches */ - if (user_stat != NULL && do_stat(fd, sudoers_cmnd, runchroot, &sudoers_stat)) { + if (user_stat != NULL && do_stat(fd, sudoers_cmnd, runchroot, intercepted, &sudoers_stat)) { if (user_stat->st_dev != sudoers_stat.st_dev || user_stat->st_ino != sudoers_stat.st_ino) goto bad; @@ -614,15 +628,17 @@ bad: #else /* SUDOERS_NAME_MATCH */ static bool command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, const struct command_digest_list *digests) + const char *runchroot, bool intercepted, + const struct command_digest_list *digests) { return command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot, - digests); + intercepted, digests); } static bool command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, const struct command_digest_list *digests) + const char *runchroot, bool intercepted, + const struct command_digest_list *digests) { size_t dlen; int fd = -1; @@ -632,7 +648,7 @@ command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, dlen = strlen(sudoers_cmnd); if (sudoers_cmnd[dlen - 1] == '/') { debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, runchroot, - digests)); + intercepted, digests)); } if (strcmp(user_cmnd, sudoers_cmnd) == 0) { @@ -670,6 +686,7 @@ command_matches(const char *sudoers_cmnd, const char *sudoers_args, const char *runchroot, struct cmnd_info *info, const struct command_digest_list *digests) { + const bool intercepted = info ? info->intercepted : false; char *saved_user_cmnd = NULL; struct stat saved_user_stat; bool rc = false; @@ -702,7 +719,8 @@ command_matches(const char *sudoers_cmnd, const char *sudoers_args, } if (sudoers_cmnd == NULL) { - rc = command_matches_all(runchroot, digests); + sudoers_cmnd = "ALL"; + rc = command_matches_all(runchroot, intercepted, digests); goto done; } @@ -728,12 +746,16 @@ command_matches(const char *sudoers_cmnd, const char *sudoers_args, * If sudoers_cmnd has meta characters in it, we need to * use glob(3) and/or fnmatch(3) to do the matching. */ - if (def_fast_glob) - rc = command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot, digests); - else - rc = command_matches_glob(sudoers_cmnd, sudoers_args, runchroot, digests); + if (def_fast_glob) { + rc = command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot, + intercepted, digests); + } else { + rc = command_matches_glob(sudoers_cmnd, sudoers_args, runchroot, + intercepted, digests); + } } else { - rc = command_matches_normal(sudoers_cmnd, sudoers_args, runchroot, digests); + rc = command_matches_normal(sudoers_cmnd, sudoers_args, runchroot, + intercepted, digests); } done: if (saved_user_cmnd != NULL) { diff --git a/plugins/sudoers/mkdefaults b/plugins/sudoers/mkdefaults index 11a62fd3e..f0f0a1325 100755 --- a/plugins/sudoers/mkdefaults +++ b/plugins/sudoers/mkdefaults @@ -145,7 +145,7 @@ function print_record(rec, recnum) { type = fields[2] sub(/\|.*/, "", type) if (!(type in type_map)) - die("unknown defaults type: " fields[2]) + die("unknown defaults type " fields[2]) # each variable gets a macro to access its value defname = "I_" toupper(fields[1]) diff --git a/plugins/sudoers/parse.c b/plugins/sudoers/parse.c index 4e1172063..d3bf8a556 100644 --- a/plugins/sudoers/parse.c +++ b/plugins/sudoers/parse.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2005, 2007-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2004-2005, 2007-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -124,6 +124,8 @@ sudoers_lookup_check(struct sudo_nss *nss, struct passwd *pw, debug_decl(sudoers_lookup_check, SUDOERS_DEBUG_PARSER); memset(info, 0, sizeof(*info)); + if (def_intercept || ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) + info->intercepted = true; TAILQ_FOREACH_REVERSE(us, &nss->parse_tree->userspecs, userspec_list, entries) { if (userlist_matches(nss->parse_tree, pw, &us->users) != ALLOW) @@ -225,6 +227,18 @@ apply_cmndspec(struct cmndspec *cs) "user_type -> %s", user_type); } } + if (user_role != NULL || user_type != NULL) { + if (def_intercept) { + sudo_warnx("%s", + U_("SELinux RBAC is not supported when intercept mode is enabled")); + debug_return_bool(false); + } + if (def_log_subcmds) { + sudo_warnx("%s", + U_("SELinux RBAC is not supported when the log_subcmds flag is enabled")); + debug_return_bool(false); + } + } #endif /* HAVE_SELINUX */ #ifdef HAVE_PRIV_SET /* Set Solaris privilege sets */ @@ -300,6 +314,11 @@ apply_cmndspec(struct cmndspec *cs) sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "def_noexec -> %s", def_noexec ? "true" : "false"); } + if (cs->tags.intercept != UNSPEC) { + def_intercept = cs->tags.intercept; + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "def_intercept -> %s", def_intercept ? "true" : "false"); + } if (cs->tags.setenv != UNSPEC) { def_setenv = cs->tags.setenv; sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, @@ -566,6 +585,8 @@ display_priv_long(struct sudoers_parse_tree *parse_tree, struct passwd *pw, sudo_lbuf_append(lbuf, "%ssetenv, ", cs->tags.setenv ? "" : "!"); if (TAG_SET(cs->tags.noexec)) sudo_lbuf_append(lbuf, "%snoexec, ", cs->tags.noexec ? "" : "!"); + if (TAG_SET(cs->tags.intercept)) + sudo_lbuf_append(lbuf, "%sintercept, ", cs->tags.intercept ? "" : "!"); if (TAG_SET(cs->tags.nopasswd)) sudo_lbuf_append(lbuf, "%sauthenticate, ", cs->tags.nopasswd ? "!" : ""); if (TAG_SET(cs->tags.log_input)) @@ -733,10 +754,10 @@ display_bound_defaults_by_type(struct sudoers_parse_tree *parse_tree, sudo_lbuf_append(lbuf, " Defaults%s", dsep); TAILQ_FOREACH(m, binding, entries) { if (m != TAILQ_FIRST(binding)) - sudo_lbuf_append(lbuf, ","); + sudo_lbuf_append(lbuf, ", "); sudoers_format_member(lbuf, parse_tree, m, ", ", atype); - sudo_lbuf_append(lbuf, " "); } + sudo_lbuf_append(lbuf, " "); } else sudo_lbuf_append(lbuf, ", "); sudoers_format_default(lbuf, d); diff --git a/plugins/sudoers/parse.h b/plugins/sudoers/parse.h index 4dc36d45a..ea2a179d1 100644 --- a/plugins/sudoers/parse.h +++ b/plugins/sudoers/parse.h @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2000, 2004, 2007-2020 + * Copyright (c) 1996, 1998-2000, 2004, 2007-2021 * Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any @@ -48,6 +48,7 @@ */ #define TAGS_INIT(t) do { \ (t)->follow = UNSPEC; \ + (t)->intercept = UNSPEC; \ (t)->log_input = UNSPEC; \ (t)->log_output = UNSPEC; \ (t)->noexec = UNSPEC; \ @@ -62,6 +63,8 @@ #define TAGS_MERGE(t, t2) do { \ if ((t2).follow != UNSPEC) \ (t).follow = (t2).follow; \ + if ((t2).intercept != UNSPEC) \ + (t).intercept = (t2).intercept; \ if ((t2).log_input != UNSPEC) \ (t).log_input = (t2).log_input; \ if ((t2).log_output != UNSPEC) \ @@ -80,10 +83,10 @@ * Returns true if any tag are not UNSPEC, else false. */ #define TAGS_SET(t) \ - ((t).follow != UNSPEC || (t).log_input != UNSPEC || \ - (t).log_output != UNSPEC || (t).noexec != UNSPEC || \ - (t).nopasswd != UNSPEC || (t).send_mail != UNSPEC || \ - (t).setenv != UNSPEC) + ((t).follow != UNSPEC || (t).intercept != UNSPEC || \ + (t).log_input != UNSPEC || (t).log_output != UNSPEC || \ + (t).noexec != UNSPEC || (t).nopasswd != UNSPEC || \ + (t).send_mail != UNSPEC || (t).setenv != UNSPEC) /* * Returns true if the specified tag is not UNSPEC or IMPLIED, else false. @@ -96,6 +99,7 @@ */ #define TAGS_CHANGED(ot, nt) \ ((TAG_SET((nt).follow) && (nt).follow != (ot).follow) || \ + (TAG_SET((nt).intercept) && (nt).intercept != (ot).intercept) || \ (TAG_SET((nt).log_input) && (nt).log_input != (ot).log_input) || \ (TAG_SET((nt).log_output) && (nt).log_output != (ot).log_output) || \ (TAG_SET((nt).noexec) && (nt).noexec != (ot).noexec) || \ @@ -121,13 +125,14 @@ struct command_digest { * Possible values: true, false, IMPLIED, UNSPEC. */ struct cmndtag { - signed int nopasswd: 3; - signed int noexec: 3; - signed int setenv: 3; + signed int follow: 3; + signed int intercept: 3; signed int log_input: 3; signed int log_output: 3; + signed int noexec: 3; + signed int nopasswd: 3; signed int send_mail: 3; - signed int follow: 3; + signed int setenv: 3; }; /* @@ -297,6 +302,7 @@ struct cmnd_info { struct stat cmnd_stat; char *cmnd_path; int status; + bool intercepted; }; /* diff --git a/plugins/sudoers/po/cs.mo b/plugins/sudoers/po/cs.mo Binary files differindex abcb095b9..6b1fa8590 100644 --- a/plugins/sudoers/po/cs.mo +++ b/plugins/sudoers/po/cs.mo diff --git a/plugins/sudoers/po/cs.po b/plugins/sudoers/po/cs.po index 0fc18bcb8..13268b30a 100644 --- a/plugins/sudoers/po/cs.po +++ b/plugins/sudoers/po/cs.po @@ -5,14 +5,15 @@ # Petr Pisar <petr.pisar@atlas.cz>, 2020, 2021. # # (AIX) registry → (AIXový) registr +# I/O (log) I/O (log) # timestamp → Äasové údaje # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-03 21:35+02:00\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-09-01 21:03+02:00\n" "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" "Language: cs\n" @@ -22,7 +23,7 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "chyba syntaxe" @@ -46,29 +47,46 @@ msgstr "*** BEZPEÄŒNOSTNà hlášenà o %h ***" msgid "Sorry, try again." msgstr "Je nám lÃto, zkuste to znovu." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -80,16 +98,16 @@ msgstr "Je nám lÃto, zkuste to znovu." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -102,21 +120,21 @@ msgstr "Je nám lÃto, zkuste to znovu." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -127,7 +145,7 @@ msgstr "Je nám lÃto, zkuste to znovu." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -138,13 +156,13 @@ msgstr "Je nám lÃto, zkuste to znovu." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -155,214 +173,237 @@ msgstr "Je nám lÃto, zkuste to znovu." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "nelze alokovat paměť" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "kontrolnà souÄet vyžaduje název cesty" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "hodnoty „CWD“ musà zaÄÃnat na „/“, „~“ nebo „*“" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "hodnoty „CHROOT“ musà zaÄÃnat na „/“, „~“ nebo „*“" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "chyba syntaxe, vyhrazené slovo %s použito jako název aliasu" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "neplatná hodnota notbefore (zaÄátek platnosti)" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "neplatná hodnota notafter (konec platnosti)" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "hodnota Äasového limitu je pÅ™ÃliÅ¡ velká" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "neplatná hodnota Äasového limitu" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias „%s“ je již definován" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "vnitÅ™nà chyba, pÅ™eteÄenà %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "nelze zdvojit standardnà vstup: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "nelze spustit %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "nelze vytvoÅ™it proces" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "nelze vytvoÅ™it proces: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "nelze otevÅ™Ãt rouru: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (pÅ™Ãkaz pokraÄuje) %s" @@ -476,351 +517,585 @@ msgstr "%s chybà položka s runas skupinou" msgid "%s exists but is not a directory (0%o)" msgstr "%s existuje, ale nejedná se o adresář (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "nelze vytvoÅ™it adresář %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nelze zmÄ›nit práva %s na 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "chyba pÅ™i Ätenà ÄasovacÃho souboru: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "neplatný řádek s ÄasovacÃm souborem: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "nelze vytvoÅ™it UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: chyba protokolu: chybný typ pro %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: chyba protokolu: v AcceptMessage chybà %s" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: nelze naformátovat identifikátor relace" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s nenà nastaveno" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "nelze expandovat iolog cestu %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "nelze vytvoÅ™it iolog cestu %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "neplatný iofd %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "chyba pÅ™i zavÃránà iofd %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "neplatný I/O log %s: odkazováno na %s, které nenà pÅ™Ãtomno" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: nelze nalézt bod obnovy [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "nelze otevÅ™Ãt %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "nelze otevÅ™Ãt %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "%s/%s nelze zkopÃrovat do %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "%s nelze pÅ™ejmenovat na %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "chybà vstupnÄ›-výstupnà soubor s protokolem %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nelze skoÄit vpÅ™ed o %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "nelze nalézt bod obnovy [%lld, %ld] v %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: nelze nalézt bod obnovy [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "k relayi se nelze pÅ™ipojit" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "správa od serveru je pÅ™ÃliÅ¡ velká: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "událost nelze pÅ™idat do fronty" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "neÄekaný stav %d u %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "chyba stavového automatu" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "neplatná zpráva AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "neplatná zpráva RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "neplatná zpráva AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: neÄekaný IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "chyba protokolu" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neÄekaná hodnota type_case %d v %s od %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "nerozpoznaný druh zprávy ClientMessage" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "pÅ™i zapisovánà do klienta %s vyprÅ¡el Äasový limit" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "chybà vyrovnávacà paměť pro zápis do klienta %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "pÅ™i Ätenà z klienta %s vyprÅ¡el Äasový limit" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "konec souboru od %s bez řádného ukonÄenà TLS" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "zpráva od klienta je pÅ™ÃliÅ¡ velká: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "zpráva od klienta je pÅ™ÃliÅ¡ velká" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "neplatná zpráva ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "nelze zÃskat vzdálenou IP adresu" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "K objektu SSL nelze pÅ™ipojit uživatelská data: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "událost nelze pÅ™idat do fronty" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "nelze nastavit naslouchacà socket" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "neÄekaný signál %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "protokolovacà server suda" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Volby:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "cesta ke konfiguraÄnÃmu souboru" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "zobrazà nápovÄ›du a skonÄÃ" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "neoddÄ›là proces, běžà na popÅ™edÃ" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "procentuálnà pravdÄ›podobnost, že spojenà se pÅ™eruÅ¡Ã" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "zobrazà údaje o verzi a skonÄÃ" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Je vyžadována knihovna Protobuf-C verze 1.3 nebo vyÅ¡Å¡Ã" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "neplatná hodnota pravdÄ›podobnosti ztráty: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s verze %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "neznámý uživatel %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "neznámá skupina %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "nelze rozebrat režim iologu %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "neplatná hodnota pro %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "protokol TLS nenà podporován" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: cesta nenà plnÄ› kvalifikovaná" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "neznámý obor systémového protokolu %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "neznámá priorita systémového protokolu: %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d nepárová „[“: %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d neplatný konfiguraÄnà oddÃl: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d neplatný řádek s konfiguracÃ: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d oÄekávaný název oddÃlu: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "neplatná hodnota pro %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d: neznámý klÃÄ: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "neznámý obor systémového protokolu %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] nedovolený klÃÄ: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "neznámá priorita systémového protokolu: %s" +msgid "unable to open log file %s" +msgstr "nelze otevÅ™Ãt soubor protokolu %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "TLS kontext serveru nelze inicializovat" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "TLS kontext relay nelze inicializovat" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "soubor s žurnálem nelze vytvoÅ™it" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "%s nelze uzamknout" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "soubor s žurnálem nelze zamknout" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "soubor s žurnálem nelze otevÅ™Ãt" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "soubor s žurnálem nelze zapsat" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "soubor s žurnálem nelze pÅ™ejmenovat" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "neÄekaný konec souboru pÅ™i Ätenà žurnálu" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "chyba pÅ™i Ätenà souboru s žurnálem" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "neplatný soubor s žurnálem, nelze restartovat" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "nelze se pÅ™esunou na [%lld, %ld] v souboru žurnálu %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "chyba pÅ™i rozboru zprávy AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "chyba pÅ™i vytvářenà vstupnÄ›-výstupnÃho protokolu" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "chyba pÅ™i protokolovánà události pÅ™ijetÃ" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "chyba pÅ™i rozboru zprávy RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "chyba pÅ™i protokolovánà události zamÃtnutÃ" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "chyba pÅ™i protokolovánà události ukonÄenÃ" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "protokol byl již dokonÄen, nelze jej restartovat" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "protokol nelze navázat" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "chyba pÅ™i rozboru zprávy AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "chyba pÅ™i protokolovánà události upozornÄ›nÃ" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "nelze naformátovat Äasový údaj, délka %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "chyba pÅ™i zápisu IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "chyba pÅ™i zápisu ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "chyba pÅ™i zápisu CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "navazovánà TLS spojenà se strojem relaye selhalo" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "ke stroji relaye se nelze pÅ™ipojit" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: neplatná správa ServerHello, chybà server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "neplatná správa ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "nerozpoznaný druh zprávy ServerMessage" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "pÅ™i Ätenà z relaye %s (%s) vyprÅ¡el Äasový limit" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "pÅ™i Ätenà z relaye vyprÅ¡el Äasový limit" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "název stroje relaye neodpovÃdá certifikátu" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "chyba pÅ™i Ätenà z relaye" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "z relaye nelze ÄÃst" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "relay server uzavÅ™el spojenÃ" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "správa od serveru je pÅ™ÃliÅ¡ velká" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "pÅ™i zapisovánà do relaye %s (%s) vyprÅ¡el Äasový limit" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "pÅ™i zapisovánà do relaye vyprÅ¡el Äasový limit" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "chyba pÅ™i zápisu do relaye" @@ -869,177 +1144,163 @@ msgid "reject the command with the given reason" msgstr "zamÃtnout pÅ™Ãkaz se zadaným důvodem" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "zastavit pÅ™enos po dosaženà tohoto Äasu" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "vyzkouÅ¡et auditnà server zaslánÃm vybraného protokolu vstupu-výstupu n-krát souběžnÄ›" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "%s:%s nelze vyhledat: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "nelze zÃskat IP adresu serveru" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "%s/%s nelze pÅ™eÄÃst: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "zpráva od klienta je pÅ™ÃliÅ¡ velká: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: vyrovnávacà paměť pro zápis se již použÃvá" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "neÄekaná I/O událost %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: neÄekaný stav %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "od serveru byla pÅ™ijata chybová zpráva: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "od serveru byla pÅ™ijata zpráva o zruÅ¡enÃ: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "zprávu ServerMessage nelze rozbalit" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: neÄekaná hodnota type_case %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "pÅ™i Ätenà ze serveru vyprÅ¡el Äasový limit" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "pÅ™edÄasný konec souboru" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "správa od serveru je pÅ™ÃliÅ¡ velká: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "pÅ™i zapisovánà do serveru vyprÅ¡el Äasový limit" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "musà být zadán jak bod navázánÃ, tak i identifikátor iolog" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "bod navázánà nelze nastavit, když žádný vstup/výstup nebyl odeslán" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "ukonÄeno pÅ™edÄasnÄ› ve stavu %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "uplynulý Äas zaslaný serveru [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "od server byl pÅ™ijat bod zápisu [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "PÅ™i navazovánà spojenà TLS vyprÅ¡el Äasový limit" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "událost nelze nastavit" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "spojenà TLS selhalo: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "objekt SSL nelze alokovat: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "K objektu SSL nelze pÅ™ipojit socket: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "kontext TLS nelze inicializovat" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "Å¡ifru TLS 1.2 nelze nastavit na %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "Å¡ifru TLS 1.3 nelze nastavit na %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "nelze vytvoÅ™it kontext TLS: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "nelze nastavit minimálnà verzi protokolu na TLS 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "nelze nastavit parametry Diffieho-Hellmana: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "parametry Diffieho-Hellmana nelze pÅ™eÄÃst: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "nelze otevÅ™Ãt %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nelze zÃskat Äas" @@ -1279,20 +1540,12 @@ msgstr "" " 3. S velkými právy pÅ™icházà velká zodpovÄ›dnost.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "neznámé UID: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "neznámý uživatel: %s" +msgid "unknown uid %u" +msgstr "neznámé UID %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1349,9 +1602,10 @@ msgstr "nepodporovaný formát výstupu %s" msgid "%s: input and output files must be different" msgstr "%s: vstupnà a výstupnà soubory se musà liÅ¡it" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "nelze inicializovat výchozà hodnoty sudoers" @@ -1362,8 +1616,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: neznámé klÃÄové slovo: %s" +msgid "%s: unknown key word %s" +msgstr "%s: neznámé klÃÄové slovo %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1395,7 +1649,7 @@ msgstr "chyba pÅ™i rozboru %s kolem řádku %d\n" msgid "parse error in %s\n" msgstr "chyba pÅ™i rozboru %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1453,7 +1707,7 @@ msgstr "" " -V, --version zobrazà údaje o verzi a skonÄÃ" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "neznámá položka defaults „%s“" @@ -1470,12 +1724,12 @@ msgstr "nelze zÃskat Äas GMT" msgid "unable to format timestamp" msgstr "nelze naformátovat Äasový údaj" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "pÅ™ÃliÅ¡ mnoho záznamů sudoers, maximum je %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "promÄ›nná prostÅ™edà SUDOERS_BASE nenà nastavená a pÅ™epÃnaÄ -b nebyl zadán." @@ -2067,6 +2321,26 @@ msgstr "Zapnout podporu pro SELinux RBAC" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Cesta k souboru, který se vytvořà pÅ™i prvnÃm spuÅ¡tÄ›nà suda: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Zachytávat dalÅ¡Ã pÅ™Ãkazy a použÃt na nÄ› omezenà sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Zaznamenávat jakékoliv potomky spuÅ¡tÄ›né pÅ™Ãkazem" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Zaznamenávat návratový kód pÅ™Ãkazů" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Posloupnost pÅ™Ãkazů v zachycené relaci musà být autentizována" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Dovolit zachycenému pÅ™Ãkazu spustit setuid nebo setgid programy" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2087,52 +2361,62 @@ msgstr "%s:%d:%d: u „%s“ nebyla zadána žádná hodnota" msgid "%s: no value specified for \"%s\"" msgstr "%s: u „%s“ nebyla zadána žádná hodnota" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: neplatný operátor „%c=“ u „%s“" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: neplatný operátor „%c=“ u „%s“" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: volba „%s“ nebere hodnotu" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: volba „%s“ nebere hodnotu" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: neplatný typ Defaults 0x%x u volby „%s“" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: neplatný typ Defaults 0x%x u volby „%s“" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: hodnota „%s“ je pro volbu „%s“ neplatná" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: hodnota „%s“ nenàpro volbu „%s“ platná" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: hodnoty „%s“ musà zaÄÃnat na „/“, „~“ nebo „*“" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: hodnoty „%s“ musà zaÄÃnat na „/“, „~“ nebo „*“" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: hodnoty „%s“ musà zaÄÃnat na „/“" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: hodnoty „%s“ musà zaÄÃnat na „/“" @@ -2150,12 +2434,12 @@ msgstr "prostÅ™edà nelze znovu sestavit" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "je nám lÃto, ale nemáte dovoleno nastavovat následujÃcà promÄ›nné prostÅ™edÃ: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "chyba rozboru v %s kolem řádku %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "chyba rozboru v %s" @@ -2195,56 +2479,51 @@ msgstr "v %s nelze nalézt symbol „group_plugin“" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: nekompatibilnà hlavnà verze modulu pro skupiny %d, oÄekávána %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "nelze rozebrat IP adresu „%s“" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "nelze rozebrat sÃÅ¥ovou masku „%s“" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Pár mÃstnà IP adresy a masky sÃtÄ›:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "neznámá skupina: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "nelze aktualizovat soubor s poÅ™adovým ÄÃslem" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "nelze zapsat do souboru s I/O protokolem: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "%s/%s nelze vytvoÅ™it" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: vnitÅ™nà chyba, soubor s I/O protokolem pro událost %d nenà otevÅ™en" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "nelze pÅ™eÄÃst hodiny" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: vnitÅ™nà chyba, neplatný signál %d" @@ -2291,15 +2570,15 @@ msgstr "nepodporovaný typ ldapového URI: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "nelze mÃchat URI ldap a ldaps" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "násobná sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "nelze pÅ™evést sudoOption: %s%s%s" @@ -2312,107 +2591,111 @@ msgstr "nelze otevÅ™Ãt auditnà systém" msgid "unable to send audit message" msgstr "nelze odeslat auditnà zprávu" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "chyba ve smyÄce událostÃ" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "VytvoÅ™enà nového objektu SSL_CTX selhalo: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "nelze zavést svazek certifikátů autorit %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "nelze zavést certifikát %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "nelze zavést soukromý klÃÄ %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Objekt SSL nelze alokovat: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "Spojenà TLS s %s:%s selhalo: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "Inicializace TLS nebyla úspěšná" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "Ustanovenà spojenà TLS nebylo úspěšné" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: vnitÅ™nà chyba, neplatný návratový kód %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "zprávu ServerMessage nelze rozbalit" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "spojenà k protokolovému serveru ztraceno" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "chybà vyrovnávacà paměť pro zápis" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "k protokolovacÃmu serveru se nelze pÅ™ipojit" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "uživatel NENà v sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "uživatel NENà na stroji autorizován" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "pÅ™Ãkaz nedovolen" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s nenà v souboru sudoers. Tato událost bude ohlášena.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s nemá dovoleno spouÅ¡tÄ›t sudo na %s. Tato událost bude ohlášena.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Je nám lÃto, uživatel %s nesmà spouÅ¡tÄ›t sudo na %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Je nám lÃto, uživatel %s nemá dovoleno spouÅ¡tÄ›t „%s%s%s“ jako %s%s%s na %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: pÅ™Ãkaz nenalezen" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2421,7 +2704,7 @@ msgstr "" "ignoruje se „%s“ nalezený v „.“\n" "Použijte „sudo ./%s„, je-li toto „%s“', který chcete spustit." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2429,20 +2712,15 @@ msgstr[0] "%u chybný pokus zadat heslo" msgstr[1] "%u chybné pokusy zadat heslo" msgstr[2] "%u chybných pokusů zadat heslo" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "selhánà autentizace" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "je vyžadováno heslo" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "nelze otevÅ™Ãt soubor protokolu: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "nelze zapsat soubor protokolu: %s" @@ -2452,7 +2730,7 @@ msgstr "nelze zapsat soubor protokolu: %s" msgid "digest for %s (%s) is not in %s form" msgstr "souÄet pro %s (%s) nemá tvar %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2461,7 +2739,7 @@ msgstr "" "\n" "Role LDAP: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2469,38 +2747,38 @@ msgstr "" "\n" "Položka v sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Volby: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " PÅ™Ãkazy:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "OdpovÃdajÃcà položky Defaults pro %s na %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Výchozà hodnoty Runas a Command pro %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Uživatel %s smà spustit následujÃcà pÅ™Ãkazy na %s:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Uživatel %s nemá dovoleno spustit sudo na %s.\n" @@ -2515,64 +2793,64 @@ msgstr "neúplná definice sudoRole se ignoruje: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "neplatný atribut LDIF: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "neplatné %.*s nenastaveno vnÄ›jÅ¡Ãm rozhranÃm sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "nelze rozebrat seznam sÃÅ¥ových adres" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "uživatelské jméno nenastaveno vnÄ›jÅ¡Ãm rozhranÃm sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ID uživatele nenastaveno vnÄ›jÅ¡Ãm rozhranÃm sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ID skupiny nenastaveno vnÄ›jÅ¡Ãm rozhranÃm sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "název poÄÃtaÄe nenastaven vnÄ›jÅ¡Ãm rozhranÃm sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "neplatný pracovnà adresář: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "neplatný koÅ™enový adresář: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "nelze vykonat %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: neplatné pÅ™Ãznaky souboru od vnÄ›jÅ¡Ãho rozhranà suda: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Verze modulu s politikami sudoers je %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Verze gramatiky souboru sudoers je %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2581,27 +2859,27 @@ msgstr "" "\n" "Cesta sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "cesta k nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "cesta k ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "cesta k ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nelze zaregistrovat háÄek typu %d (verze %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nelze odhlásit háÄek typu %d (verze %d.%d)" @@ -2670,48 +2948,48 @@ msgstr "nelze rozebrat skupiny pro %s" msgid "unable to parse gids for %s" msgstr "nelze rozebrat ÄÃsla GID pro %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "pÅ™eteÄenà zásobnÃku oprávnÄ›nÃ" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "podteÄenà zásobnÃku oprávnÄ›nÃ" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "nelze pÅ™epnout GID na root" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "nelze pÅ™epnout na bÄ›hové GID" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "nelze nastavit vektor bÄ›hových skupin" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "nelze pÅ™epnout na bÄ›hové UID" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "nelze pÅ™epnout na GID sudoers" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "pÅ™ÃliÅ¡ mnoho procesů" @@ -2740,252 +3018,254 @@ msgstr "nelze inicializovat zdroj SSS. Je SSSD nainstalován na vaÅ¡em stroji?" msgid "unable to find symbol \"%s\" in %s" msgstr "nelze nalézt symbol „%s“ v %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problém s položkami defaults" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "nenalezeny žádné platné zdroje sudoers, konÄà se" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "uživatel nemá dovoleno zmÄ›nit koÅ™enový adresář na %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "nemáte dovoleno použÃt pÅ™epÃnaÄ -R s %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "uživatel nemá dovoleno zmÄ›nit adresář na %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "nemáte dovoleno použÃt pÅ™epÃnaÄ -D s %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "nezadán žádný pÅ™Ãkaz" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers udává, že root nemá dovoleno použÃt sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "uživatel nemá dovoleno pÅ™ebÃt omezenà „closefrom“" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "nemáte dovoleno použÃt pÅ™epÃnaÄ -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "vlastnÃk Äasového údaje (%s): Takový uživatel neexistuje" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "žádné TTY" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "je nám lÃto, ale pro spuÅ¡tÄ›nà sudo musÃte mÃt TTY" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "neplatný shell pro uživatele %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "pÅ™Ãkaz v aktuálnÃm adresáři" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "uživatel nemá dovoleno nastavit Äasový limit pÅ™Ãkazu" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "je nám lÃto, ale nastavit Äasový limit nemáte dovoleno" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "uživatel nemá dovoleno zachovat prostÅ™edÃ" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "je nám lÃto, ale zachovat prostÅ™edà nemáte dovoleno" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "pÅ™Ãkaz je pÅ™ÃliÅ¡ dlouhý" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit nenà nutné spouÅ¡tÄ›t pÅ™es sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "%s nelze ÄÃst" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "nelze zjistit údaje o %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s nenà běžný soubor" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s je vlastnÄ›n UID %u, mÄ›l by být vlastnÄ›n %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s je zapisovatelný pro vÅ¡echny" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s je vlastnÄ›n GID %u, mÄ›lo by být %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "pouze root může použÃt „-c %s“" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "neznáma pÅ™ihlaÅ¡ovacà tÅ™Ãda: %s" +msgid "unknown login class %s" +msgstr "neznámá pÅ™ihlaÅ¡ovacà tÅ™Ãda %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "nelze pÅ™eložit název stroje %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "neplatná volba filtru: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "neplatná maximálnà doba ÄekánÃ: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "neplatný násobek rychlosti: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "neplatná Äasový znaÄka %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/ÄasovánÃ: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "PÅ™ehrává se relace sudo: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "TTY nelze nastavit do pÅ™Ãmého režimu" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Pozor: váš terminál je pÅ™ÃliÅ¡ malý pro správné zobrazenà záznamu.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "RozmÄ›ry záznamu jsou %d × %d, váš terminál má rozmÄ›ry %d × %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "PÅ™ehrávánà skonÄilo, pro obnovenà terminálu stisknÄ›te libovolnou klávesu." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "nejednoznaÄný výraz „%s“" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "ve výrazu neodpovÃdá „)“" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "neznámý vyhledávacà výraz „%s“" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s vyžaduje argument" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "neplatný regulárnà výraz: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "datum „%s“ se nepodaÅ™ilo rozebrat" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "ve výrazu neodpovÃdá „(“" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "zakázané zakonÄenà „or“" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "zakázané zakonÄenà „!“" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "neznámý vyhledávácà typ %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "použitÃ: %s [-hnRS] [-d adresář] [-m ÄÃslo] [-s ÄÃslo] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "použitÃ: %s [-h] [-d adresář] -l [vyhledávacÃ_výraz]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2994,7 +3274,7 @@ msgstr "" "%s – pÅ™ehraje záznam relace sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3210,22 +3490,17 @@ msgstr "%s: rozbor úspěšný\n" msgid "%s busy, try again later" msgstr "%s je zaneprázdnÄ›n, zkuste to pozdÄ›ji" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "%s nelze uzamknout" - # The code indeed checks for non-localized "y" character. #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "PÅ™esto upravit? [y pro ano / N pro ne]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Pozor: %s:%d:%d: nepoužitý %s „%s“" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3234,7 +3509,7 @@ msgstr "" "%s – bezpeÄnÄ› upravà soubor sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3259,11 +3534,11 @@ msgstr "" msgid "empty string" msgstr "prázdný Å™etÄ›zec" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "prázdná skupina" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "prázdná sÃÅ¥ová skupina" @@ -3271,18 +3546,21 @@ msgstr "prázdná sÃÅ¥ová skupina" msgid "invalid line continuation" msgstr "neplatné pokraÄovánà řádku" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "neplatná IPv6 adresa" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "neÄekané zalomenà řádku uvnitÅ™ Å™etÄ›zce" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "pÅ™ÃliÅ¡ mnoho úrovnà zanoÅ™enÃ" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d: neznámý klÃÄ: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "nelze zÃskat metodu TLS serveru: %s" @@ -3445,9 +3723,6 @@ msgstr "pÅ™ÃliÅ¡ mnoho úrovnà zanoÅ™enÃ" #~ msgid "Warning: cycle in %s `%s'" #~ msgstr "Pozor: smyÄka v %s „%s“" -#~ msgid "Warning: %s `%s' referenced but not defined" -#~ msgstr "Pozor: %s „%s“ použit, ale nedefinován" - #~ msgid "Warning: unused %s `%s'" #~ msgstr "Pozor: nepožitý %s „%s“" diff --git a/plugins/sudoers/po/de.mo b/plugins/sudoers/po/de.mo Binary files differindex f5d1b19dc..6373f76db 100644 --- a/plugins/sudoers/po/de.mo +++ b/plugins/sudoers/po/de.mo diff --git a/plugins/sudoers/po/de.po b/plugins/sudoers/po/de.po index 3741f8e67..b7ac31407 100644 --- a/plugins/sudoers/po/de.po +++ b/plugins/sudoers/po/de.po @@ -6,10 +6,10 @@ # Jochen Hein <jochen@jochen.org>, 2001-2021. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-03 20:33+0200\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-21 14:37+0200\n" "Last-Translator: Jochen Hein <jochen@jochen.org>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" "Language: de\n" @@ -20,7 +20,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.3\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "Syntax-Fehler" @@ -44,29 +44,46 @@ msgstr "*** Sicherheits-Information für %h ***" msgid "Sorry, try again." msgstr "Das hat nicht funktioniert, bitte nochmal probieren." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -78,16 +95,16 @@ msgstr "Das hat nicht funktioniert, bitte nochmal probieren." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -100,21 +117,21 @@ msgstr "Das hat nicht funktioniert, bitte nochmal probieren." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -125,7 +142,7 @@ msgstr "Das hat nicht funktioniert, bitte nochmal probieren." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -136,13 +153,13 @@ msgstr "Das hat nicht funktioniert, bitte nochmal probieren." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -153,214 +170,237 @@ msgstr "Das hat nicht funktioniert, bitte nochmal probieren." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "Es kann kein Speicher mehr alloziert werden" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "Eine Prüfsumme erfordert einen Pfadnamen" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "Werte für »CWD« müssen mit »/«, »~« oder »*« beginnen" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "Werte für »CHROOT« müssen mit »/«, »~« oder »*« beginnen" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "Syntaxfehler, das reservierte Wort »%s« wird als Aliasname verwendet" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "ungültiger Wert für »notbefore«" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "ungültiger Wert für »notafter«" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "Wert für Timeout ist zu groß" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "ungültiger Wert für Timeout" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias »%s« ist bereits definiert" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "Interner Fehler, %s-Ãœberlauf" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "Die Standardeingabe kann nicht dupliziert werden: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "%s kann nicht ausgeführt werden: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "Fehler bei fork()" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "Fehler bei fork(): %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "Die Pipe kann nicht geöffnet werden: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (Befehl fortgesetzt) %s" @@ -474,352 +514,587 @@ msgstr "%s: Das Feld für die »runas«-Gruppe fehlt" msgid "%s exists but is not a directory (0%o)" msgstr "%s existiert, aber ist kein Verzeichnis (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "Das Verzeichnis »%s« kann nicht erstellt werden" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "Ändern des Modus von %s auf 0%o gescheitert" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "Fehler beim Lesen der Zeitdateizeile: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "Ungültige Zeitdateizeile: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "UUID kann nicht generiert werden" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: Protokollfehker: falscher Typ für %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: Protokollfehler: %s fehlt in der AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: Session-ID kann nicht formatiert werden" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s ist nicht gesetzt" + +# Kann die Escape-Sequenzen nicht auflösen? +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "Kann den iolog-Pfad nicht erweitern: %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "Kann den iolog-Pfad »%s« nicht erstellen" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "Ungültiger I/O Dateideskriptor: %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "Fehler beim Schließen des I/O Dateideskriptors %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "Ungültiges I/O log %s: »%s« wird verwendet, ist aber nicht vorhanden" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s; Der Wiederaufsetz-Punkt [%lld, %ld] kann nicht gefunden werden" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "Die Datei »%s« kann nicht geöffnet werden" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "Die Datei »%s/%s« kann nicht geöffnet werden" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "Fehler beim Kopieren von »%s/%s« nach »%s/%s«: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "Die Datei »%s« kann nicht in »%s« umbenannt werden" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "Die I/O Logdatei %s/%s fehlt" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: kann nicht zur Position %zu springen" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "Der Wiederaufsetz-Punkt [%lld, %ld] in %s/%s kann nicht gefunden werden" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: Der Wiederaufsetz-Punkt [%lld, %ld] kann nicht gefunden werden" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "Verbindung zum Relay kann nicht aufgebaut werden" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "Server-Nachricht ist zu groß: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "Event kann nicht zur Warteschlange hinzugefügt werden" -# XXX geht das besser? -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "Unerwarteter Status %d für %s" + +# XXX geht das besser? +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "Fehler der State Machine" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "ungültige AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "ungültige RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "ungültige AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: unerwarteter IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "Protokollfehler" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "unerwarteter type_case Wert %d in »%s« aus »%s«" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "unbekannter ClientMessage-Typ" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "Zeitablauf beim Senden zum Client %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "Schreib-Puffer fehlt für Client %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "Zeitablauf beim Lesen vom Client %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "Dateiende (EOF) von %s ohne korrekten TLS-Abscluß" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "Client-Nachricht ist zu groß: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "Client-Nachricht ist zu groß" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "ungültige ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "Kann die entfernte IP-Adresse nicht finden" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Kann die User-Daten nicht an das SSL-Objekt anhängen: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "Event kann nicht zur Warteschlange hinzugefügt werden" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "Konnte keinen Socket zum »Lauschen« einrichten" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "unerwartete Signal %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "sudo Log-Server" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Optionen:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "Pfad zur Konfigurationsdatei" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "Hilfe anzeigen und beenden" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "Nicht zum Hintergrundprozess werden, sondern im Vordergrund laufen" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "Wahrscheinlichkeit in Prozent für Verbindungsabbruch" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "Versionsinformation anzeigen und beenden" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C Version 1.3 oder höher ist notwendig" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "ungültiger Wert für »random drop«: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s Version %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "Unbekannter Benutzer %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "Unbekannte Gruppe %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "Iolog mode %s kann nicht geparst werden" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "Ungültiger Wert für %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS ist nicht unterstützt" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: ist kein voll qualifizierter Pfad" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "Unbekannte Syslog-Facility %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "Unbekannte Syslog-Priorität %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s: %d »[« ohne schliessende Klammer »]«: %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s/%d Ungültiger Konfigurations-Abschnitt: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s/%d Ungültige Konfigurationszeile: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d erwartetder Section Name: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "Ungültiger Wert für %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d unbekannter Schlüssel: %s" - -#: logsrvd/logsrvd_conf.c:1294 -#, c-format -msgid "unknown syslog facility %s" -msgstr "Unbekannte Syslog-Facility %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] ungültiger Schlüssel: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "Unbekannte Syslog-Priorität %s" +msgid "unable to open log file %s" +msgstr "Die Protokolldatei kann nicht geöffnet werden %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "Server-SSL-Kontext kann nicht initialisiert werden" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "SSL-Kontext kann nicht initialisiert werden" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "Kann die Journal-Datei nicht anlegen" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "Die Datei »%s« kann nicht gesperrt werden" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "Die Journal-Datei »%s« kann nicht gesperrt werden" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "Die Journal-Datei kann nicht geöffnet werden" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "In die Logdatei kann nicht geschrieben werden" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "Die Journal-Datei kann nicht geöffnet werden" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "unerwartetes Dateiende beim Lesen der Journal-Datei" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "Fehler beim Lesen der Journal-Datei" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "Ungültige Journal-Datei - kann nicht neu starten" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "Kann nicht zu [%lld, %ld] in der Journaldatei »%s« springen" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "Fehler beim Parsen der AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "Fehler beim Erstellen des Ein-/Ausgabe-Protokolls" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "Fehler beim Protokolliereb des Accept-Events" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "Fehler beim Parsen der RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "Fehler beim Protokollieren des Reject-Events" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "Fehler beim Protokollieren des Exit-Events" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "Das Log ist bereits abgeschlossen, kann nicht neu gestartet werden" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "Das Log konnte nicht wieder begonnen werden" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "Fehler beim Parsen der AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "Fehler beim Protokollieren des Alert-Events" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "Der Zeitstempel kann nicht formatiert werden, Länge %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "Fehler beim Schreiben des IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "Fehler beim Schreiben der ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "Fehler beim Schreiben des CommandSusped" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "TLS-Handshake mit dem Relay-Host fehlgeschlagen" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "Verbindung zum Relay-Host kann nicht aufgebaut werden" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: ungültiges ServerHello, fehlende server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "ungültiges ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "unbekannter ServerMessage-Typ" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "Zeitablauf beim Lesen vom Relay-Server »%s« (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "Zeitablauf beim Lesen vom Relay-Server" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "Der Name des Relay-Hosts passt nicht zum Zertifikat" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "Fehler beim Lesen vom Relay-Host" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "Vom Relay-Server kann nicht gelesen werden" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "Der Relay-Server hat die Verbindung geschlossen" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "Server-Nachricht ist zu groß" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "Zeitablauf beim Senden an den Relay-Server »%s« (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "Zeitablauf beim Senden an den Relay-Server" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "Fehler beim Schreiben des zum Relay-Server" @@ -868,177 +1143,163 @@ msgid "reject the command with the given reason" msgstr "Weise das Kommando mit dem angegebenen Grund zurück" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "Beende den Transfer nach Erreichen dieser Zeit" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "Teste den Audit-Server durch senden ausgewählter I/O-Logs n-Mal parallel" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "Fehler beim Lookup %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "Kann die Server IP-Adresse nicht finden" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "Fehler beim Lesen %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "Client-Nachricht ist zu groß: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: Schreib-Puffer wird bereits verwendet" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "unerwarteter I/O Event %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: unerwarteter Status %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "Fehler beim Empfangen der Nachricht vom Server: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "Abbruch-Nachricht vom Server empfangen: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "Kann die ServerNessage nicht auspacken" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: unerwarteter type_case Wert %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "Zeitablauf beim Lesen vom Server" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "unerwartetes Datei-Ende" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "Server-Nachricht ist zu groß: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "Zeitablauf beim Senden an den Server" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "Sowohl Restart-Punkt als auch die I/O-Log ID sind notwendig" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "Ein Restart-Punkt kann nicht angegeben werden, wenn keine Ein/Ausgabe gesendet ist." -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "Vorzeitig beendet mit Status %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "Abgelaufene Zeit zum Server gesendet [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "Commit Punkt vom Server empfangen [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "Timeout beim TLS-Handshake erreicht" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "Konnte den Event nicht setzen" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS-Kommunikation fehlgeschlagen: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "Kann kein SSL-Objekt anlegen: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Kann den Socket nicht an das SSL-Objekt anhängen: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "SSL-Kontext kann nicht initialisiert werden" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "Die TLS 1.2 Cyphersuite kann nicht auf »%s« gesetzt werden: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "Die TLS 1.3 Cyphersuite kann nicht auf »%s« gesetzt werden: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "SSL-Kontext kann nicht erzeugt werden: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "Kann die minimale Protokollversion nicht auf TLS 1.2 setzen: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "Kann die Diffie-Hellman Parameter nicht setzen: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "Kann die Diffie-Hellman Parameter nicht lesen: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "Die Datei »%s« kann nicht geöffnet werden" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "Die aktuelle Zeit kann nicht ausgelesen werden" @@ -1279,20 +1540,12 @@ msgstr "" " #3) Mit großer Macht kommt große Verantwortung.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "Unbekannte Benutzer-ID: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "Unbekannter Benutzer: %s" +msgid "unknown uid %u" +msgstr "Unbekannte Benutzer-ID %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1349,9 +1602,10 @@ msgstr "Nicht unterstütztes Ausgabeformat %s" msgid "%s: input and output files must be different" msgstr "%s: Eingabe- und Ausgabedatei müssen unterschiedlich sein" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "Standardwerte für sudoers können nicht initialisiert werden" @@ -1362,8 +1616,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: unbekanntes Schlüsselwort: %s" +msgid "%s: unknown key word %s" +msgstr "%s: unbekanntes Schlüsselwort %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1395,7 +1649,7 @@ msgstr "Analysefehler in %s nahe Zeile %d\n" msgid "parse error in %s\n" msgstr "Analysefehler in %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1450,7 +1704,7 @@ msgstr "" " -V, --version Zeige Versionsinformationen an und Ende" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "unbekannter defaults-Eintrag »%s«" @@ -1467,12 +1721,12 @@ msgstr "Die GMT-Zeit kann nicht bekommen werden" msgid "unable to format timestamp" msgstr "Der Zeitstempel kann nicht formatiert werden" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "Zu viele sudoers Einträge, Maximum ist %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "Die Umgebunsvariable SUDOERS_BASE ist nicht gesetzt und die Option -b ist nicht angegeben." @@ -2067,6 +2321,27 @@ msgstr "Schalte SELinux RBAC Support ein" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Pfad zur Datei die beim ersten sudo-Lauf erzeugt wird: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Weitere Kommando abfangen und sudoers Restriktionen auf sie anwenden" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Protokolliere von diesem Kommando gestartete Kind-Prozesse" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Den Exitcode des ausgeführten Befehls protokollieren" + +# XXX Check! +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Folgende Kommando in einer nachverfolgten Sitzung müssen authentifiziert werden" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Erlaube einem abgefangenen Kommando die Ausführung von setuid oder setgid Programmen" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2087,52 +2362,62 @@ msgstr "%s:%d:%d: Kein Wert für »%s« angegeben" msgid "%s: no value specified for \"%s\"" msgstr "%s: Kein Wert für »%s« angegeben" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: Ungültiger Operator »%c=« für »%s«" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: Ungültiger Operator »%c=« für Option »%s«" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: Die Option »%s« wird ohne Wert verwendet" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: Die Option »%s« wird ohne Wert verwendet" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: Ungültiger »Defaults« Typ 0x%x für Option »%s«" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: Ungültiger »Defaults« Typ 0x%x für Option »%s«" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: Der Wert »%s« ist für die Option »%s« ungültig" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: Der Wert »%s« ist für die Option »%s« ungültig" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: Werte für »%s« müssen mit »/«, »~« oder »*« beginnen" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: Werte für »%s« müssen mit »/«, »~« oder »*« beginnen" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: Werte für »%s« müssen mit einem »/« beginnen" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: Werte für »%s« müssen mit einem »/« beginnen" @@ -2150,12 +2435,12 @@ msgstr "Das Environment kann nicht neu erstellt werden" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "Leider dürfen die folgenden Umgebungsvariablen nicht gesetzt werden: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "Syntax-Fehler in %s bei der Zeile %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "Syntax-Fehler in %s" @@ -2195,56 +2480,51 @@ msgstr "Das Symbol »group_plugin« kann in %s nicht gefunden werden" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: Die Major-Version %d des Group-Plugins ist inkompatibel, erwartet wird %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "»%s« ist keine gültige IP-Adresse" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "»%s« ist keine gültige Netzmaske" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Lokale IP-Adresse und Netzmaske:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "Unbekannte Gruppe: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "Kann die Sequenz-Datei nicht aktualisieren" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "In die I/O Logdatei kann nicht geschrieben werden: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "Die Datei %s%s kann nicht erstellt werden" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: Interner Fehler, Logdatei für Event %d nicht geöffnet" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "Die Uhrzeit kann nicht ausgelesen werden" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: Interner Fehler, ungültiges Signal %d" @@ -2291,15 +2571,15 @@ msgstr "LDAP-Adresstyp wird nicht unterstützt: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "ldap- und ldaps-Adressen können nicht zusammen verwendet werden" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "doppelte sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "sudoOption kann nicht konvertiert werden: %s%s%s" @@ -2312,107 +2592,111 @@ msgstr "Das Audit-System kann nicht geöffnet werden" msgid "unable to send audit message" msgstr "Die Audit-Nachricht kann nicht gesendet werden" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "Fehler in der Event-Schleife" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Erzeugen eines neuen SSL_CTX Objektes fehlgeschlagen: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "Kann das CA-Bundle »%s« nicht laden" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "Laden von Zertifikat »%s« fehlgeschlagen" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "Laden des privaten Schlüssels »%s« fehlgeschlagen" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Kann kein SSL-Objekt anlegen: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "TLS Verbindung zu %s:%s fehlgeschlagen: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS Initialisierung war nicht erfolgreich" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS Handshake war nicht erfolgreich" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: Interner Fehler, ungültiger Exit-Status %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "Kann die ServerNessage nicht auspacken" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "Verbindung zum Logserver verloren" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "Schreib-Puffer fehlt" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "Verbindung zum Logserver kann nicht aufgebaut werden" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "Der Benutzer ist NICHT in der sudoers-Datei enthalten" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "Der Benutzer ist NICHT auf dem Rechner autorisiert" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "Der Befehl ist nicht erlaubt" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s darf sudo für %s nicht verwenden. Dieser Vorfall wird gemeldet.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Leider darf der Benutzer %s sudo für %s nicht verwenden.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Leider darf der Benutzer %s »%s%s%s« als %s%s%s auf %s nicht ausführen.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: Befehl nicht gefunden" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2421,27 +2705,22 @@ msgstr "" "Im aktuellen Verzeichnis ».« gefundenes »%s« wird ignoriert.\n" "Verwenden Sie »sudo ./%s«, wenn dies der gewünschte Befehl »%s« ist." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u Fehlversuch bei der Passwort-Eingabe" msgstr[1] "%u Fehlversuche bei der Passwort-Eingabe" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "Fehler bei der Authentifizierung" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "Ein Passwort ist notwendig" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "Die Protokolldatei kann nicht geöffnet werden: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "In die Logdatei kann nicht geschrieben werden: %s" @@ -2451,7 +2730,7 @@ msgstr "In die Logdatei kann nicht geschrieben werden: %s" msgid "digest for %s (%s) is not in %s form" msgstr "Prüfsumme für %s (%s) ist nicht in der Form %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2460,7 +2739,7 @@ msgstr "" "\n" "LDAP-Rolle: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2468,38 +2747,38 @@ msgstr "" "\n" "Sudoers-Eintrag:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Optionen: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Befehle:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Passende Defaults-Einträge für %s auf %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Runas und befehlsspezifische Standardwerte für %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Der Benutzer %s darf die folgenden Befehle auf %s ausführen:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Der Benutzer %s darf sudo auf dem Rechner %s nicht ausführen.\n" @@ -2514,64 +2793,64 @@ msgstr "ignoriere die unvollständige sudoRole: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "Ungültiges LDIF-Attribut: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "ungültige Option »%.*s« durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "Die Netzwerkadressliste kann nicht eingelesen werden" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "Benutzername nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "User-ID nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "Gruppen-ID nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "Hostname nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "Ungültiges Arbeitsverzeichnis: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "Ungültiges »chroot« Verzeichnis: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "%s kann nicht ausgeführt werden" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: ungültige Mode-Flags vom sudo-Frontend: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers-Policy-Plugin Version %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-Datei-Grammatik-Version %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2580,27 +2859,27 @@ msgstr "" "\n" "Sudoers-Pfad: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch-Pfad: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf-Pfad: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret-Pfad: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "Der Hook vom Typ %d kann nicht registriert werden (Version %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "Der Hook vom Typ %d kann nicht deregistriert werden (Version %d.%d)" @@ -2669,48 +2948,48 @@ msgstr "Die Gruppen für %s können nicht eingelesen werden" msgid "unable to parse gids for %s" msgstr "Die Gruppen für %s können nicht geparst werden" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "Stack-Ãœberlauf der Zugriffsrechte" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "Stack-Bereichsunterschreitung der Zugriffsrechte" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "Wechsel zur root-GID ist nicht möglich" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "Wechsel zur runas-UID ist nicht möglich" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "Die runas-Gruppen können nicht gesetzt werden" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "Wechsel zur runas-GID ist nicht möglich" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "Wechsel zur sudoers-GID ist nicht möglich" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "Zu viele Prozesse" @@ -2739,254 +3018,256 @@ msgstr "Die SSS-Quelle kann nicht initialisiert werden. Ist SSSD auf dem Rechner msgid "unable to find symbol \"%s\" in %s" msgstr "Das Symbol »%s« kann in %s nicht gefunden werden" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "Problem mit den Standard-Einträgen" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "Keine gültige sudoers-Quelle gefunden, Programmende" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "Der Benutzer darf das root-Verzeichnis nicht auf »%s« ändern" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "Sie dürfen die Option -R nicht mit dem Kommando »%s« verwenden" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "Der Benutzer darf das Verzeichnis nicht auf %s ändern" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "Sie dürfen die Option -C nicht mit dem Kommando »%s« verwenden" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "Kein Kommando angegeben" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers gibt an, dass root sudo nicht verwenden darf" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "Der Benutzer darf das »closefrom«-Limit nicht überschreiben" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "Sie dürfen die Option -C nicht verwenden" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "Zeitstempelbesitzer (%s): Benutzer existiert nicht" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "Kein tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "Sie müssen ein TTY haben, um sudo zu verwenden" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "Ungültiger Shell für den Benutzer %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "Befehl ist im aktuellen Verzeichnis" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "Der Benutzer darf keinen Kommand-Timeout angeben" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "Sie dürfen keinen Timeout angeben" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "Der Benutzer darf das Environment nicht erhalten" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "Sie dürfen das Environment nicht erhalten" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "Der Befehl ist zu lang" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "»sudoedit« muss nicht mittels »sudo« aufgerufen werden" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "Die Datei »%s« kann nicht gelesen werden" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "stat konnte nicht auf %s angewendet werden" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s ist keine reguläre Datei" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s gehört UID %u, sollte UID %u gehören" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s ist für alle beschreibbar (world writable)" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s gehört GID %u, sollte allerdings %u gehören" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "Nur root kann »-c %s« verwenden" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "Unbekannte Anmeldeklasse: %s" +msgid "unknown login class %s" +msgstr "Unbekannte Anmeldeklasse »%s«" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "Hostname %s kann nicht aufgelöst werden" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "Ungültige Filteroption: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "Ungültige maximale Wartezeit: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "Ungültiger Geschwindigkeitsfaktor: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "ungültiger Zeitversatz »%s«" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/Zeit: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Sudo-Sitzung wird abgespielt: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "TTY konnte nicht in den Raw-Modus versetzt werden" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "" "Warnung: Ihr Terminal ist zu klein, um das Protokoll korrekt\n" "wiederzugeben.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Protokollgeometrie ist %d x %d, die Geometrie Ihres Terminals ist %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Wiedergabe beendet, eine Taste drücken um das Terminal wiederherzustellen." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "Mehrdeutiger Ausdruck »%s«" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "»)« ohne öffnende Klammer im Ausdruck" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "Unbekannter Suchbegriff »%s«" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s erfordert ein Argument" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "ungültiger regulärer Ausdruck: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "Datum »%s« konnte nicht analysiert werden" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "»(« ohne schließende Klammer im Ausdruck" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "Ungültiges nachgestelltes »or«" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "Ungültiges nachgestelltes »!«" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "Unbekannter Suchtyp %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "Aufruf: %s [-hnRS] [-d Verzeichnis] [-m Max_Wartezeit] [-s Geschwindigkeitsfaktor] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "Aufruf: %s [-h] [-d Verzeichnis] -l [Suchausdruck]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2995,7 +3276,7 @@ msgstr "" "%s – sudo-Sitzungsprotokolle abspielen\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3212,22 +3493,17 @@ msgstr "%s: Analyse OK\n" msgid "%s busy, try again later" msgstr "%s ist in Verwendung, versuchen Sie es später erneut" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "Die Datei »%s« kann nicht gesperrt werden" - # XXX #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Trotzdem ändern? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Warnung: %s:%d:%d: nicht verwendet: %s »%s«" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3236,7 +3512,7 @@ msgstr "" "%s – Die sudoers-Datei sicher bearbeiten\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3260,11 +3536,11 @@ msgstr "" msgid "empty string" msgstr "leere Zeichenkette" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "leere Gruppe" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "leere Netgroup" @@ -3272,14 +3548,14 @@ msgstr "leere Netgroup" msgid "invalid line continuation" msgstr "Ungültiger Zeilenfortsetzung" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "Ungültiges IPv6 Adresse: %s" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "unerwarteter Zeilenumbruch in Zeichenkette" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "Zu viele geschachtelte include-Einträge" diff --git a/plugins/sudoers/po/eo.mo b/plugins/sudoers/po/eo.mo Binary files differindex 0861e57ce..c34824b87 100644 --- a/plugins/sudoers/po/eo.mo +++ b/plugins/sudoers/po/eo.mo diff --git a/plugins/sudoers/po/eo.po b/plugins/sudoers/po/eo.po index 734ec2db8..6c8a6994c 100644 --- a/plugins/sudoers/po/eo.po +++ b/plugins/sudoers/po/eo.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-03 19:01-0400\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-20 12:38-0400\n" "Last-Translator: Keith Bowes <zooplah@gmail.com>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" "Language: eo\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.7\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "sintaksa eraro" @@ -43,29 +43,46 @@ msgstr "*** SEKURECO: informoj por %h ***" msgid "Sorry, try again." msgstr "MalÄuste, reprovu." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -77,16 +94,16 @@ msgstr "MalÄuste, reprovu." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -99,21 +116,21 @@ msgstr "MalÄuste, reprovu." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -124,7 +141,7 @@ msgstr "MalÄuste, reprovu." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -135,13 +152,13 @@ msgstr "MalÄuste, reprovu." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -152,214 +169,237 @@ msgstr "MalÄuste, reprovu." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "ne eblas rezervi memoron" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "resumo postulas vojnomon" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "valoroj por \"CWD\" devas komenciÄi per '/', '~' aÅ '*'" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "valoroj por \"CHROOT\" devas komenciÄi per '/', '~' aÅ '*'" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "sintakseraro: rezervita vorto %s uzata kiel kromnomo" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "malvalida valoro notafter" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "validiga valoro notafter" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "eksvalidiÄo-valoro tro grandas" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "malvalida eksvalidiÄo-valoro" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Kromnomo \"%s\" jam ekzistas" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "interna eraro, troo en %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "ne eblas kopii enigon: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "ne eblas plenumigi %s-on: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "ne eblas forki" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "ne eblas forki: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "ne eblas malfermi tubon: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s: %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (komando daÅrigis) %s" @@ -473,351 +513,585 @@ msgstr "%s: mankas kampo de runa grupo" msgid "%s exists but is not a directory (0%o)" msgstr "%s ekzistas sed ne dosierujo (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "ne eblas mkdir-i: %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "ne eblas ÅanÄi reÄimon de %s al 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "nelegebla tempo-registra dosiero: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "malvalida linio en la tempo-registran dosieron: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "ne eblas genero de UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: protokoleraro: erara tipo per %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: protokola eraro: %s estas malhavata de AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: ne eblas formati seancan identigilon" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s ne estas valorizita" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "ne eblas etendi iolog-vojn %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "ne eblas krei iolog-vojon %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "nevalida eneliga dosierpriskribilo %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "eraro dum fermi eneligan dosierpriskribilon %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "nevalida eneliga protokolo %s: %s estas referencita sed ne difinita" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: ne eblas trovi daÅrigan punkton [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "ne eblas malfermi: %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "ne eblas malfermi: %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "ne eblas kopii de %s/%s al %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "ne eblas alinomo de %s al %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "mankas eneliga protokolo %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: ne eblas serĉi antaÅen: %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "ne eblas trovi daÅrigan punkton [%lld, %ld] en %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: ne eblas trovi daÅrigan punkton [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "ne eblas konektiÄi al relajso" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "servila mesaÄo tro granda: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "ne eblas aldoni eventon al atendovico" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "neatendita stato %d por %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "statmaÅina eraro" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "nevalida AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "nevalida RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "nevalida AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: neatendita IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "protokolo-eraro" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neatendita valoro %d de type_case en %s el %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "nekonata ClientMessage-tipo" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "eksvalidiÄo dum skribado al kliento %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "mankanta skribobufo por kliento %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "eksvalidiÄo dum legado el kliento %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "Dosierfino de %s sen konvena TLS-finiÄo" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "klienta mesaÄo tro grandas: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "klienta mesaÄo tro grandas" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "nevalida ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "ne eblas atingi foran IP-adreson" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Ne eblas almeti uzanto-datumojn al la SSL-objekto: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "ne eblas aldoni eventon al atendovico" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "ne eblas agordi aÅskultan Åtopilingon" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "neatendita signalo %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "protokolo-servilo de sudo" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Modifiloj:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "vojo al la agordo-dosiero" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "montri helpan mesaÄon kaj finiÄi" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "ne disforkiÄi, plenumiÄi en la malfono" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "elcenta Åanco, ke konektoj malkonektiÄos" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "montri eldonan informon kaj finiÄi" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C, eldono 1.3 aÅ pli postulata" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "validiga hazarda interrompiÄo-valoro: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s eldono %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "nekonata uzanto %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "nekonata grupo %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "ne eblas analizi iolog-reÄimon %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "nevalida valoro por %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS ne regata" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: ne tute kvalifikita vojo" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "nekonata syslog-instalaĵo: %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "nekonata syslog-prioritato: %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d '[' sen kongruanta ']': %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d nevalida agordo-sekcio: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d nevalida agordo-dosiera linio: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d atendas sekcian nomon: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "nevalida valoro por %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d nekonata Ålosilvorto: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "nekonata syslog-instalaĵo: %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] nevalida Ålosilo: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "nekonata syslog-prioritato: %s" +msgid "unable to open log file %s" +msgstr "ne eblas malfermi protokolon %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "ne eblas ekigi servilan TLS-kuntekston" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "ne eblas ekigi relajsan SSL-kuntekston" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "ne eblas krei ĵurnalon" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "ne eblas Ålosi: %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "ne eblas Ålosi ĵurnalon" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "ne eblas malfermi ĵurnalon" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "ne eblas skribi ĵurnalon: %s" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "ne eblas alinomi ĵurnalon" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "neatendita dosierfino en ĵurnalo" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "eraro dum legi prelegan ĵurnalon" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "nevalida ĵurnalo, ne eblas restarti" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "ne eblas atingi punkton [%lld, %ld] en ĵurnalo %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "neanalizebla AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "malsukcesis kreiÄo de eneliga protokolo" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "malsukcesis protokoli akcepto-eventon" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "neanalizebla RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "malsukcesis protokoli malakcepto-eventon" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "malsukcesis protokoli finigo-eventon" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "protokolo jam estas kompleta, ne eblas restartigi Äin" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "ne eblas restartigi protokolon" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "neanalizebla AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "malsukcesis protokoli alarmo-eventon" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "ne eblas aranÄi tempo-bufron, longo %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "neskribebla IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "neskribela ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "neskribela CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "Malsukcesis TLS-manpremo kun relajsa retnodo" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "ne eblas konektiÄi al relajsa retnodo" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: nevalida ServerHello, server_id mankas" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "nevalida ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "nekonata ServerMessage-tipo" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "eksvalidiÄo dum legado el relajso %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "eksvalidiÄo dum legado el relajso" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "relajsa retnodnomo ne kongruas kun atestilo" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "eraro dum legi el relajso" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "ne eblas legi el relajso" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "relajsa servilo fermis la konekton" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "servila mesaÄo tro granda" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "eksvalidiÄo dum skribado al relajso %s (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "eksvalidiÄo dum skribado al relajso" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "eraro dum skribi al relajso" @@ -866,177 +1140,163 @@ msgid "reject the command with the given reason" msgstr "malakcepti la komandon kun la donita kialo" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "haltigi transigon post atingo de ĉi tiu tempo" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "provi revizian servilon per sendado de elektita eneliga logo n-foje paralele" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "ne eblas serĉi je %s:%s %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "ne eblas atingi servilan IP-adreson" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "ne eblas legi je %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "klienta mesaÄo tro grandas: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: skribobufo jam uzata" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "neatendita eneliga evento %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: neatendita stato %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "erarmesaÄo ricevita el servilo: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "abortiga mesaÄo ricevita el servilo: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "neelpakebla ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s neatendita valoro %d de type_case" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "eksvalidiÄo dum legado el servilo" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "trofrua dosierfino" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "servila mesaÄo tro granda: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "eksvalidiÄo dum skribado al servilo" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "kaj restartiga punkto kaj iolog-identigilo estas specifendaj" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "ne rajtas estigi restartigan punkton kiam neniu eneligaĵo estas sendita" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "trofrue finiÄis kun stato %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "pasinta tempo sentita al servilo [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "kunsendita punkto ricevita el servilo [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "EksvalidiÄo de TLS-manpremo okazis" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "ne eblas apliki eventon" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS-konekto malsukcesis: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "ne eblas generi SSL-objekton: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Ne eblas almeti Åtopilingon al la SSL-objekton: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "ne eblas ekigi TLS-kuntekston" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "ne agordi ĉifraron de TLS 1.2 al %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "ne agordi ĉifraron de TLS 1.3 al %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "ne eblas krei TLS-kuntekston: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "ne ablas elekti minimuman eldonon de TLS al 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "ne ablas agordi parametrojn de diffie-hellman: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "ne ablas legi parametrojn de diffie-hellman: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "ne eblas malfermi: %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "ne eblas akiri la tempon de la tago" @@ -1276,20 +1536,12 @@ msgstr "" " #3) Granda povo devigas grandan responson.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "nekonata uid: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "nekonata uzanto: %s" +msgid "unknown uid %u" +msgstr "nekonata uid %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1346,9 +1598,10 @@ msgstr "nesubtenata elig-formo %s" msgid "%s: input and output files must be different" msgstr "%s: eliga kaj eniga dosieroj devas esti malsamaj" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "ne eblas ekigi aÅtomatajn valorojn de sudoers" @@ -1359,8 +1612,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: nekonata Ålosilvorto: %s" +msgid "%s: unknown key word %s" +msgstr "%s: nekonata Ålosilvorto %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1392,7 +1645,7 @@ msgstr "analiza eraro en %s proksime al linio %d\n" msgid "parse error in %s\n" msgstr "analiza eraro en %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1448,7 +1701,7 @@ msgstr "" " -V, --version montri informon pri versio kaj eliri" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "en defaults estas nekonata enigo \"%s\"" @@ -1465,12 +1718,12 @@ msgstr "ne eblas atingi GMT-tempon" msgid "unable to format timestamp" msgstr "ne eblas aranÄi tempo-indikilon" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "tro multaj enigoj de sudoers, maksimume %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "la medivariablo SUDOERS_BASE ne estas difinita kaj la modifilo -b ne estis indikata." @@ -2062,6 +2315,26 @@ msgstr "Aktivigu regon de SELinux-RBAC" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Vojo al la dosiero, kiu estas kreota la unan fojon, kiam sudo estas plenumiÄinta: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Interkapti pluajn komandojn kaj apliki al ili limigojn el sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Protokoli idajn procezojn plenumitajn de la komandojn" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Protokoli la eligon de komandoj" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Sinsekvaj komandoj en interkaptita seanco devas esti aÅtentigita" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Permesi al interkaptita komando plenumi iujn setuid- aÅ setgid-programojn" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2082,52 +2355,62 @@ msgstr "%s:%d:%d: neniu valoro indikita por \"%s\"" msgid "%s: no value specified for \"%s\"" msgstr "%s: neniu valoro indikita por \"%s\"" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: nevalida operatoro \"%c=\" por \"%s\"" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: nevalida operator \"%c=\" por \"%s\"" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: parametro \"%s\" ne povas havi valoron" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: parametro \"%s\" ne povas havi valoron" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: malvalida Defaults-tipo 0x%x por parametro \"%s\"" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: malvalida Defaults-tipo 0x%x por parametro \"%s\"" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: valoro \"%s\" estas malvalida por parametro \"%s\"" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: valoro \"%s\" estas malvalida por parametro \"%s\"" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: valoroj por \"%s\" devas komenciÄi per '/', '~' aÅ '*'" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: valoroj por \"%s\" devas komenciÄi per '/', '~' aÅ '*'" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: valoroj por \"%s\" devas komenciÄi per '/'" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: valoroj por \"%s\" devas komenciÄi per '/'" @@ -2145,12 +2428,12 @@ msgstr "ne eblas rekonstrui la medion" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "bedaÅre vi ne estas permesata valorizi la jenajn medivariablojn: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "analiza eraro en %s proksime al linio %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "analiza eraro en %s" @@ -2190,56 +2473,51 @@ msgstr "ne eblas trovi simbolon \"group_plugin\" en %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: nekongrua grupa kromprogramo: ĉefa eldono %d, atendita %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "ne eblas trakti IP-adreson \"%s\"" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "ne eblas trakti retmaskon \"%s\"" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Loka IP-adresa kaj retmaska paroj:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "nekonata grupo: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "ne eblas Äisdatigi sinsekvan dosieron" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "ne eblas skribi al eneliga protokoldosiero: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "ne eblas krei: %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: interna eraro, protokola dosiero de en/eligo por evento %d ne estas malferma" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "ne eblas legi la horloÄon" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: interna eraro, malvalida signalo %d" @@ -2286,15 +2564,15 @@ msgstr "nekonata retadresa tipo de LDAP: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "ne eblas miksi sekurajn kaj nesekurajn retadresojn de LDAP" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "ne eblas duobligi sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "ne eblas konverti sudoOption: %s%s%s" @@ -2307,107 +2585,111 @@ msgstr "ne eblas malfermi revizian sistemon" msgid "unable to send audit message" msgstr "ne eblas sendi revizian mesaÄon" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "eraro en evento-iteracio" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "KreiÄo de nova objekto SSL_CTX malsukcesis: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "Ne eblas Åargi aÅtoritatan atestilaron: %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "ne eblas Åargi atestilon %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "ne eblas ÅarÄi privatÅlosilon %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Ne eblas generi SSL-objekton: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "TLS-konekto al %s:%s malsukcesis: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS-komenciÄo malsukcesis" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS-manpremo malsukcesis" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: interna eraro, malvalida finiÄo-stato %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "neelpakebla ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "konekto al protokolo-servilo perdita" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "mankanta skribobufo" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "ne eblas konektiÄi al protokolo-servilo" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "uzanto NE estas en sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "uzanto NE permesata en gastiganto" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "komando ne permesata" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s ne estas en la dosiero sudoers. Ĉi tiu estos raportita.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s ne estas permesata plenumigi sudo-on en %s. Ĉi tio estos raportita.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "BedaÅre uzanto %s ne rajtas plenumigi sudo en %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "BedaÅre uzanto %s ne rajtas plenumigi '%s%s%s' kiel %s%s%s en %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: komando ne trovita" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2416,27 +2698,22 @@ msgstr "" "ni malatentas \"%s\" trovita en '.'\n" "Uzu \"sudo ./%s\" se tio estas la \"%s\" , kiun vi volas plenumigi." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u malÄusta pasvorta provo" msgstr[1] "%u malÄustaj pasvortaj provoj" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "aÅtentiga malsukceso" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "pasvorto estas bezonata" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "ne eblas malfermi protokolon: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "ne eblas skribi al protokolo: %s" @@ -2446,7 +2723,7 @@ msgstr "ne eblas skribi al protokolo: %s" msgid "digest for %s (%s) is not in %s form" msgstr "resumo por %s (%s) ne estas laÅ la formo %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2455,7 +2732,7 @@ msgstr "" "\n" "LDAP-rolo: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2463,38 +2740,38 @@ msgstr "" "\n" "Ero en sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Modifiloj: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Komandoj:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Kongruantaj eroj de Defaults: %s en %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Plenumigkiela komando-specifaj aÅtomataĵoj por %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Uzanto %s rajtas plenumigi la jenajn komandojn en %s:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Uzanto %s ne rajtas plenumigi sudo-on en %s.\n" @@ -2509,64 +2786,64 @@ msgstr "ni preteratentas malkompletan sudoRole: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "malvalida LDIF-atributo: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "malvalida %.*s difinita de sudo-fasado" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "ne eblas trakti reto-adresan liston" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "uzantnomo ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "uzanto-ID ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "grupo-ID ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "gastiganta nomo ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "nevalida kuranta dosierujo: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "malvalida chroot-dosierujo: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "ne eblas plenumigi: %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: nevalidaj reÄimaj flagoj el la fasado de sudo: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Eldono %s de la konduta kromprogramo\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Eldono %d de la gramatikilo de sudoers\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2575,27 +2852,27 @@ msgstr "" "\n" "Vojo de sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "vojo de nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "vojo de ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "vojo de ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "ne eblas registri hokon el tipo %d (versio %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "ne eblas malregistri hokon el tipo %d (versio %d.%d)" @@ -2664,48 +2941,48 @@ msgstr "ne eblas trakti grupon en %s" msgid "unable to parse gids for %s" msgstr "ne eblas trakti gids por %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "permeso-staka troo" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "permeso-staka maltroo" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "ne eblas ÅanÄi al radika gid" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "ne eblas ÅanÄi al plenumigkiela gid" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "ne eblas elekti vektoron de plenumigkiela grupo" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "ne eblas ÅanÄi al plenumigkiela uid" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "ne eblas ÅanÄi al gid de sudo-redaktantoj" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "tro da procezoj" @@ -2734,252 +3011,254 @@ msgstr "ne eblas ekigi SSS-fonton. Ĉu SSSD estas instalita en via maÅino?" msgid "unable to find symbol \"%s\" in %s" msgstr "ne eblas trovi simbolon \"%s\" en %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problemoj kun aÅtomataj eroj" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "ne validaj fontotekstoj de sudoers trovita, ĉesiganta" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "uzanto ne rajtas ÅanÄi radikan dosierujon al %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "vi ne rajtas uzi la parametron -R kun %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "uzanto ne rajtas ÅanÄi dosierujon al %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "vi ne rajtas uzi la parametron -D kun %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "Neniu komando donita" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers specifas, ke ĉefuzanto ne rajtas sudo-i" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "uzanto ne permesata superregi la limigon de closefrom" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "vi ne rajtas uzi la parametron -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "tempo-indikila posedanto (%s): Nenia uzanto" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "neniu tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "bedaÅre vi devas havi tty-on por plenumigi sudo-on" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "nevalida Åelo por uzanto %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "komando en nuna dosierujo" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "uzanto ne rajtas elekti komando-eksvalidiÄon" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "bedaÅre vi ne rajtas elekti komando-eksvalidiÄon" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "uzanto ne rajtas konservi la medion" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "bedaÅre vi ne rajtas konservi la medion" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "komando tro longas" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit ne devas plenumiÄi per sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "ne eblas legi %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "ne eblas apliki stat al %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s ne estas normala dosiero" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s estas estrita de uid %u, devas esti %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s estas skribebla de ĉiuj" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s estas estrita de gid %u, devas esti %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "nur ĉefuzanto rajtas uzi \"-c %s\"" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" +msgid "unknown login class %s" msgstr "nekonata ensaluta klaso: %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "ne eblas trovi gastiganton %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "malvalida filtrila elekto: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "malvalida maksimuma atendo: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "malvalida rapida faktoro: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "nevalida eksvalidiÄo-deÅovo %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/tempo-registrado: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Refaranta sudo-seancon: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "ne eblas elekti tty-on en nudan reÄimon" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Averto: via terminalo estas tro malgranda por konvene reskribi la protokolon.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Protokola grando estas %dx%d, sed via terminala grando estas %dx%d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Refarado finita, premu iu ajn klavon por restarigi la terminalon." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "ambigua esprimo \"%s\"" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "mankas krampo kongruanta al ')' en esprimo" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "nekonata serĉaĵo \"%s\"" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s bezonas parametron" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "malvalida regulesprimo: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "ne eblis analizi daton \"%s\"" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "mankas krampo kongruanta al '(' en esprimo" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "malvalida posta \"or\"" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "malvalida posta \"!\"" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "nekonata serĉtipo %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "uzado: %s [-hnRS] [-d ujo] [-m num] [-s num] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "uzado: %s [-h] [-d ujo] -l [serĉaĵo]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2988,7 +3267,7 @@ msgstr "" "%s - refari sudo-seancajn protokolojn\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3200,21 +3479,16 @@ msgstr "%s: analizita senerare\n" msgid "%s busy, try again later" msgstr "%s okupata, reprovu pli malfrue" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "ne eblas Ålosi: %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Ĉu redakti ja? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Averto: %s:%d:%d: neuzata %s \"%s\"" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3223,7 +3497,7 @@ msgstr "" "%s - sekure redakti la dosieron sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3247,11 +3521,11 @@ msgstr "" msgid "empty string" msgstr "malplena ĉeno" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "malplena grupo" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "malplena retgrupo" @@ -3259,17 +3533,20 @@ msgstr "malplena retgrupo" msgid "invalid line continuation" msgstr "malvalida linio-daÅrigo" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "malvalida IPv6-adreso" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "neatendita linirompo en ĉeno" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "tro da niveloj de inkluzivaĵoj" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d nekonata Ålosilvorto: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "ne eblas akiri metodon de TLS-servilo: %s" diff --git a/plugins/sudoers/po/fr.mo b/plugins/sudoers/po/fr.mo Binary files differindex 2df3b830b..85ac116ab 100644 --- a/plugins/sudoers/po/fr.mo +++ b/plugins/sudoers/po/fr.mo diff --git a/plugins/sudoers/po/fr.po b/plugins/sudoers/po/fr.po index e4de57588..bc41a3156 100644 --- a/plugins/sudoers/po/fr.po +++ b/plugins/sudoers/po/fr.po @@ -5,10 +5,10 @@ # Frédéric Marchal <fmarchal@perso.be>, 2021 msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-03 17:21+0200\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-23 19:47+0200\n" "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -18,7 +18,7 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n >= 2);\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "erreur de syntaxe" @@ -42,29 +42,46 @@ msgstr "*** Informations de sécurité pour %h ***" msgid "Sorry, try again." msgstr "Désolé, essayez de nouveau." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -76,16 +93,16 @@ msgstr "Désolé, essayez de nouveau." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -98,21 +115,21 @@ msgstr "Désolé, essayez de nouveau." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -123,7 +140,7 @@ msgstr "Désolé, essayez de nouveau." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -134,13 +151,13 @@ msgstr "Désolé, essayez de nouveau." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -151,214 +168,237 @@ msgstr "Désolé, essayez de nouveau." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "impossible d'allouer la mémoire" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "un résumé (digest) nécessite un chemin d'accès" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "les valeurs de « CWD » doivent commencer par « / », « ~ » ou « * »" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "les valeurs de « CHROOT » doivent commencer par « / », « ~ » ou « * »" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "erreur de syntaxe, le mot réservé %s est utilisé comme un nom de synonyme" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "valeur « notbefore » (pas avant) invalide" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "valeur « notafter » (pas après) invalide" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "valeur trop grande pour le délai d'expiration" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "valeur invalide pour le délai d'expiration" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "L'alias « %s » est déjà défini" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "erreur interne, dépassement de %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "duplication (dup) de stdin impossible : %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "exécution de %s impossible : %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "création du processus fils impossible" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "création du processus fils impossible : %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "ouverture du tube impossible : %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (suite de la commande) %s" @@ -472,351 +512,585 @@ msgstr "%s: il manque le champ précisant le groupe effectif (runas)" msgid "%s exists but is not a directory (0%o)" msgstr "%s existe mais n'est pas un répertoire (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "création du répertoire (mkdir) %s impossible" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "impossible de changer le mode de %s pour lui affecter 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "erreur de lecture dans le fichier de timing : %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "ligne invalide dans le fichier de timing : %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "impossible de générer le UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s : erreur de protocole : mauvais type pour %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s : erreur de protocole : %s est manquant dans AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s : impossible de formater l'id de session" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s : %s n'est pas défini" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "impossible de développer le chemin iolog %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "impossible de créer le chemin iolog %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "iofd %d invalide" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "erreur à la fermeture du iofd %d : %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "journal E/S %s invalide : il est fait référence à %s alors qu'il n'est pas présent" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s : impossible de trouver le point de redémarrage [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "ouverture de %s impossible" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "ouverture de %si/%s impossible" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "impossible de copier %s/%s vers %s/%s : %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "impossible de renommer %s en %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "fichier du journal E/S %s/%s manquant" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s : impossible d'examiner vers l'avant de %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "impossible de trouver le point de redémarrage [%lld, %ld] dans %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s : impossible de trouver le point de redémarrage [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "impossible de se connecter au relai" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "message serveur trop grand : %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "impossible d'ajouter l'événement à la queue" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "état %d inattendu pour %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "erreur de la machine à états" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "AcceptMessage invalide" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "RejectMessage invalide" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "AlertMessage invalide" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s : IoBuffer inattendu" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "erreur protocole" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "valeur type_case %d inattendue dans %s de %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "type de ClientMessage non reconnu" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "délai d'attente expiré durant l'écriture vers le client %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "tampon d'écriture manquant pour le client %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "délai d'attente expiré durant la lecture depuis le client %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "Fin de fichier reçu de %s sans suivre la procédure d'arrêt TLS" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "message client trop grand : %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "message client trop grand" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "ClientMessage invalide" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "impossible d'obtenir l'adresse IP distante" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Impossible d'attacher les données utilisateur à l'objet ssl : %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "impossible d'ajouter l'événement à la queue" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "configuration du socket d'écoute impossible" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "signal %d inattendu" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "serveur de journalisation de sudo" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Options :" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "chemin du fichier de configuration" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "afficher le message d'aide et quitter" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "ne pas cloner, exécuter à l'avant plan" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "pourcentage de chance que les connections soient abandonnées" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "afficher l'information de version et quitter" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Version 1.3 ou supérieure de Protobuf-C requise" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "valeur d'abandon aléatoire invalide : %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s version %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "utilisateur %s inconnu" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "groupe %s inconnu" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "impossible d'analyser le mode iolog %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "valeur invalide pour %s : %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS non supporté" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s n'est pas un chemin totalement défini" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "catégorie syslog %s inconnue" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "priorité syslog %s inconnue" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d « [ » sans correspondant : %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d section de configuration invalide : %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d ligne de configuration invalide : %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d nom de section attendu : %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "valeur invalide pour %s : %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d clé inconnue : %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "catégorie syslog %s inconnue" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] clé illégale : %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "priorité syslog %s inconnue" +msgid "unable to open log file %s" +msgstr "ouverture du fichier de journalisation %s impossible" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "impossible d'initialiser le contexte TLS du serveur : %s" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "impossible d'initialiser le contexte TLS du relai : %s" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "impossible de créer le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "impossible de verrouiller %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "verrouillage du fichier de journalisation impossible : %s" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "impossible d'ouvrir le fichier de journalisation" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "impossible d'écrire le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "impossible de renommer le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "fin de fichier inattendue en lisant le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "erreur de lecture dans le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "fichier de journalisation invalide, impossible de redémarrer" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "impossible de déplacer le pointeur vers [%lld, %ld] dans le fichier de journalisation %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "erreur de l'analyse de AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "erreur lors de la création du journal des E/S" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "erreur en écrivant l'événement d'acceptation dans le journal" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "erreur de l'analyse de RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "erreur en écrivant l'événement de rejet dans le journal" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "erreur lors de l'écriture de l'événement de sortie dans le journal" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "l'enregistrement du journal est déjà terminé, impossible de redémarrer" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "impossible de redémarrer l'enregistrement du journal" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "erreur de l'analyse de AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "erreur lors de l'écriture de l'événement d'alerte dans le journal" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "impossible de formater le tampon de minutage, longueur %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s : %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "erreur d'écriture dans IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "erreur de l'écriture de ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "erreur de l'écriture de CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "la négociation TLS avec l'hôte relai a échouée" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "impossible de se connecter à l'hôte relai" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s : ServerHello invalide, le server_id manque" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "ServerHello invalide" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "type de ServerMessage non reconnu" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "délai d'attente expiré durant la lecture depuis le relai %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "délai d'attente expiré durant la lecture depuis le relai" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "le nom de l'hôte relai ne correspond pas au certificat" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "erreur de lecture depuis le relai" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "impossible de lire depuis le relai" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "le serveur relai a fermé la connexion" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "message serveur trop grand" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "délai d'attente expiré durant l'écriture vers le relai %s (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "délai d'attente expiré durant l'écriture vers le relai" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "erreur d'écriture dans le relai" @@ -865,177 +1139,163 @@ msgid "reject the command with the given reason" msgstr "rejeter la commande avec la raison fournie" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "arrêter le transfert après avoir atteint ce temps" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "tester le serveur d'audit en envoyant le journal des E/S sélectionné n fois en parallèle" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "impossible de rechercher %s:%s : %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "impossible d'obtenir l'adresse IP du serveur" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "impossible de lire %s/%s : %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "message client trop grand : %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: tampon d'écriture déjà en cours d'utilisation" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "événement d'E/S %d inattendu" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: état %d inattendu" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "message d'erreur reçu du serveur : %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "message d'interruption reçu du serveur : %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "impossible de décompresser ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valeur type_case %d inattendue" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "délai d'attente expiré durant la lecture depuis le serveur" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "fin de fichier prématurée" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "message serveur trop grand : %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "délai d'attente expiré durant l'écriture vers le serveur" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "le point de redémarrage et le ID iolog doivent être spécifiés tous les deux" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "un point de redémarrage ne peut pas être placé quand aucune E/S est envoyée" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "terminé prématurément avec l'état %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "temps écoulé envoyé au serveur [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "point d'enregistrement reçu du serveur [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "le délai de la négociation TLS a expiré" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "impossible de définir l'événement" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "la communication TLS a échoué : %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "impossible d'allouer l'objet ssl : %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Impossible d'attacher le socket à l'objet ssl : %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "impossible d'initialiser le contexte TLS" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "impossible de sélectionner la suite de chiffrement %s pour TLS 1.2 : %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "impossible de sélectionner la suite de chiffrement %s pour TLS 1.3 : %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "impossible de créer le contexte TLS : %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "impossible de définir TLS 1.2 comme étant la version minimale du protocole : %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "impossible de définir les paramètres diffie-hellman : %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "impossible de lire les paramètres diffie-hellman : %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "ouverture de %s impossible" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "récupération de l'heure du jour impossible" @@ -1275,20 +1535,12 @@ msgstr "" " #3) De grands pouvoirs confèrent de grandes responsabilités.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "identifiant utilisateur inconnu : %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "utilisateur inconnu : %s" +msgid "unknown uid %u" +msgstr "identifiant utilisateur %u inconnu" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1345,9 +1597,10 @@ msgstr "format de sortie %s non supporté" msgid "%s: input and output files must be different" msgstr "%s : les fichiers d'entrée et de sortie doivent être différents" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "initialisation des valeurs par défaut de sudoers impossible" @@ -1358,8 +1611,8 @@ msgstr "%s : %s : %s : %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: mot clé inconnu : %s" +msgid "%s: unknown key word %s" +msgstr "%s: mot clé %s inconnu" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1391,7 +1644,7 @@ msgstr "erreur lors de l'analyse grammaticale de %s au environs de la ligne %d\n msgid "parse error in %s\n" msgstr "erreur lors de l'analyse grammaticale de %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1449,7 +1702,7 @@ msgstr "" " -V, --version afficher la version et terminer" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "entrée par défaut inconnue « %s »" @@ -1466,12 +1719,12 @@ msgstr "récupération de l'heure GMT impossible" msgid "unable to format timestamp" msgstr "impossible de formater l'horodatage" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "trop d'entrées sudoers, maximum %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "la variable d'environnement SUDOERS_BASE n'est pas définie et l'option -b n'a pas été spécifiée." @@ -2063,6 +2316,26 @@ msgstr "Activer le support pour SELinux RBAC" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Chemin vers le fichier qui est créé la première fois que sudo est exécuté : %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Intercepter les commandes suivantes et leur appliquer les restrictions sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Consigner tout processus enfant exécuté par la commande" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Consigner le code de retour des commandes" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Les commandes ultérieures dans une session interceptée doivent être authentifiées" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Autoriser une commande interceptée à exécuter des programmes avec le fanion setuid ou setgid activé" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2083,52 +2356,62 @@ msgstr "%s:%d:%d: pas de valeur précisée pour « %s »" msgid "%s: no value specified for \"%s\"" msgstr "%s: pas de valeur précisée pour « %s »" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: opérateur « %c= » invalide pour « %s »" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: opérateur « %c= » invalide pour « %s »" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: l'option « %s » ne prend pas de valeur" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: l'option « %s » ne prend pas de valeur" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: type Defaults 0x%x invalide pour l'option « %s »" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: type Defaults 0x%x invalide pour l'option «â£%sâ£Â»" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: la valeur « %s » ne convient pas pour l'option « %s »" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: la valeur « %s » ne convient pas pour l'option « %s »" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: les valeurs de « %s » doivent commencer par « / », « ~ » ou « * »" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: les valeurs de « %s » doivent commencer par « / », « ~ » ou « * »" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: les valeurs de « %s » doivent commencer par « / »" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: les valeurs de « %s » doivent commencer par « / »" @@ -2146,12 +2429,12 @@ msgstr "impossible de créer à nouveau l'environnement" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "désolé, vous n'êtes pas autorisé à définir ces variables d'environnement : %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "erreur d'analyse grammaticale dans %s aux environs de la ligne %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "erreur d'analyse grammaticale dans %s" @@ -2191,56 +2474,51 @@ msgstr "le symbole « group_plugin » est introuvable dans %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s : la version majeure %d du greffon group est incompatible, la version attendue est %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "impossible de reconnaître le format de l'adresse IP « %s »" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "impossible de reconnaître le format du masque de sous-réseau « %s »" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Couples adresse IP locale/masque de sous-réseau :\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "groupe inconnu : %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "mise à jour du fichier de séquence impossible" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "impossible d'écrire dans le journal des E/S : %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "impossible de créer %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: erreur interne, le fichier journal des E/S pour l'événement %d n'est pas ouvert" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "lecture de l'horloge impossible" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: erreur interne, signal %d invalide" @@ -2287,15 +2565,15 @@ msgstr "type d'uri LDAP non pris en charge : %s" msgid "unable to mix ldap and ldaps URIs" msgstr "fusion des URIs ldap et ldaps impossible" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "sudoOption dupliqué : %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "impossible de convertir sudoOption: %s%s%s" @@ -2308,107 +2586,111 @@ msgstr "ouverture du fichier d'audit du système impossible" msgid "unable to send audit message" msgstr "envoi du message d'audit impossible" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "erreur dans la boucle des événements" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "La création du nouvel objet SSL_CTX a échoué : %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "impossible de charger le paquet de l'autorité du certificat %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "impossible de charger le certificat %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "impossible de charger la clé privée %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Impossible d'allouer l'objet ssl : %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "la connexion TLS à %s:%s a échoué : %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "l'initialisation TLS n'a pas réussi" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "la négociation TLS n'a pas réussi" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: erreur interne, statut de sortie %d invalide" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "impossible de décompresser ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "perte de la connexion au serveur de journalisation" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "tampon d'écriture manquant" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "impossible de se connecter au serveur de journal" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "l'utilisateur n'apparaît PAS dans sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "l'utilisateur n'est PAS autorisé sur cet hôte" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "commande non autorisée" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s n'apparaît pas dans le fichier sudoers. Cet incident sera signalé.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s n'est pas autorisé à exécuter sudo sur %s. Cet incident sera signalé.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Désolé, l'utilisateur %s ne peut pas utiliser sudo sur %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Désolé, l'utilisateur %s n'est pas autorisé à exécuter « %s%s%s » en tant que %s%s%s sur %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2417,27 +2699,22 @@ msgstr "" "« %s » trouvé dans « . » n'a pas été exécuté\n" "Utilisez « sudo ./%s » si c'est bien la version de « %s » que vous souhaitez exécuter." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u saisie de mot de passe incorrecte" msgstr[1] "%u saisies de mots de passe incorrectes" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "échec de l'authentification" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "il est nécessaire de saisir un mot de passe" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "ouverture du fichier de journalisation impossible : %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "impossible d'écrire le fichier journal : %s" @@ -2447,7 +2724,7 @@ msgstr "impossible d'écrire le fichier journal : %s" msgid "digest for %s (%s) is not in %s form" msgstr "le résume (digest) de %s (%s) n'est pas dans le forme %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2456,7 +2733,7 @@ msgstr "" "\n" "Rôle LDAP : %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2464,38 +2741,38 @@ msgstr "" "\n" "Entrée sudoers :\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers : " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups : " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Options : " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Commandes :\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Entrées Defaults correspondant pour %s sur %s :\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Paramètres par défaut de runas ou spécifiques aux commandes pour %s :\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "L'utilisateur %s peut utiliser les commandes suivantes sur %s :\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "L'utilisateur %s n'est pas autorisé à exécuter sudo sur %s.\n" @@ -2510,64 +2787,64 @@ msgstr "le sudoRole incomplet est ignoré : cn : %s" msgid "invalid LDIF attribute: %s" msgstr "attribut LDIF invalide : %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "%.*s invalide défini par l'interface utilisateur de sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "impossible d'analyser la liste des adresses réseau" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "nom d'utilisateur pas défini par l'interface utilisateur de sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ID utilisateur pas défini par l'interface utilisateur de sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ID de groupe pas défini par l'interface utilisateur de sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "nom d'hôte pas défini par l'interface utilisateur de sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "répertoire de travail invalide : %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "répertoire chroot invalide : %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "exécution de %s impossible" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: fanions de mode invalides dans l'interface utilisateur de sudo : 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "La version du greffon de politique de sudoers est %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "La version de la grammaire du fichier sudoers est %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2576,27 +2853,27 @@ msgstr "" "\n" "Chemin d'accès à sudoers : %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "chemin d'accès à nsswitch : %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "chemin d'accès à ldap.conf : %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "chemin d'accès à ldap.secret : %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "activation d'un point d'ancrage de type %d (version %d.%d) impossible" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "désactivation d'un point d'ancrage de type %d (version %d.%d) impossible" @@ -2665,48 +2942,48 @@ msgstr "impossible d'analyser les groupes pour %s" msgid "unable to parse gids for %s" msgstr "impossible d'analyser les gids pour %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "débordement de la pile perm" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "débordement inférieur de la pile perm" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "changement de l'identificateur de groupe (gid) de root impossible" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "changement du groupe effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "définition du vecteur du groupe effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "changement de l'uid effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "changement du groupe (gid) de sudoers impossible" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "trop de processus" @@ -2735,252 +3012,254 @@ msgstr "initialisation de la source SSS impossible. SSSD est-il installé sur ce msgid "unable to find symbol \"%s\" in %s" msgstr "Le symbole « %s » est introuvable dans %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "les entrées par défaut posent un problème" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "aucune source sudoers valide n'a été trouvée, fin d'exécution" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "l'utilisateur n'est pas autorisé à changer le répertoire racine en %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "vous n'êtes pas autorisé à utiliser l'option -R avec %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "l'utilisateur n'est pas autorisé à changer de répertoire vers %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "vous n'êtes pas autorisé à utiliser l'option -D avec %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "aucune commande spécifiée" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "il est précisé dans sudoers que root n'est pas autorisé à utiliser sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "l'utilisateur n'est pas autorisé à outrepasser la limite closeform" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "vous n'êtes pas autorisé à utiliser l'option -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "propriétaire du fichier d'horodatage (%s) : utilisateur inconnu" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "pas de terminal tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "désolé, vous devez avoir un terminal tty pour exécuter sudo" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "interpréteur de commande invalide pour l'utilisateur %s : %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "commande dans le répertoire courant" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "l'utilisateur n'est pas autorisé à définir un délai d'expiration de la commande" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "désolé, vous n'êtes pas autorisé à définir un délai d'expiration de la commande" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "l'utilisateur n'est pas autorisé à conserver l'environnement" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "désolé, vous n'êtes pas autorisé à conserver l'environnement" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "commande trop longue" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit n'a pas besoin d'être exécuté via sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "lecture de %s impossible" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "impossible d'appliquer la fonction stat à %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s n'est pas un fichier ordinaire" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "Le fichier %s est la propriété de l'utilisateur (uid) %u, alors qu'il devrait appartenir à %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "Le fichier %s est ouvert en écriture pour tous" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "Le fichier %s a pour groupe (gid) %u, alors qu'il devrait appartenir au groupe %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "« -c %s » est réservé à l'utilisateur root" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "classe de connexion inconnue : %s" +msgid "unknown login class %s" +msgstr "classe de connexion %s inconnue" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "impossible de résoudre l'hôte %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "option du filtre invalide : %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "attente maximum invalide : %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "facteur de vitesse invalide : %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "décalage de temps i%s invalide" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s : %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/timing : %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s : %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Rejeu de la session sudo : %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "impossible d'initialiser le terminal tty en mode direct" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Attention : la taille du terminal n'est pas suffisante pour pouvoir rejouer correctement la séquence.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "La taille du journal est %d × %d, la taille de votre terminal est %d × %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Rejeu terminé, appuyez sur n'importe quelle touche pour rétablir le terminal." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "expression ambiguë « %s »" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "« ) » sans parenthèse ouvrante dans l'expression" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "terme de recherche « %s » inconnu" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s requiert un argument" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "expression rationnelle invalide : %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "analyse de la date « %s » impossible" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "« ( » sans parenthèse fermante dans l'expression" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "« or » n'est pas autorisé en fin d'expression" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "« ! » n'est pas autorisé en fin d'expression" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "type de recherche %d inconnu" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "utilisation : %s [-hnRS] [-d répertoire] [-m nombre] [-s nombre] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "utilisation : %s [-h] [-d répertoire] -l [expression recherchée]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2989,7 +3268,7 @@ msgstr "" "%s - rejeu du journal de la session sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3202,21 +3481,16 @@ msgstr "%s : analyse réussie\n" msgid "%s busy, try again later" msgstr "%s n'est pas disponible, réessayez plus tard" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "impossible de verrouiller %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Éditer quand même ? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Attention : %s:%d:%d: %s « %s » n'est pas utilisé" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3225,7 +3499,7 @@ msgstr "" "%s - édite le fichier sudoers en toute sécurité\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3249,11 +3523,11 @@ msgstr "" msgid "empty string" msgstr "chaîne vide" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "groupe vide" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "netgroup vide" @@ -3261,18 +3535,21 @@ msgstr "netgroup vide" msgid "invalid line continuation" msgstr "la suite de la ligne est invalide" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "adresse IPv6 invalide" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "saut de ligne inattendu dans la chaîne" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "nombre de niveaux d'inclusions trop élevé" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d clé inconnue : %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "impossible d'obtenir la méthode TLS du serveur : %s" diff --git a/plugins/sudoers/po/hr.mo b/plugins/sudoers/po/hr.mo Binary files differindex 5e8aa331b..1b354205a 100644 --- a/plugins/sudoers/po/hr.mo +++ b/plugins/sudoers/po/hr.mo diff --git a/plugins/sudoers/po/hr.po b/plugins/sudoers/po/hr.po index d62c1d576..f9ce40ddb 100644 --- a/plugins/sudoers/po/hr.po +++ b/plugins/sudoers/po/hr.po @@ -4,10 +4,10 @@ # Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.7b1\n" +"Project-Id-Version: sudoers-1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-04 17:27-0700\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-20 18:09+0200\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" "Language: hr\n" @@ -16,12 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\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: Poedit 2.4.3\n" +"X-Generator: Poedit 3.0\n" "X-Poedit-Basepath: ../packages/sudo-1.8.23b2\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: .\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "pogreÅ¡ka u sintaksi" @@ -45,29 +45,46 @@ msgstr "*** SIGURNOSNE informacije za %h ***" msgid "Sorry, try again." msgstr "PokuÅ¡ajte ponovo." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -79,16 +96,16 @@ msgstr "PokuÅ¡ajte ponovo." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -101,21 +118,21 @@ msgstr "PokuÅ¡ajte ponovo." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -126,7 +143,7 @@ msgstr "PokuÅ¡ajte ponovo." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -137,13 +154,13 @@ msgstr "PokuÅ¡ajte ponovo." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -154,214 +171,237 @@ msgstr "PokuÅ¡ajte ponovo." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "nije moguće dodijeliti memoriju" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "kontrolni zbroj zahtijeva ime staze" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "vrijednosti za „CWD“ moraju zapoÄeti s „/“, „~“, ili „*“" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "vrijednosti za „CHROOT“ moraju zapoÄeti s „/“, „~“, ili „*“" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "sintaktiÄka greÅ¡ka -- rezervirana rijeÄ %s koriÅ¡tena kao alias" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "nevaljana ‘notbefore’ vrijednost" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "nevaljana ‘notafter’ vrijednost" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "vrijednost za tajmaut je prevelika" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "nevaljana vrijednost za tajmaut" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias „%s“ je već ranije definiran" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "**interna greÅ¡ka**, %s prelijevanje" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "nije moguće duplicirati stdin: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "nije moguće izvrÅ¡iti %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "nije moguće stvoriti novi proces (greÅ¡ka u fork())" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "nije moguće stvoriti novi proces (greÅ¡ka u fork()): %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "nije moguće otvoriti cijev: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (naredba se nastavlja) %s" @@ -475,351 +515,585 @@ msgstr "%s: nedostaje polje za runas-grupe" msgid "%s exists but is not a directory (0%o)" msgstr "%s postoji ali nije direktorij (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "nije moguće napraviti direktorij %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nije moguće promijeniti mÈd od %s na 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "greÅ¡ka pri Äitanju tajming datoteke: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "nevaljani redak u tajming datoteci: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "nije moguće generirati UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: greÅ¡ka u protokolu : kriva vrsta za %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: greÅ¡ka u protokolu : %s nedostaje u AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: nije moguće oblikovati id sesije" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s nije postavljen" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "nije moguće proÅ¡iriti stazu iolog (I/O FD) %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "nije moguće stvoriti stazu iolog (I/O FD) %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "nevaljani iofd (I/O FD) %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "greÅ¡ka pri zatvaranju iofd (I/O FD) %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "nevaljani I/O zapis %s: %s ima referenciju ali ne postoji" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: nije moguće naći toÄku [%lld, %ld] od koje treba nastaviti" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "nije moguće otvoriti %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "nije moguće otvoriti %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "nije moguće kopirati %s/%s u %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "nije moguće preimenovati %s u %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "nema dnevniÄke datoteke U/I %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nije moguće skoÄiti naprijed na %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "nije moguće naći toÄku [%lld, %ld] u %s/%s od koje treba nastaviti" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: nije moguće naći toÄku [%lld, %ld] od koje treba nastaviti" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "nije moguće spojiti se na relej" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "poruka servera je prevelika: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "nije moguće dodati dogaÄ‘aj u red Äekanja" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "neoÄekivano stanje %d za %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "greÅ¡ka automata (state machine)" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "nevaljana AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "nevaljani RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "nevaljana AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: neoÄekivani IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "greÅ¡ka protokola" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neoÄekivana type_case vrijednost %d u %s iz %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "neprepoznata vrsta ClientMessage-a" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "vrijeme za pisanje klijentu %s je isteklo" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "nema meÄ‘uspremnika za pisanje za %s klijenta" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "isteklo je vrijeme za Äitanje od %s klijenta" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "EOF od %s nije propisno zatvaranje TLS-a" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "poruka klijenta je preduga: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "poruka klijenta je preduga" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "nevaljana ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "nije moguće dobiti udaljenu IP adresu" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Nije moguće prikvaÄiti podatke korisnika na SSL objekt: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "nije moguće dodati dogaÄ‘aj u red Äekanja" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "nije moguće postaviti prikljuÄak za sluÅ¡anje (listen socket)" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "neoÄekivani signal %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "server sudo dnevnika" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Opcije: " -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "staza do datoteke s postavkama" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "prikaže pomoć i iziÄ‘e" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "ne stvara novi proces, radi u prednjem planu" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "postotak Å¡anse da će se veza prekinuti" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "prikaže podatke o inaÄici i iziÄ‘e" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Potrebna je Protobuf-C inaÄica 1.3 ili novija." -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "nevaljana ‘random drop’ vrijednost: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s inaÄica %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "nepoznati korisnik %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "nepoznata grupa %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "nije moguće razabrati naÄin %s iolog-a" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "nevaljana vrijednost za %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS nije podržan" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: to nije potpuno kvalificirana staza" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "nepoznati ustroj za syslog (Protokol dnevniÄarenja sustava): %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "nepoznati prioritet %s za protokol dnevnika sustava (syslog)" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d ne podudara '[': %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d nevaljana sekcija u konfiguraciji: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d nevaljani redak u konfiguraciji: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d oÄekivano ime sekcije: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "nevaljana vrijednost za %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s: %d nepoznati kljuÄ: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "nepoznati ustroj za syslog (Protokol dnevniÄarenja sustava): %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] nelegalni kljuÄ : %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "nepoznati prioritet %s za protokol dnevnika sustava (syslog)" +msgid "unable to open log file %s" +msgstr "nije moguće otvoriti dnevniÄku datoteku %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "nije moguće inicijalizirati server TLS konteksta" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "nije moguće inicijalizirati relej SSL konteksta" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "nije moguće stvoriti dnevniÄku datoteku" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "nije moguće zakljuÄati %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "nije moguće zakljuÄati dnevniÄku datoteku" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "nije moguće otvoriti dnevniÄku datoteku" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "nije moguće pisati u dnevniÄku datoteku" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "nije moguće preimenovati dnevniÄku datoteku" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "neoÄekivani EOF pri Äitanju dnevnika" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "greÅ¡ka pri Äitanju dnevnika" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "nevaljana datoteka dnevnika, ponovno pokretanje nije uspjelo" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "nije moguće skoÄiti na toÄku [%lld, %ld] u dnevniku %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "greÅ¡ka pri raÅ¡Älanivanju AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "greÅ¡ka pri stvaranju U/I dnevnika" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "greÅ¡ka pri upisivanju u dnevnik ‘accept’ dogaÄ‘aja" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "greÅ¡ka pri raÅ¡Älanivanju RejectMessage-a" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "greÅ¡ka pri upisivanju u dnevnik ‘reject’ dogaÄ‘aja" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "greÅ¡ka pri upisivanju u dnevnik exit dogaÄ‘aja" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "dnevnik je već kompletiran -- ne može se ponovno pokrenuti" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "nije moguće ponovno pokrenuti dnevniÄarenje (logging)" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "greÅ¡ka pri raÅ¡Älanivanju AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "greÅ¡ka pri upisivanju u dnevnik ‘alert’ dogaÄ‘aja" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "nije moguće oblikovati vremenski spremnik, dužine %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "greÅ¡ka pri pisanju IoBuffer-a" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "greÅ¡ka pri pisanju ChangeWindowSize-a" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "greÅ¡ka pri pisanju CommandSuspend-a" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "TLS rukovanje s hostom releja nije uspjelo" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "nije moguće spojiti se na host releja" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: nevaljani ServerHello, nedostaje server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "nevaljani ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "neprepoznata vrsta ServerMessage" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "isteklo je vrijeme za Äitanje iz releja %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "isteklo je vrijeme za Äitanje iz releja" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "ime hosta releja se ne slaže s certifikatom" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "greÅ¡ka Äitanja iz releja" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "nije moguće Äitati iz releja" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "server releja je prekinuo vezu" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "poruka servera je prevelika" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "vrijeme za pisanje na relej %s (%s) je isteklo" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "vrijeme za pisanje na relej je isteklo" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "greÅ¡ka pri pisanju na relej" @@ -868,177 +1142,163 @@ msgid "reject the command with the given reason" msgstr "odbije naredbu s navedenim razlogom" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "zaustavi prijenos nakon tog vremena" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "testira revizijski server slanjem odabranih zapisa I/O dnevnika paralelno n puta" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "nije moguće potražiti %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "nije moguće dobiti IP adresu servera" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "nije moguće uÄitati %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "poruka klijenta je preduga: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: meÄ‘uspremnik za pisanje je zauzet" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "neoÄekivani U/I dogaÄ‘aj %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: neoÄekivano stanje %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "primljena je poruka o greÅ¡kama od servera: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "primljena je poruka za prekid (abort) od servera: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "nije moguće raspakirati ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: neoÄekivana ‘type_case’ vrijednost za %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "isteklo je vrijeme za Äitanje iz servera" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "preuranjeni EOF (kraj datoteke)" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "poruka servera je preduga: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "isteklo je vrijeme za pisanje na server" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "i toÄka za ponovno pokretanje i iolog ID moraju biti specificirani" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "ako se ne poÅ¡alje U/I (I/O), ponovno uspostavljanje možda neće uspjeti" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "preuranjeni zavrÅ¡etak (izlaz) sa stanjem %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "proteklo vrijeme poslano je na server [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "potvrÄ‘ena toÄka primljena je od servera [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "Vrijeme za TLS rukovanje je isteklo." -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "nije moguće uspostaviti dogaÄ‘aj" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS spajanje nije uspjelo: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "nije uspjelo dodijeliti memoriju za SSL objekt: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Nije uspjelo prikvaÄiti utiÄnicu na SSL objekt: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "nije moguće inicijalizirati TLS konteks" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "nije moguće postaviti ciphersuite na %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "nije moguće postaviti TLS 1.3 ciphersuite to %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "nije moguće stvoriti TLS kontekst: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "nije mouguće uspostaviti minimalni protokol na TLS 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "nije moguće postaviti diffie-hellman parametre: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "nije moguće proÄitati diffie-hellman parametre: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "nije moguće otvoriti %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nije moguće dobiti doba dana (trenutno vrijeme)" @@ -1278,20 +1538,12 @@ msgstr "" " #3) S velikim moćima dolazi velika odgovornost.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "nepoznati UID: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "nepoznati korisnik: %s" +msgid "unknown uid %u" +msgstr "nepoznati UID %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1348,9 +1600,10 @@ msgstr "nepodržani izlazni format %s" msgid "%s: input and output files must be different" msgstr "%s: ulazna i izlazna datoteka moraju biti razliÄite datoteke" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "nije moguće inicijalizirati zadane vrijednosti sudoers" @@ -1361,8 +1614,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: nepoznata kljuÄna rijeÄ: %s" +msgid "%s: unknown key word %s" +msgstr "%s: nepoznata kljuÄna rijeÄ %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1394,7 +1647,7 @@ msgstr "greÅ¡ka u raÅ¡Älambi u %s blizu retka %d\n" msgid "parse error in %s\n" msgstr "greÅ¡ka u raÅ¡Älambi u %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1450,7 +1703,7 @@ msgstr "" " -V, --version informira o inaÄici ovog programa i zavrÅ¡i" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "nepoznati unos defaults „%s“" @@ -1467,12 +1720,12 @@ msgstr "nije moguće dobiti GMT vrijeme" msgid "unable to format timestamp" msgstr "nije moguće oblikovati vremensku oznaku" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "previÅ¡e sudoers greÅ¡aka, maksimum je %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "varijabla okoline SUDOERS_BASE nije postavljena i -b opcija nije specificirana." @@ -2064,6 +2317,26 @@ msgstr "Omogući podrÅ¡ku za SELinux RBAC" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Staza do datoteke koja se kreira prilikom prvog sudo pokretanja: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Presretne daljnje naredbe i primijeni ograniÄenja sudoers-a na njih." + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Urudžbira svaki novi (potomak) proces koji izvodi naredba." + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Urudžbira izlazno stanje pokrenute naredbe." + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Naredne naredbe u presretoj sesiji moraju biti ovjerene." + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Dopusti presretnutu naredbu da pokrene program za postavljnje setuid ili setgid." + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2084,52 +2357,62 @@ msgstr "%s:%d:%d: nije navedena vrijednost za „%s“" msgid "%s: no value specified for \"%s\"" msgstr "%s: nije navedena vrijednost za „%s“" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: nevaljan operator \"%c=\" za „%s“" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: nevaljan operator \"%c=\" „%s“" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: opcija „%s“ ne treba nikakvu vrijednost" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: opcija „%s“ ne prihvaća vrijednost" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: nevaljana vrsta Defaults 0x%x za opciju „%s“" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: nevaljana vrsta Defaults 0x%x za opciju „%s“" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: vrijednost „%s“ za opciju „%s“ nije valjana" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: vrijednost „%s“ nije ispravna za opciju „%s“" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: vrijednost za „%s“ mora zapoÄeti s „/“, „~“, ili „*“" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: vrijednost za „%s“ mora zapoÄeti s „/“, „~“, ili „*“" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: vrijednost za „%s“ mora zapoÄeti s „/“" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: vrijednost za „%s“ mora poÄeti s „/“" @@ -2147,12 +2430,12 @@ msgstr "nije moguće obnoviti okolinu" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "nemate dopuÅ¡tenje za postavljanje sljedećih varijabli okoline: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "greÅ¡ka u raÅ¡Älambi u %s blizu retka %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "greÅ¡ka u raÅ¡Älambi u %s" @@ -2192,56 +2475,51 @@ msgstr "nije moguće pronaći simbol „group_plugin“ u %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: nekompatibilna glavna inaÄica plugin grupe %d, oÄekivano je %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "„%s“ nije valjana IP adresa (nemoguće ju je raÅ¡Älaniti)" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "„%s“ nije valjana mrežna maska (nemoguće ju je raÅ¡Älaniti)" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Parovi lokalnih IP adresa i mrežnih maski:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "nepoznata grupa: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "nije moguće ažurirati datoteku redoslijeda (sequence file)" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "nije moguće pisati u U/I dnevnik: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "nije moguće stvoriti %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: interna greÅ¡ka, U/I dnevniÄka datoteka za dogaÄ‘aj %d nije otvorena" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "nije moguće proÄitati vrijeme (clock)" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: interna greÅ¡ka, nevaljani signal %d" @@ -2288,15 +2566,15 @@ msgstr "nepodržana vrsta adrese LDAP: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "ne možete zajedno koristiti ldap i ldaps adrese" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "duplicira sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "nije moguće pretvoriti sudoOption: %s%s%s" @@ -2309,112 +2587,116 @@ msgstr "nije moguće otvoriti revizijski sustav" msgid "unable to send audit message" msgstr "nije moguće poslati revizijsku poruku" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "greÅ¡ka u petlji dogaÄ‘aja" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Nije uspjelo stvoriti novi ‘SSL_CTX’ objekt: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "nije moguće uÄitati datoteku s certifikatatima (CA bundle) %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "nije moguće uÄitati certifikate %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "nije moguće uÄitati privatni kljuÄ %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Nije uspjelo dodijeliti memoriju za SSL objekt: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "TLS veza sa %s:%s nije uspjela: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS inicijalizacija nije bila uspjeÅ¡na" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS rukovanje (handshake) nije bila uspjeÅ¡no" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: **interna greÅ¡ka** -- nevaljani izlazni status %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "nije moguće raspakirati ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "veza sa serverom za autentifikaciju je prekinuta (izgubljena je)" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "nema meÄ‘uspremnika za pisanje" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "nije moguće spojiti se na dnevniÄki server" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "korisnik NIJE u sudoers" # Authentication is about who somebody is. # Authorisation is about what they're allowed to do. # https://en.wikipedia.org/wiki/AAA_(computer_security)#Authorization -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "korisnik NEMA ovlasti na raÄunalu (nije autoriziran)" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "naredba nije dopuÅ¡tena" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s nije u sudoers datoteci. Ovaj će incident biti prijavljen.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "" "%s nema dopuÅ¡tenja pokrenuti sudo na %s. Ovaj će incident biti prijavljen.\n" "\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Nažalost, korisnik %s ne smije pokrenuti sudo na %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Nažalost, korisniku %s nije dopuÅ¡teno izvrÅ¡iti „%s%s%s“ kao %s%s%s na %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronaÄ‘ena" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2423,7 +2705,7 @@ msgstr "" "zanemaruje se „%s“ pronaÄ‘en u „.“\n" "Koristite „sudo ./%s“ ako je to „%s“ koji želite pokrenuti." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2431,20 +2713,15 @@ msgstr[0] "%u netoÄni pokuÅ¡aj unosa lozinke" msgstr[1] "%u netoÄna pokuÅ¡aja unosa lozinke" msgstr[2] "%u netoÄnih pokuÅ¡aja unosa lozinke" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "neuspjeÅ¡na autentifikacija" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "nužna je lozinka" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "nije moguće otvoriti dnevniÄku datoteku: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "nije moguće pisati u dnevniÄku datoteku: %s" @@ -2454,7 +2731,7 @@ msgstr "nije moguće pisati u dnevniÄku datoteku: %s" msgid "digest for %s (%s) is not in %s form" msgstr "kontrolni zbroj za %s (%s) nije u %s obliku" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2463,7 +2740,7 @@ msgstr "" "\n" "LDAP uloga: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2471,38 +2748,38 @@ msgstr "" "\n" "Sudoers stavka:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Opcije: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Naredbe:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Odgovarajući Defaults unosi za %s na %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Runas i Command-specifiÄne zadane vrijednosti za %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Korisnik %s može pokrenuti sljedeće naredbe na %s:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Korisniku %s nije dopuÅ¡teno pokrenuti sudo na %s.\n" @@ -2517,64 +2794,64 @@ msgstr "ignorira se nekompletni sudoRole: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "nevaljani LDIF atribut: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "nevaljana opcija %.*s postavljena kroz sudo front-end" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "nije moguće proÄitati popis mrežnih adresa (nemoguće ih je raÅ¡Älaniti)" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "ime korisnika nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "korisniÄki ID (user-ID) nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "groupni ID (group-ID) nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "ime raÄunala (host name) nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "nevaljani radni direktorij: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "nevaljani chroot direktorij: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "nije moguće izvrÅ¡iti %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: nevaljane zastavice naÄina rada iz sudo front end: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "InaÄica sudoers plugina s pravilima %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "InaÄica sudoers datoteÄne gramatike %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2583,29 +2860,29 @@ msgstr "" "\n" "Staza do sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch staza: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf staza: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret staza: %s\n" # hook: A location in a routine or program in which the programmer can connect or insert other routines for the purpose of debugging or enhancing functionality. -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nije moguće registrirati rutinu (hook) vrste %d (inaÄica %d.%d)" # hook: A location in a routine or program in which the programmer can connect or insert other routines for the purpose of debugging or enhancing functionality. -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nije moguće poniÅ¡titi registraciju vrste (hook) %d (inaÄica %d.%d)" @@ -2674,48 +2951,48 @@ msgstr "nije moguće proÄitati grupe za %s" msgid "unable to parse gids for %s" msgstr "nije moguće razabrati GID-ove za %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "prelijevanje snopa s pravima pristupa" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "iscrpljenje snopa s pravima pristupa" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "nije moguće promijeniti na GID od root" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "nije moguće promijeniti na runas GID" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "nije moguće postaviti runas grupni vektor" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "nije moguće promijeniti na runas UID" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "nije moguće promijeniti na sudoers GID" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "previÅ¡e procesa" @@ -2744,252 +3021,254 @@ msgstr "nije moguće inicijalizirati SSS izvor. Je li SSSD instaliran na vaÅ¡em msgid "unable to find symbol \"%s\" in %s" msgstr "nije moguće pronaći simbol „%s“ u %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problem sa stavkama defaults" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "nisu pronaÄ‘eni valjani sudoers izvori, kraj rada" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "korisniku nije dopuÅ¡teno promijeniti radni direktorij na %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "vama nije dopuÅ¡teno koristi opciju -R s/sa %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "korisniku nije dopuÅ¡teno promijeniti direktorij na %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "vama nije dopuÅ¡teno koristi opciju -D s/sa %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "nijedna naredba nije specificirana" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers specificira da root ne može koristiti sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "korisniku nije dopuÅ¡teno promijeniti ograniÄenje od ‘closefrom’" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "vama nije dopuÅ¡teno koristi opciju -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "vlasnik vremenske oznake (%s): Nema takvog korisnika" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "nema TTY" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "nažalost, da pokrenete sudo morate imati TTY" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "nevaljana ljuska za korisnika %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "naredba u trenutnom direktoriju" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "korisniku nije dopuÅ¡teno postavljanje tajmaut naredbe" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "nažalost, vama nije dopuÅ¡teno postavljanje tajmaut za naredbu" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "korisniku nije dopuÅ¡teno saÄuvati okolinu" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "vama nije dopuÅ¡teno zadržati okolinu" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "naredba je preduga" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit se ne mora pokrenuti sa sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "nije moguće proÄitati %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "nije moguće dobiti status od %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s nije obiÄna datoteka" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "vlasnik %s je UID %u, a treba biti %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s smije svatko mijenjati/pisati" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "vlasnik %s je GID %u, a treba biti %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "samo root može koristiti „-c %s“" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "nepoznata klasa prijave: %s" +msgid "unknown login class %s" +msgstr "nepoznata klasa prijave %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "nije moguće pronaći raÄunalo %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "nevaljana opcija filtra: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "nevaljano maksimalno vrijeme Äekanja: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "nevaljani faktor brzine: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "nevaljani vremenski odmak %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/tajming: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Reproduciranje sudo sesije: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "nije moguće postaviti TTY u direktni mÈd (da ne interpretira posebne znakove)" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Upozorenje: vaÅ¡ terminal je premaleni da pravilno reproducira dnevnik.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "VeliÄina dnevnika je %d x %d, a veliÄina vaÅ¡eg terminala %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Reprodukcija je zavrÅ¡ena -- obnovite terminal pritiskom na bilo koju tipku." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "viÅ¡eznaÄni izraz „%s“" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "nesparena „)“ u izrazu" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "nepoznati pojam za pretragu „%s“" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s zahtijeva argument" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "nevaljani regularni izraz: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "nije moguće raÅ¡Älaniti datum „%s“" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "nesparena „(“ u izrazu" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "nedopuÅ¡teni zaostali „or“" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "nedopuÅ¡teni zaostali „!“" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "nepoznata vrsta za pretragu %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "uporaba: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "uporaba: %s [-h] [-d direktorij] -l [izraz za pretragu]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2998,7 +3277,7 @@ msgstr "" "%s - reproducira dnevnike sudo sesija\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3211,21 +3490,16 @@ msgstr "%s: raÅ¡Älamba je uspjela\n" msgid "%s busy, try again later" msgstr "%s je zauzeti, pokuÅ¡ajte ponovo kasnije" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "nije moguće zakljuÄati %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Ipak redigirati? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Upozorenje: %s:%d:%d nekoriÅ¡teni %s „%s“" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3234,7 +3508,7 @@ msgstr "" "%s - sigurno redigira sudoers datoteku\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3258,11 +3532,11 @@ msgstr "" msgid "empty string" msgstr "prazni string" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "prazna grupa" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "prazna mrežna grupa (netgroup)" @@ -3270,18 +3544,21 @@ msgstr "prazna mrežna grupa (netgroup)" msgid "invalid line continuation" msgstr "nevaljani nastavak retka" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "nevaljana IPv6 adresa" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "neoÄekivani prelom retka" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "previÅ¡e razina ukljuÄivanja" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s: %d nepoznati kljuÄ: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "nije moguće dobiti od servera metodu: %s" @@ -3440,9 +3717,6 @@ msgstr "previÅ¡e razina ukljuÄivanja" #~ msgid "Warning: cycle in %s `%s'" #~ msgstr "Upozorenje: ciklus u %s „%s“" -#~ msgid "Warning: %s `%s' referenced but not defined" -#~ msgstr "Upozorenje: %s „%s“ ima referenciju ali nije definiran" - #~ msgid "Warning: unused %s `%s'" #~ msgstr "Upozorenje: %s „%s“ nije upotrebljen" diff --git a/plugins/sudoers/po/it.mo b/plugins/sudoers/po/it.mo Binary files differindex ffcc4f90b..0da45c814 100644 --- a/plugins/sudoers/po/it.mo +++ b/plugins/sudoers/po/it.mo diff --git a/plugins/sudoers/po/it.po b/plugins/sudoers/po/it.po index 29a0676fc..c665717f3 100644 --- a/plugins/sudoers/po/it.po +++ b/plugins/sudoers/po/it.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.6b1\n" +"Project-Id-Version: sudoers-1.9.7b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-03-02 19:29-0700\n" -"PO-Revision-Date: 2021-04-23 17:58+0200\n" +"POT-Creation-Date: 2021-05-01 16:27-0600\n" +"PO-Revision-Date: 2021-08-19 10:51+0200\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n" "Language-Team: Italian <tp@lists.linux.it>\n" "Language: it\n" @@ -58,10 +58,14 @@ msgstr "Riprovare." #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115 +#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 +#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 +#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 +#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 #: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -78,7 +82,7 @@ msgstr "Riprovare." #: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 #: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 #: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262 +#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 #: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 @@ -124,9 +128,9 @@ msgstr "Riprovare." #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 +#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/sssd.c:145 #: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 @@ -138,10 +142,10 @@ msgstr "Riprovare." #: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 #: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 #: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 -#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225 -#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581 -#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466 -#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 #: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 #: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155 #: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 @@ -203,11 +207,11 @@ msgstr "Alias \"%s\" già definito" #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304 -#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337 -#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 +#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 +#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 #: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 #: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 @@ -223,7 +227,7 @@ msgstr "Alias \"%s\" già definito" #: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 #: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 #: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181 +#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 #: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 @@ -278,9 +282,9 @@ msgstr "Alias \"%s\" già definito" #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359 +#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 +#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 #: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 #: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 #: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 @@ -294,11 +298,11 @@ msgstr "Alias \"%s\" già definito" #: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 #: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 #: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 -#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422 -#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967 -#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 +#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 +#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 +#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 +#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 #: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 #: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 #: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 @@ -321,7 +325,7 @@ msgstr "%s: %s" #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 #: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 #: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "errore interno, overflow di %s" @@ -491,14 +495,6 @@ msgstr "errore nel leggere il file di timing: %s" msgid "invalid timing file line: %s" msgstr "riga di timing del file non valida: %s" -#: logsrvd/iolog_writer.c:946 -msgid "log is already complete, cannot be restarted" -msgstr "il registro è già completo, non può essere riavviato" - -#: logsrvd/iolog_writer.c:977 -msgid "unable to restart log" -msgstr "impossibile riavviare il registro" - #: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 #: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format @@ -520,133 +516,54 @@ msgstr "%s/%s: impossibile spostarsi avanti %zu" msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "impossibile trovare il punto di ripristino [%lld, %ld] in %s/%s" -#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398 -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573 -#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637 +#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 +#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 +#: logsrvd/logsrvd_relay.c:544 msgid "state machine error" msgstr "errore della macchina di stato" -#: logsrvd/logsrvd.c:303 +#: logsrvd/logsrvd.c:443 msgid "invalid AcceptMessage" msgstr "AcceptMessage non valido" -#: logsrvd/logsrvd.c:311 -msgid "error parsing AcceptMessage" -msgstr "errore nell'analizzare AcceptMessage" - -#: logsrvd/logsrvd.c:318 -msgid "error creating I/O log" -msgstr "errore nel creare il registro I/O" - -#: logsrvd/logsrvd.c:325 -msgid "error logging accept event" -msgstr "errore nel registrare l'evento accept" - -#: logsrvd/logsrvd.c:366 +#: logsrvd/logsrvd.c:482 msgid "invalid RejectMessage" msgstr "RejectMessage non valido" -#: logsrvd/logsrvd.c:374 -msgid "error parsing RejectMessage" -msgstr "errore nell'analizzare RejectMessage" - -#: logsrvd/logsrvd.c:380 -msgid "error logging reject event" -msgstr "errore nel registrare l'evento reject" - -#: logsrvd/logsrvd.c:490 +#: logsrvd/logsrvd.c:593 msgid "invalid AlertMessage" msgstr "AlertMessage non valido" -#: logsrvd/logsrvd.c:499 -msgid "error parsing AlertMessage" -msgstr "errore nell'analizzare AlertMessage" - -#: logsrvd/logsrvd.c:507 -msgid "error logging alert event" -msgstr "errore nel registrare l'evento alert" - -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611 +#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "errore di protocollo" -#: logsrvd/logsrvd.c:538 -msgid "error writing IoBuffer" -msgstr "errore nello scrivere IoBuffer" - -#: logsrvd/logsrvd.c:590 -msgid "error writing ChangeWindowSize" -msgstr "errore nello scrivere ChangeWindowSize" - -#: logsrvd/logsrvd.c:622 -msgid "error writing CommandSuspend" -msgstr "errore nello scrivere CommandSuspend" - -#: logsrvd/logsrvd.c:707 +#: logsrvd/logsrvd.c:797 msgid "unrecognized ClientMessage type" msgstr "tipo di ClientMessage non riconosciuto" -#: logsrvd/logsrvd.c:978 +#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 msgid "client message too large" msgstr "messaggio client troppo grande" -#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216 -#, c-format -msgid "unable to set TLS 1.2 ciphersuite to %s: %s" -msgstr "impossibile impostare il cifrario per TLS 1.2 a %s: %s" - -#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244 -#, c-format -msgid "unable to set TLS 1.3 ciphersuite to %s: %s" -msgstr "impossibile impostare il cifrario per TLS 1.3 a %s: %s" - -#: logsrvd/logsrvd.c:1280 -#, c-format -msgid "unable to get TLS server method: %s" -msgstr "impossibile ottenere il metodo TLS del server: %s" - -#: logsrvd/logsrvd.c:1285 -#, c-format -msgid "unable to create TLS context: %s" -msgstr "impossibile creare il contesyo TLS: %s" - -#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236 -#, c-format -msgid "unable to load certificate %s" -msgstr "impossibile caricare il certificato %s" - -#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216 -#, c-format -msgid "unable to load certificate authority bundle %s" -msgstr "impossibile caricare il bundle CA %s" - -#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249 -#, c-format -msgid "unable to load private key %s" -msgstr "impossibile caricare la chiave privata %s" - -#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376 -#, c-format -msgid "unable to set diffie-hellman parameters: %s" -msgstr "impossibile impostare i parametri diffie-hellman: %s" - -#: logsrvd/logsrvd.c:1389 -#, c-format -msgid "unable to set minimum protocol version to TLS 1.2: %s" -msgstr "impossibile impostare la versione minima del protocollo a TLS 1.2: %s" +#: logsrvd/logsrvd.c:1102 +msgid "invalid ClientMessage" +msgstr "ClientMessage non valido" -#: logsrvd/logsrvd.c:1574 +#: logsrvd/logsrvd.c:1408 msgid "unable to get remote IP addr" msgstr "impossibile ottenere indirizzo IP remoto" -#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 +#: plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Impossibile allegare dati utenti all'oggetto ssl: %s" -#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834 -#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512 -#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969 +#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 +#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 +#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 #: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 #: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 #: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 @@ -664,285 +581,457 @@ msgstr "Impossibile allegare dati utenti all'oggetto ssl: %s" msgid "unable to add event to queue" msgstr "impossibile aggiungere l'evento alla coda" -#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033 -msgid "unable setup listen socket" +#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +msgid "unable to setup listen socket" msgstr "impossibile impostare il socket di ascolto" -#: logsrvd/logsrvd.c:1934 +#: logsrvd/logsrvd.c:1855 msgid "sudo log server" msgstr "Server di registro sudo" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127 +#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Opzioni:" -#: logsrvd/logsrvd.c:1938 +#: logsrvd/logsrvd.c:1859 msgid "path to configuration file" msgstr "Percorso del file di configurazione" -#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129 +#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "Visualizza il messaggio di aiuto ed esce" -#: logsrvd/logsrvd.c:1942 +#: logsrvd/logsrvd.c:1863 msgid "do not fork, run in the foreground" msgstr "Non esegue fork, esegue in primo piano" -#: logsrvd/logsrvd.c:1944 +#: logsrvd/logsrvd.c:1865 msgid "percent chance connections will drop" msgstr "Probabilità percentuale che le connessioni termineranno" -#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157 +#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 msgid "display version information and exit" msgstr "Visualizza le informazioni sulla versione ed esce" -#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 msgid "Protobuf-C version 1.3 or higher required" msgstr "È richiesto Protobuf-C 1.3 o successivo" -#: logsrvd/logsrvd.c:2012 +#: logsrvd/logsrvd.c:1933 #, c-format msgid "invalid random drop value: %s" msgstr "valore drop casuale non valido: %s" -#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785 +#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 #: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s versione %s\n" -#: logsrvd/logsrvd_conf.c:332 +#: logsrvd/logsrvd_conf.c:446 msgid "TLS not supported" msgstr "TLS non supportato" -#: logsrvd/logsrvd_conf.c:344 +#: logsrvd/logsrvd_conf.c:468 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656 +#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: non è un percorso completo" -#: logsrvd/logsrvd_conf.c:770 +#: logsrvd/logsrvd_conf.c:1035 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d \"[\" non corrispondente: %s" -#: logsrvd/logsrvd_conf.c:781 +#: logsrvd/logsrvd_conf.c:1046 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d sezione configurazione non valida: %s" -#: logsrvd/logsrvd_conf.c:789 +#: logsrvd/logsrvd_conf.c:1054 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d riga di configurazione non valida: %s" -#: logsrvd/logsrvd_conf.c:795 +#: logsrvd/logsrvd_conf.c:1060 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d atteso nome di sezione: %s" -#: logsrvd/logsrvd_conf.c:809 +#: logsrvd/logsrvd_conf.c:1074 #, c-format msgid "invalid value for %s: %s" msgstr "valore non valido per \"%s\": %s" -#: logsrvd/logsrvd_conf.c:817 +#: logsrvd/logsrvd_conf.c:1082 #, c-format msgid "%s:%d unknown key: %s" msgstr "%s:%d chiave sconosciuta: %s" -#: logsrvd/logsrvd_conf.c:1006 +#: logsrvd/logsrvd_conf.c:1294 #, c-format msgid "unknown syslog facility %s" msgstr "strumento syslog %s sconosciuto" -#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014 -#: logsrvd/logsrvd_conf.c:1018 +#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 +#: logsrvd/logsrvd_conf.c:1306 #, c-format msgid "unknown syslog priority %s" msgstr "priorità syslog %s sconosciuta" -#: logsrvd/sendlog.c:125 +#: logsrvd/logsrvd_conf.c:1374 +msgid "unable to initialize server TLS context" +msgstr "impossibile inizializzare il contesto TLS del server" + +#: logsrvd/logsrvd_conf.c:1394 +msgid "unable to initialize relay TLS context" +msgstr "impossibile inizializzare il contesto TLS di inoltro" + +#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 +#: logsrvd/logsrvd_journal.c:373 +msgid "unable to create journal file" +msgstr "Impossibile creare un file del registro" + +#: logsrvd/logsrvd_journal.c:134 +msgid "unable to lock journal file" +msgstr "Impossibile bloccare il file del registro" + +#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 +#: logsrvd/logsrvd_journal.c:411 +msgid "unable to write journal file" +msgstr "Impossibile scrivere il file del registro" + +#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +msgid "unable to rename journal file" +msgstr "Impossibile rinominare il file del registro" + +#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +msgid "unexpected EOF reading journal file" +msgstr "EOF inatteso nel file del registro" + +#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +msgid "error reading journal file" +msgstr "errore nel leggere il file del registro" + +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +msgid "invalid journal file, unable to restart" +msgstr "file del registro non valido, impossibile riavviare" + +#: logsrvd/logsrvd_local.c:149 +msgid "error parsing AcceptMessage" +msgstr "errore nell'analizzare AcceptMessage" + +#: logsrvd/logsrvd_local.c:156 +msgid "error creating I/O log" +msgstr "errore nel creare il registro I/O" + +#: logsrvd/logsrvd_local.c:164 +msgid "error logging accept event" +msgstr "errore nel registrare l'evento accept" + +#: logsrvd/logsrvd_local.c:196 +msgid "error parsing RejectMessage" +msgstr "errore nell'analizzare RejectMessage" + +#: logsrvd/logsrvd_local.c:202 +msgid "error logging reject event" +msgstr "errore nel registrare l'evento reject" + +#: logsrvd/logsrvd_local.c:276 +msgid "log is already complete, cannot be restarted" +msgstr "il registro è già completo, non può essere riavviato" + +#: logsrvd/logsrvd_local.c:307 +msgid "unable to restart log" +msgstr "impossibile riavviare il registro" + +#: logsrvd/logsrvd_local.c:322 +msgid "error parsing AlertMessage" +msgstr "errore nell'analizzare AlertMessage" + +#: logsrvd/logsrvd_local.c:330 +msgid "error logging alert event" +msgstr "errore nel registrare l'evento alert" + +#: logsrvd/logsrvd_local.c:397 +msgid "error writing IoBuffer" +msgstr "errore nello scrivere IoBuffer" + +#: logsrvd/logsrvd_local.c:434 +msgid "error writing ChangeWindowSize" +msgstr "errore nello scrivere ChangeWindowSize" + +#: logsrvd/logsrvd_local.c:474 +msgid "error writing CommandSuspend" +msgstr "errore nello scrivere CommandSuspend" + +#: logsrvd/logsrvd_relay.c:434 +msgid "TLS handshake with relay host failed" +msgstr "handshake TLS con host di inoltro non riuscito" + +#: logsrvd/logsrvd_relay.c:462 +msgid "unable to connect to relay host" +msgstr "impossibile connettersi all'host di inoltro" + +#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 +#: plugins/sudoers/log_client.c:1466 +msgid "invalid ServerHello" +msgstr "ServerHello non valido" + +#: logsrvd/logsrvd_relay.c:677 +msgid "unrecognized ServerMessage type" +msgstr "tipo di ServerMessage non riconosciuto" + +#: logsrvd/logsrvd_relay.c:709 +msgid "timeout reading from relay" +msgstr "timeout nel leggere dal relay" + +#: logsrvd/logsrvd_relay.c:761 +msgid "relay host name does not match certificate" +msgstr "il nome host del relay non corrisponde al certificato" + +#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 +#: logsrvd/logsrvd_relay.c:794 +msgid "error reading from relay" +msgstr "errore nel leggere dal relay" + +#: logsrvd/logsrvd_relay.c:817 +msgid "unable to read from relay" +msgstr "impossibile leggere dal relay" + +#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +msgid "relay server closed connection" +msgstr "connessione chiusa del server di relay" + +#: logsrvd/logsrvd_relay.c:850 +msgid "server message too large" +msgstr "messaggio server troppo grande" + +#: logsrvd/logsrvd_relay.c:915 +msgid "timeout writing to relay" +msgstr "timeout nello scrivere sul relay" + +#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:993 +msgid "error writing to relay" +msgstr "errore nello scrivere sul relay" + +#: logsrvd/sendlog.c:120 msgid "send sudo I/O log to remote server" msgstr "Invia registro I/O di sudo a un server remoto" -#: logsrvd/sendlog.c:131 +#: logsrvd/sendlog.c:126 msgid "only send an accept event (no I/O)" msgstr "Invia solo un evento di accettazione (nessun I/O)" -#: logsrvd/sendlog.c:134 +#: logsrvd/sendlog.c:129 msgid "certificate bundle file to verify server's cert against" msgstr "File bundle di certificati con cui verificare il certificato del server" -#: logsrvd/sendlog.c:136 +#: logsrvd/sendlog.c:131 msgid "certificate file for TLS handshake" msgstr "File certificato per l'handshake TLS" -#: logsrvd/sendlog.c:139 +#: logsrvd/sendlog.c:134 msgid "host to send logs to" msgstr "Host a cui inviare i registri" -#: logsrvd/sendlog.c:141 +#: logsrvd/sendlog.c:136 msgid "remote ID of I/O log to be resumed" msgstr "ID remoto del registro di I/O da riprendere" -#: logsrvd/sendlog.c:144 +#: logsrvd/sendlog.c:139 msgid "private key file" msgstr "File chiave privata" -#: logsrvd/sendlog.c:146 +#: logsrvd/sendlog.c:141 msgid "do not verify server certificate" msgstr "Non verifica il certificato del server" -#: logsrvd/sendlog.c:149 +#: logsrvd/sendlog.c:144 msgid "port to use when connecting to host" msgstr "Porta da utilizzare per la connessione all'host" -#: logsrvd/sendlog.c:151 +#: logsrvd/sendlog.c:146 msgid "restart previous I/O log transfer" msgstr "Riavvia il precedente trasferimento del registro di I/O" -#: logsrvd/sendlog.c:153 +#: logsrvd/sendlog.c:148 msgid "reject the command with the given reason" msgstr "Rifiuta il comando con il motivo indicato" -#: logsrvd/sendlog.c:155 +#: logsrvd/sendlog.c:150 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "Prova il server di controllo inviando il registro di I/O selezionato n-volte in parallelo" -#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "impossibile cercare %s:%s: %s" -#: logsrvd/sendlog.c:218 +#: logsrvd/sendlog.c:213 msgid "unable to get server IP addr" msgstr "impossibile ottenere indirizzo IP del server" -#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "impossibile leggere %s/%s: %s" -#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692 +#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 #, c-format msgid "client message too large: %zu" msgstr "messaggio client troppo grande: %zu" -#: logsrvd/sendlog.c:826 +#: logsrvd/sendlog.c:830 #, c-format msgid "%s: write buffer already in use" msgstr "%s: buffer di scrittura già in uso" -#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893 +#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 #: plugins/sudoers/iolog.c:962 #, c-format msgid "unexpected I/O event %d" msgstr "evento I/O %d non atteso" -#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975 +#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 #: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 #: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 #, c-format msgid "%s: unexpected state %d" msgstr "%s: stato %d non atteso" -#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466 -msgid "invalid ServerHello" -msgstr "ServerHello non valido" - -#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 #, c-format msgid "error message received from server: %s" msgstr "messaggio di errore ricevuto dal server: %s" -#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 #, c-format msgid "abort message received from server: %s" msgstr "messaggio di abort ricevuto dal server: %s" -#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572 +#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 msgid "unable to unpack ServerMessage" msgstr "impossibile aprire ServerMessage" -#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valore type_case %d non atteso" -#: logsrvd/sendlog.c:1112 +#: logsrvd/sendlog.c:1116 msgid "timeout reading from server" msgstr "timeout nel leggere dal server" -#: logsrvd/sendlog.c:1190 +#: logsrvd/sendlog.c:1195 msgid "premature EOF" msgstr "EOF prematuro" -#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 #, c-format msgid "server message too large: %u" msgstr "messaggio server troppo grande: %u" -#: logsrvd/sendlog.c:1254 +#: logsrvd/sendlog.c:1259 msgid "timeout writing to server" msgstr "timeout nello scrivere sul server" -#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296 +#: logsrvd/sendlog.c:1591 +msgid "both restart point and iolog ID must be specified" +msgstr "devono essere specificati sia il punto di inizio che l'ID di iolog" + +#: logsrvd/sendlog.c:1595 +msgid "a restart point may not be set when no I/O is sent" +msgstr "un punto di partenza non può essere impostato quando non è inviato alcun I/O" + +#: logsrvd/sendlog.c:1671 +#, c-format +msgid "exited prematurely with state %d" +msgstr "uscito inaspettatamente con stato %d" + +#: logsrvd/sendlog.c:1672 +#, c-format +msgid "elapsed time sent to server [%lld, %ld]" +msgstr "tempo trascorso inviato al server [%lld, %ld]" + +#: logsrvd/sendlog.c:1674 +#, c-format +msgid "commit point received from server [%lld, %ld]" +msgstr "punto di commit ricevuto dal server [%lld, %ld]" + +#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "timeout handshake TLS" -#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507 +#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 #: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "impossibile impostare evento" -#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521 +#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 #, c-format msgid "TLS connection failed: %s" -msgstr "Connessione TLS non riuscita: %s" +msgstr "connessione TLS non riuscita: %s" -#: logsrvd/sendlog.c:1554 +#: logsrvd/tls_client.c:197 #, c-format -msgid "Unable to initialize ssl context: %s" -msgstr "Impossibile inizializzare il conteso ssl: %s" +msgid "unable to allocate ssl object: %s" +msgstr "impossibile allocare l'oggetto ssl: %s" -#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258 -#, c-format -msgid "Unable to allocate ssl object: %s" -msgstr "Impossibile allocare l'oggetto ssl: %s" - -#: logsrvd/sendlog.c:1564 +#: logsrvd/tls_client.c:210 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Impossibile collegare il socket all'oggetto ssl: %s" -#: logsrvd/sendlog.c:1808 -msgid "both restart point and iolog ID must be specified" -msgstr "devono essere specificati sia il punto di inizio che l'ID di iolog" +#: logsrvd/tls_client.c:238 +msgid "unable to initialize TLS context" +msgstr "impossibile inizializzare il contesto TLS" -#: logsrvd/sendlog.c:1812 -msgid "a restart point may not be set when no I/O is sent" -msgstr "un punto di partenza non può essere impostato quando non è inviato alcun I/O" +#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#, c-format +msgid "unable to set TLS 1.2 ciphersuite to %s: %s" +msgstr "impossibile impostare il cifrario per TLS 1.2 a %s: %s" -#: logsrvd/sendlog.c:1887 +#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 #, c-format -msgid "exited prematurely with state %d" -msgstr "uscito inaspettatamente con stato %d" +msgid "unable to set TLS 1.3 ciphersuite to %s: %s" +msgstr "impossibile impostare il cifrario per TLS 1.3 a %s: %s" -#: logsrvd/sendlog.c:1888 +#: logsrvd/tls_init.c:200 #, c-format -msgid "elapsed time sent to server [%lld, %ld]" -msgstr "tempo trascorso inviato al server [%lld, %ld]" +msgid "unable to create TLS context: %s" +msgstr "impossibile creare il contesyo TLS: %s" -#: logsrvd/sendlog.c:1890 +#: logsrvd/tls_init.c:206 #, c-format -msgid "commit point received from server [%lld, %ld]" -msgstr "punto di commit ricevuto dal server [%lld, %ld]" +msgid "unable to set minimum protocol version to TLS 1.2: %s" +msgstr "impossibile impostare la versione minima del protocollo a TLS 1.2: %s" + +#: logsrvd/tls_init.c:282 +#, c-format +msgid "unable to set diffie-hellman parameters: %s" +msgstr "impossibile impostare i parametri diffie-hellman: %s" + +#: logsrvd/tls_init.c:291 +#, c-format +msgid "unable to read diffie-hellman parameters: %s" +msgstr "impossibile leggere i parametri diffie-hellman: %s" + +#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 +#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 +#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 +#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "impossibile aprire %s" #: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 #: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 @@ -1053,33 +1142,33 @@ msgstr "%s: impossibile verificare TGT. Possibile attacco in corso: %s" msgid "unable to initialize PAM: %s" msgstr "impossibile inizializzare PAM: %s" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:340 #, c-format msgid "PAM authentication error: %s" msgstr "Errore autenticazione PAM: %s" -#: plugins/sudoers/auth/pam.c:356 +#: plugins/sudoers/auth/pam.c:359 msgid "account validation failure, is your account locked?" msgstr "validazione dell'account non riuscita: forse è bloccato?" -#: plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:370 msgid "Account or password is expired, reset your password and try again" msgstr "Account o password scaduto: reimpostare la password e provare nuovamente" -#: plugins/sudoers/auth/pam.c:373 +#: plugins/sudoers/auth/pam.c:376 #, c-format msgid "unable to change expired password: %s" msgstr "impossibile modificare la password scaduta: %s" -#: plugins/sudoers/auth/pam.c:384 +#: plugins/sudoers/auth/pam.c:387 msgid "Password expired, contact your system administrator" msgstr "Password scaduta, contattare l'amministratore di sistema" -#: plugins/sudoers/auth/pam.c:389 +#: plugins/sudoers/auth/pam.c:392 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Account scaduto o alla configurazione PAM manca una sezione \"account\" per sudo: contattare l'amministratore di sistema" -#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402 +#: plugins/sudoers/auth/pam.c:400 plugins/sudoers/auth/pam.c:405 #, c-format msgid "PAM account management error: %s" msgstr "Errore gestione account PAM: %s" @@ -1167,16 +1256,6 @@ msgstr "errore nel leggere il file di lezione %s" msgid "ignoring lecture file %s: not a regular file" msgstr "il file di lezione %s viene ignorato: non è un file regolare" -#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 -#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 -#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688 -#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435 -#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "impossibile aprire %s" - #: plugins/sudoers/check.c:283 msgid "" "\n" @@ -1207,7 +1286,7 @@ msgstr "uid sconosciuto: %u" #: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 #: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 #: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383 +#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 #, c-format msgid "unknown user: %s" msgstr "utente sconosciuto: %s" @@ -1252,7 +1331,7 @@ msgstr "ordine di riempimento: %s: %s" msgid "%s grammar version %d\n" msgstr "%s versione grammaticale %d\n" -#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:159 #, c-format msgid "unsupported input format %s" msgstr "formato di input %s non supportato" @@ -1268,7 +1347,7 @@ msgid "%s: input and output files must be different" msgstr "%s: i file di input e output devono essere diversi" #: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247 +#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 #: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "impossibile inizializzare i valori predefiniti di sudoers" @@ -1314,7 +1393,7 @@ msgid "parse error in %s\n" msgstr "errore di analisi in %s\n" #: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 -#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318 +#: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" msgstr "impossibile scrivere su %s" @@ -2127,7 +2206,7 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Coppia indirizzo IP locale e maschera di rete:\n" #: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407 +#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 #, c-format msgid "unknown group: %s" msgstr "gruppo sconosciuto: %s" @@ -2155,8 +2234,8 @@ msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: errore interno, file registro IO per l'evento %d non aperto" #: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836 -#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487 +#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "impossibile leggere l'orologio" @@ -2239,6 +2318,26 @@ msgstr "errore nel ciclo dell'evento" msgid "Creation of new SSL_CTX object failed: %s" msgstr "Creazione di un nuovo oggetto SSL_CTX non riuscita: %s" +#: plugins/sudoers/log_client.c:216 +#, c-format +msgid "unable to load certificate authority bundle %s" +msgstr "impossibile caricare il bundle CA %s" + +#: plugins/sudoers/log_client.c:236 +#, c-format +msgid "unable to load certificate %s" +msgstr "impossibile caricare il certificato %s" + +#: plugins/sudoers/log_client.c:249 +#, c-format +msgid "unable to load private key %s" +msgstr "impossibile caricare la chiave privata %s" + +#: plugins/sudoers/log_client.c:258 +#, c-format +msgid "Unable to allocate ssl object: %s" +msgstr "Impossibile allocare l'oggetto ssl: %s" + #: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format msgid "TLS connection to %s:%s failed: %s" @@ -2416,7 +2515,7 @@ msgstr "attributo LDIF non valido: %s" msgid "invalid %.*s set by sudo front-end" msgstr "%.*s non valido impostato dal front-end sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269 +#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "impossibile analizzare l'elenco degli indirizzi di rete" @@ -2534,7 +2633,7 @@ msgid "unable to cache gid %u, already exists" msgstr "impossibile memorizzare in cache il gid %u, esiste già " #: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619 -#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730 +#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:729 #, c-format msgid "unable to cache group %s" msgstr "impossibile memorizzare in cache il gruppo %s" @@ -2544,24 +2643,24 @@ msgstr "impossibile memorizzare in cache il gruppo %s" msgid "unable to cache group %s, already exists" msgstr "impossibile memorizzare in cache il gruppo %s, esiste già " -#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928 -#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030 +#: plugins/sudoers/pwutil.c:876 plugins/sudoers/pwutil.c:927 +#: plugins/sudoers/pwutil.c:977 plugins/sudoers/pwutil.c:1029 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "impossibile memorizzare in cache l'elenco di gruppo %s, esiste già " -#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933 -#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035 +#: plugins/sudoers/pwutil.c:882 plugins/sudoers/pwutil.c:932 +#: plugins/sudoers/pwutil.c:983 plugins/sudoers/pwutil.c:1034 #, c-format msgid "unable to cache group list for %s" msgstr "impossibile memorizzare in cache l'elenco di gruppo %s" -#: plugins/sudoers/pwutil.c:922 +#: plugins/sudoers/pwutil.c:921 #, c-format msgid "unable to parse groups for %s" msgstr "impossibile analizzare i gruppi per %s" -#: plugins/sudoers/pwutil.c:1024 +#: plugins/sudoers/pwutil.c:1023 #, c-format msgid "unable to parse gids for %s" msgstr "impossibile analizzare i gid per %s" @@ -2918,11 +3017,11 @@ msgstr "" " -s, --speed=NUME Velocizza o rallenta l'output\n" " -V, --version Visualizza la versione ed esce" -#: plugins/sudoers/testsudoers.c:345 +#: plugins/sudoers/testsudoers.c:344 msgid "\thost unmatched" msgstr "\thost non corrispondente" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:347 msgid "" "\n" "Command allowed" @@ -2930,7 +3029,7 @@ msgstr "" "\n" "Comando consentito" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command denied" @@ -2938,7 +3037,7 @@ msgstr "" "\n" "Comando negato" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command unmatched" @@ -2951,26 +3050,26 @@ msgstr "" msgid "%s is group writable" msgstr "%s è scrivibile da tutti" -#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661 +#: plugins/sudoers/timestamp.c:328 plugins/sudoers/timestamp.c:663 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "impossibile troncare il file della marcatura temporale a %lld byte" -#: plugins/sudoers/timestamp.c:847 +#: plugins/sudoers/timestamp.c:860 msgid "ignoring time stamp from the future" msgstr "marcatura temporale dal futuro ignorata" -#: plugins/sudoers/timestamp.c:870 +#: plugins/sudoers/timestamp.c:883 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "marcatura temporale troppo avanti nel tempo: %20.20s" -#: plugins/sudoers/timestamp.c:992 +#: plugins/sudoers/timestamp.c:1005 #, c-format msgid "unable to lock time stamp file %s" msgstr "impossibile bloccare il file della marcatura temporale %s" -#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056 +#: plugins/sudoers/timestamp.c:1049 plugins/sudoers/timestamp.c:1069 #, c-format msgid "lecture status path too long: %s/%s" msgstr "percorso dello stato della lezione troppo lungo: %s %s" diff --git a/plugins/sudoers/po/ko.mo b/plugins/sudoers/po/ko.mo Binary files differindex 6570e673a..d22e88b2c 100644 --- a/plugins/sudoers/po/ko.mo +++ b/plugins/sudoers/po/ko.mo diff --git a/plugins/sudoers/po/ko.po b/plugins/sudoers/po/ko.po index 7f1282d81..474253dcd 100644 --- a/plugins/sudoers/po/ko.po +++ b/plugins/sudoers/po/ko.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-06 12:12+0900\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-23 02:10+0900\n" "Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n" "Language-Team: Korean <translation-team-ko@googlegroups.com>\n" "Language: ko\n" @@ -19,7 +19,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.3.1\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "문법 오류" @@ -43,29 +43,46 @@ msgstr "*** %h 보안 알림 ***" msgid "Sorry, try again." msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -77,16 +94,16 @@ msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -99,21 +116,21 @@ msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -124,7 +141,7 @@ msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -135,13 +152,13 @@ msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -152,214 +169,237 @@ msgstr "죄송합니다만, 다시 ì‹œë„하ì‹ì‹œì˜¤." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "메모리를 í• ë‹¹í• ìˆ˜ 없습니다" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "다ì´ì œìŠ¤íŠ¸ì— 경로 ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "%s: \"CWD\" ê°’ì€ '/'; '~'; '*' 문ìžë¡œ 시작해야합니다" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "%s: \"CHROOT\" ê°’ì€ '/'; '~'; '*' 문ìžë¡œ 시작해야합니다" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "문법 오류. %s 예약어를 별ì¹ìœ¼ë¡œ ì¼ìŠµë‹ˆë‹¤" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "부ì ì ˆí•œ notbefore ê°’" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "부ì ì ˆí•œ notafter ê°’" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "ì œí•œ 시간 ê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "부ì ì ˆí•œ ì œí•œ 시간 ê°’" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "\"%s\" 별ì¹ì„ ì´ë¯¸ ì •ì˜í–ˆìŠµë‹ˆë‹¤" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "내부 오류. %s 오버플로우" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "표준 ìž…ë ¥ì„ ë³µì œí• ìˆ˜ 없습니다: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "%sì„(를) ì‹¤í–‰í• ìˆ˜ 없습니다: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "í¬í‚¹í• 수 없습니다" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "í¬í‚¹í• 수 없습니다: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "파ì´í”„를 ì—´ 수 없습니다: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (ëª…ë ¹ ê³„ì† ì‹¤í–‰) %s" @@ -473,351 +513,585 @@ msgstr "%s: 실행 그룹 필드가 ë¹ ì¡ŒìŠµë‹ˆë‹¤" msgid "%s exists but is not a directory (0%o)" msgstr "%sì´(ê°€) 있지만 ë””ë ‰í„°ë¦¬ê°€ 아닙니다(0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "mkdir %s ëª…ë ¹ì„ ì‹¤í–‰í• ìˆ˜ 없습니다" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "타ì´ë° íŒŒì¼ ì½ê¸° 오류: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "부ì ì ˆí•œ 타ì´ë° íŒŒì¼ í–‰: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "UUID를 만들 수 없습니다" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: í”„ë¡œí† ì½œ 오류: %sì˜ ìž˜ëª»ëœ í˜•ì‹" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: í”„ë¡œí† ì½œ 오류: AcceptMessageì— %s ë¹ ì§" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: 세션 ID를 í¬ë§¤íŒ…í• ìˆ˜ 없습니다" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %sì„(를) ì„¤ì •í•˜ì§€ ì•ŠìŒ" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "%s ìž…ì¶œë ¥ 로그 경로를 í™•ìž¥í• ìˆ˜ 없습니다" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "%s ìž…ì¶œë ¥ 로그 경로를 만들 수 없습니다" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "부ì ì ˆí•œ ìž…ì¶œë ¥ íŒŒì¼ ì„œìˆ ìž %d번" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "%d ìž…ì¶œë ¥ íŒŒì¼ ì„œìˆ ìž ë‹«ê¸° 오류: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "부ì ì ˆí•œ %s ìž…ì¶œë ¥ 로그: %sì„(를) 참조했지만 없습니다" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: [%lld, %ld] 재개 지ì ì„ ì°¾ì„ ìˆ˜ 없습니다" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "%sì„(를) ì—´ 수 없습니다" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "%s/%sì„(를) ì—´ 수 없습니다" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "%s/%sì„(를) %s/%s(으)ë¡œ ë³µì‚¬í• ìˆ˜ 없습니다: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "%sì„(를) %s(으)ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "ìž…ì¶œë ¥ 로그 íŒŒì¼ %s/%s ë¹ ì§" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: %zu회 ì´ì „ íƒìƒ‰ì„ ì§„í–‰í• ìˆ˜ 없습니다" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "%3$s/%4$sì—ì„œ 재개 지ì [%1$lld, %2$ld]ì„ ì°¾ì„ ìˆ˜ 없습니다" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: [%lld, %ld] 재개 지ì ì„ ì°¾ì„ ìˆ˜ 없습니다" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "ë¦´ë ˆì´ì— ì—°ê²°í• ìˆ˜ 없습니다" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "서버 메시지가 너무 ê¹ë‹ˆë‹¤: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "íì— ì´ë²¤íŠ¸ë¥¼ ì¶”ê°€í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "%2$sì˜ ì˜ˆê¸°ì¹˜ ì•Šì€ ìƒíƒœ %1$d번" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "ìƒíƒœ ë¨¸ì‹ ì˜¤ë¥˜" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "부ì ì ˆí•œ AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "부ì ì ˆí•œ RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "부ì ì ˆí•œ AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: 예기치 ì•Šì€ ìž…ì¶œë ¥ ë²„í¼ ë°œê²¬" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "í”„ë¡œí† ì½œ 오류" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "%3$sì˜ %2$sì—ì„œ 예기지 ì•Šì€ type_case ê°’ %1$d" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "ì¸ì‹í• 수 없는 ClientMessage 형ì‹" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "%s í´ë¼ì´ì–¸íŠ¸ ê¸°ë¡ ì‹œê°„ 초과" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "%s í´ë¼ì´ì–¸íŠ¸ì—ì„œ ê¸°ë¡ ë²„í¼ ë¹ ì§" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "%s í´ë¼ì´ì–¸íŠ¸ì—ì„œ ì½ê¸° 시간 초과" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "ì ì ˆí•œ TLS 셧다운 미ì´í–‰ì„ ë™ë°˜í•œ %sì˜ íŒŒì¼ë(EOF)" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "í´ë¼ì´ì–¸ë“œ 메시지가 너무 ê¹ë‹ˆë‹¤: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "í´ë¼ì´ì–¸íŠ¸ 메시지가 너무 ê¹ë‹ˆë‹¤" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "부ì ì ˆí•œ ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "ì›ê²© IP 주소를 ê°€ì ¸ì˜¬ 수 없습니다" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "ssl ê°ì²´ì— ì‚¬ìš©ìž ë°ì´í„°ë¥¼ ë¶™ì¼ ìˆ˜ 없습니다: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "íì— ì´ë²¤íŠ¸ë¥¼ ì¶”ê°€í• ìˆ˜ 없습니다" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "ê°ì² ì†Œì¼“ì„ ì„¤ì •í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "예기치 ì•Šì€ ì‹œê·¸ë„ %d번" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "sudo 로그 서버" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "옵션:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "ì„¤ì • íŒŒì¼ ê²½ë¡œ" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "ë„ì›€ë§ ë©”ì‹œì§€ë¥¼ 표시한 후 ë¹ ì ¸ë‚˜ê°‘ë‹ˆë‹¤" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "프로세스를 í¬í‚¹í•˜ì§€ ì•Šê³ , í¬ê·¸ë¼ìš´ë“œì—ì„œ 실행" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "ì—°ê²°ì´ ëŠì„ í™•ë¥ ì— ëŒ€í•œ 백분율" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "ë²„ì „ ì •ë³´ë¥¼ í‘œì‹œí•˜ê³ ë¹ ì ¸ë‚˜ê°‘ë‹ˆë‹¤" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C 1.3 ì´ìƒì˜ ë²„ì „ì´ í•„ìš”í•©ë‹ˆë‹¤" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "부ì ì ˆí•œ ìž„ì˜ ì² íšŒ ê°’: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s ë²„ì „ %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "ì•Œ 수 없는 ì‚¬ìš©ìž %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "ì•Œ 수 없는 그룹 %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "%s ìž…ì¶œë ¥ 로그 모드를 í•´ì„í• ìˆ˜ 없습니다" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "부ì ì ˆí•œ %s ê°’: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS를 지ì›í•˜ì§€ 않습니다" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: ì™„ì „í•˜ì§€ ì•Šì€ ê²½ë¡œ" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "ì•Œ 수 없는 syslog 수단 %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "ì•Œ 수 없는 syslog ìš°ì„ ìˆœìœ„ %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d ì¼ì¹˜í•˜ì§€ 않는 '[': %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d 부ì ì ˆí•œ ì„¤ì • 섹션: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d 부ì ì ˆí•œ ì„¤ì • í–‰: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d(ì—)ì„œ 섹션 ì´ë¦„ì´ ë‚˜ì™€ì•¼ 합니다: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "부ì ì ˆí•œ %s ê°’: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d ì•Œ 수 없는 키: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "ì•Œ 수 없는 syslog 수단 %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] ìž˜ëª»ëœ í‚¤: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "ì•Œ 수 없는 syslog ìš°ì„ ìˆœìœ„ %s" +msgid "unable to open log file %s" +msgstr "%s 로그 파ì¼ì„ ì—´ 수 없습니다" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "서버 TLS 컨í…스트를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "ë¦´ë ˆì´ TLS 컨í…스트를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "ì €ë„ íŒŒì¼ì„ 만들 수 없습니다" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "%sì„(를) ìž ê¸€ 수 없습니다" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "ì €ë„ íŒŒì¼ì„ ìž ê¸€ 수 없습니다" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "ì €ë„ íŒŒì¼ì„ ì—´ 수 없습니다" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "ì €ë„ íŒŒì¼ì„ 기ë¡í• 수 없습니다" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "ì €ë„ íŒŒì¼ ì´ë¦„ì„ ë°”ê¿€ 수 없습니다" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "ì €ë„ íŒŒì¼ ì½ëŠ” 중 예기치 ì•Šì€ íŒŒì¼ ë 발견" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "ì €ë„ íŒŒì¼ ì½ê¸° 오류" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "부ì ì ˆí•œ ì €ë„ íŒŒì¼. 다시 ì‹œìž‘í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "%3$s ì €ë„ íŒŒì¼ì—ì„œ [%1$lld, %2$ld] 위치를 íƒìƒ‰í• 수 없습니다" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "AcceptMessage í•´ì„ ì˜¤ë¥˜" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "ìž…ì¶œë ¥ 로그 만드는 중 오류" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "ìˆ˜ë½ ì´ë²¤íŠ¸ 로깅 중 오류" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "RejectMessage í•´ì„ ì˜¤ë¥˜" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "ê±°ì ˆ ì´ë²¤íŠ¸ 로깅 중 오류" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "ë내기 ì´ë²¤íŠ¸ ê¸°ë¡ ì˜¤ë¥˜" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "로그를 ì´ë¯¸ ë냈으며, 다시 ì‹œìž‘í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "로그를 다시 ì‹œìž‘í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "AlertMessage í•´ì„ ì˜¤ë¥˜" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "ê²½ê³ ì´ë²¤íŠ¸ 로깅 중 오류" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "ê¸¸ì´ %dì¸ íƒ€ì´ë° 버í¼ë¥¼ í¬ë§¤íŒ…í• ìˆ˜ 없습니다" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "ìž…ì¶œë ¥ ë²„í¼ ê¸°ë¡ ì¤‘ 오류" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "ChangeWindowSize ê¸°ë¡ ì¤‘ 오류" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "CommandSuspend ê¸°ë¡ ì¤‘ 오류" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "ë¦´ë ˆì´ í˜¸ìŠ¤íŠ¸ì™€ì˜ TLS 핸드 ì…°ì´í¬ 실패" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "ë¦´ë ˆì´ í˜¸ìŠ¤íŠ¸ì— ì—°ê²°í• ìˆ˜ 없습니다" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: 부ì ì ˆí•œ ServerHello, server_idê°€ ë¹ ì¡ŒìŠµë‹ˆë‹¤" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "부ì ì ˆí•œ ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "ì¸ì‹í• 수 없는 ServerMessage 형ì‹" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "ë¦´ë ˆì´ %sì—ì„œ ì½ê¸° 시간 초과 (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "ë¦´ë ˆì´ ë°ì´í„° ì½ê¸° 시간 초과" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "ë¦´ë ˆì´ í˜¸ìŠ¤íŠ¸ ì´ë¦„ì´ ì¸ì¦ì„œì™€ ì¼ì¹˜í•˜ì§€ 않습니다" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "ë¦´ë ˆì´ ë°ì´í„° ì½ëŠ” 중 오류" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "ë¦´ë ˆì´ ë°ì´í„°ë¥¼ ì½ì„ 수 없습니다" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "ë¦´ë ˆì´ ì„œë²„ ì—°ê²°ì„ ëŠì—ˆìŠµë‹ˆë‹¤" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "서버 메시지가 너무 ê¹ë‹ˆë‹¤" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "ë¦´ë ˆì´ %sì— ê¸°ë¡ ì‹œê°„ 초과 (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "ë¦´ë ˆì´ ê¸°ë¡ ì‹œê°„ 초과" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "ë¦´ë ˆì´ ê¸°ë¡ ì¤‘ 오류" @@ -866,177 +1140,163 @@ msgid "reject the command with the given reason" msgstr "주어진 ì‚¬ìœ ë¡œ ëª…ë ¹ ì‹¤í–‰ì„ ê±°ì ˆí•©ë‹ˆë‹¤" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "ì´ ì‹œê°„ì— ë„달한 후 ì „ì†¡ 중단" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "ì„ íƒí•œ ìž…ì¶œë ¥ 로그를 ë™ì‹œì— N번 ë³´ë‚´ì–´ ê°ì‚¬ 서버 시험" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "%s:%sì„(를) ì°¾ì„ ìˆ˜ 없습니다: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "서버 IP 주소를 ê°€ì ¸ì˜¬ 수 없습니다" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "%s/%sì„(를) ì½ì„ 수 없습니다: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "í´ë¼ì´ì–¸ë“œ 메시지가 너무 ê¹ë‹ˆë‹¤: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: 쓰기 버í¼ë¥¼ ì´ë¯¸ 사용중입니다" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "예기치 ì•Šì€ ìž…ì¶œë ¥ ì´ë²¤íŠ¸ %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: 예기치 ì•Šì€ ìƒíƒœ 번호 %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "서버로부터 오류 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "서버로부터 중단 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "ServerMessage를 ì–¸íŒ©í• ìˆ˜ 없습니다" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: 예기지 ì•Šì€ type_case ê°’ %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "서버 ë°ì´í„° ì½ê¸° 시간 초과" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "갑작스러운 EOF" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "서버 메시지가 너무 ê¹ë‹ˆë‹¤: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "서버 ê¸°ë¡ ì‹œê°„ 초과" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "다시 시작 지ì ê³¼ ìž…ì¶œë ¥ 로그 ID를 반드시 ì§€ì •í•´ì•¼í•©ë‹ˆë‹¤" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "ìž…ì¶œë ¥ì„ ë³´ë‚´ì§€ ì•Šì„ ë•Œ 다시 시작 지ì ì„ ì§€ì •í•˜ì§€ 않습니다" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "%d ìƒíƒœë¡œ ê°‘ìžê¸° ë¹ ì ¸ë‚˜ì™”ìŠµë‹ˆë‹¤" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "경과 ì‹œê°„ì„ ì„œë²„ë¡œ 보냈습니다 [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "ì œì¶œ 지ì ì •ë³´ë¥¼ 서버로부터 받았습니다 [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "TLS 핸드셰ì´í¬ ì‹œê°„ì„ ì´ˆê³¼í–ˆìŠµë‹ˆë‹¤" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "ì´ë²¤íŠ¸ë¥¼ ì„¤ì •í• ìˆ˜ 없습니다" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS ì—°ê²° 실패: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "SSL ê°ì²´ë¥¼ í• ë‹¹í• ìˆ˜ 없습니다: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "SSL ê°ì²´ì— ì†Œì¼“ì„ ë¶™ì¼ ìˆ˜ 없습니다: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "TLS 컨í…스트를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "%sì— TLS 1.2 암호 모ìŒì„ ì„¤ì •í• ìˆ˜ 없습니다: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "%sì— TLS 1.3 암호 모ìŒì„ ì„¤ì •í• ìˆ˜ 없습니다: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "TLS 컨í…스트를 만들 수 없습니다: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "TLS í”„ë¡œí† ì½œ 최소 ë²„ì „ì„ 1.2ë¡œ ì„¤ì •í• ìˆ˜ 없습니다: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "디피-헬먼 매개변수를 ì„¤ì •í• ìˆ˜ 없습니다: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "디피-헬먼 매개변수를 ì½ì„ 수 없습니다: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "%sì„(를) ì—´ 수 없습니다" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "ì¼ì‹œ ì •ë³´ë¥¼ ê°€ì ¸ì˜¬ 수 없습니다" @@ -1276,20 +1536,12 @@ msgstr "" " #3) 막강한 힘ì—는 ìƒë‹¹í•œ ì±…ìž„ì´ ë’¤ë”°ë¦…ë‹ˆë‹¤.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "ì•Œ 수 없는 uid: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "ì•Œ 수 없는 사용ìž: %s" +msgid "unknown uid %u" +msgstr "ì•Œ 수 없는 uid %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1346,9 +1598,10 @@ msgstr "지ì›í•˜ì§€ 않는 %s ì¶œë ¥ 형ì‹" msgid "%s: input and output files must be different" msgstr "%s: ìž…ì¶œë ¥ 파ì¼ì€ 달ë¼ì•¼í•©ë‹ˆë‹¤" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "sudoers 기본 ê°’ì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다" @@ -1359,8 +1612,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: ì•Œ 수 없는 키워드: %s" +msgid "%s: unknown key word %s" +msgstr "%s: ì•Œ 수 없는 키워드 %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1392,7 +1645,7 @@ msgstr "%s %d번째 줄 ì¸ê·¼ í•´ì„ ì˜¤ë¥˜\n" msgid "parse error in %s\n" msgstr "%s í•´ì„ ì˜¤ë¥˜\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1448,7 +1701,7 @@ msgstr "" " -V, --version ë²„ì „ ì •ë³´ë¥¼ í‘œì‹œí•˜ê³ ë¹ ì ¸ë‚˜ê°‘ë‹ˆë‹¤" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "ì•Œ 수 없는 \"%s\" 기본 í•ëª©" @@ -1465,12 +1718,12 @@ msgstr "GMT ì‹œê°„ì„ ê°€ì ¸ì˜¬ 수 없습니다" msgid "unable to format timestamp" msgstr "타임스탬프를 형ì‹ì— 맞출 수 없습니다" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "sudoers í•ëª©ì´ 너무 많습니다. 최대 갯수는 %uê°œ 입니다" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "SUDOERS_BASE 환경 변수를 ì„¤ì •í•˜ì§€ 않았으며 -b ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않았습니다." @@ -1726,7 +1979,7 @@ msgstr "'verify' ìœ ì‚¬ ëª…ë ¹ 실행시 암호가 í•„ìš”í• ë•Œ: %s" #: plugins/sudoers/def_data.c:274 msgid "Preload the sudo_noexec library which replaces the exec functions" -msgstr "exec 함수를 대체하는 sudo_noexec ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 미리 불러옵니다" +msgstr "exec 함수를 ëŒ€ì‹ í•˜ëŠ” sudo_noexec ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 미리 불러옵니다" #: plugins/sudoers/def_data.c:278 msgid "If LDAP directory is up, do we ignore local sudoers file" @@ -2062,6 +2315,26 @@ msgstr "SELinux RBAC 지ì›ì„ 사용합니다" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "sudo를 ì²˜ìŒ ì‹¤í–‰í• ë•Œ ë§Œë“ íŒŒì¼ì˜ 경로: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "추가 ëª…ë ¹ì„ ê°€ë¡œì±„ê³ sudoer ì œí•œì„ ì 용합니다" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "ëª…ë ¹ìœ¼ë¡œ 실행하는 ì–´ë–¤ 하위 í”„ë¡œì„¸ìŠ¤ë“ ê¸°ë¡" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "실행 ëª…ë ¹ ë내기 ìƒíƒœ 기ë¡" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "가로챈 세션ì—ì„œì˜ ìˆœì°¨ ëª…ë ¹ 실행시 ì¸ì¦í•´ì•¼ 합니다" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "setuid ë˜ëŠ” setgid í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í• ê°€ë¡œì±„ê¸° ëª…ë ¹ 실행 허용" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2082,52 +2355,62 @@ msgstr "%s:%d:%d \"%s\"ì— ì§€ì •í•œ ê°’ì´ ì—†ìŠµë‹ˆë‹¤" msgid "%s: no value specified for \"%s\"" msgstr "%s: \"%s\"ì— ì§€ì •í•œ ê°’ì´ ì—†ìŠµë‹ˆë‹¤" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%1$s:%2$d:%3$d: \"%5$s\"ì— ë¶€ì ì ˆí•œ ì—°ì‚°ìž \"%4$c=\"" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%1$s: \"%3$s\"ì˜ ë¶€ì ì ˆí•œ ì—°ì‚°ìž \"%2$c=\"" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: \"%s\" ì˜µì…˜ì— ê°’ì´ ì—†ìŠµë‹ˆë‹¤" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: \"%s\" ì˜µì…˜ì— ê°’ì´ ì—†ìŠµë‹ˆë‹¤" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:%2$d:%3$d \"%5$s\" ì˜µì…˜ì˜ ë¶€ì ì ˆí•œ 기본 í˜•ì‹ 0x%4$x" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s: \"%3$s\" ì˜µì…˜ì˜ ë¶€ì ì ˆí•œ 기본 í˜•ì‹ 0x%2$x" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: \"%s\" ê°’ì€ \"%s\" ì˜µì…˜ì— ë§žì§€ 않습니다" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: \"%s\" ê°’ì€ \"%s\" ì˜µì…˜ì— ë§žì§€ 않습니다" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: \"%s\" ê°’ì€ '/'; '~'; '*' 문ìžë¡œ 시작해야합니다" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: \"%s\" ê°’ì€ '/'; '~'; '*' 문ìžë¡œ 시작해야합니다" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: \"%s\" ê°’ì€ '/' 문ìžë¡œ 시작해야합니다" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: \"%s\" ê°’ì€ '/' 문ìžë¡œ 시작해야합니다" @@ -2145,12 +2428,12 @@ msgstr "환경 êµ¬ì„±ì„ ë‹¤ì‹œ 갖출 수 없습니다" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "죄송하지만 ë‹¤ìŒ í™˜ê²½ 변수를 ì„¤ì •í•˜ë„ë¡ í—ˆê°€ë°›ì§€ 않았습니다: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "%s %d번째 줄ì—ì„œ í•´ì„ ì˜¤ë¥˜" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "%s í•´ì„ ì˜¤ë¥˜" @@ -2190,56 +2473,51 @@ msgstr "%sì—ì„œ \"group_plugin\" ì‹¬ë³¼ì„ ì°¾ì„ ìˆ˜ 없습니다" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: 호환ë˜ì§€ 않는 그룹 í”ŒëŸ¬ê·¸ì¸ ì£¼ ë²„ì „ %d입니다. %dì´(ê°€) 필요합니다." -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "\"%s\" IP 주소를 í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "\"%s\" ë„¤íŠ¸ì›Œí¬ ë§ˆìŠ¤í¬ ì£¼ì†Œë¥¼ í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "로컬 IP 주소 ë° ë„·ë§ˆìŠ¤í¬ ìŒ:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "ì•Œ 수 없는 그룹: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "시퀀스 파ì¼ì„ ì—…ë°ì´íŠ¸í• 수 없습니다" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "ìž…ì¶œë ¥ ë¡œê·¸ì— ê¸°ë¡í• 수 없습니다: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "%s/%sì„(를) 만들 수 없습니다" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: 내부 오류. ì´ë²¤íŠ¸ %d ë²ˆì˜ ìž…ì¶œë ¥ 로그 파ì¼ì„ 열지 않았습니다" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "í´ë¡ì„ ì½ì„ 수 없습니다" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: 내부 오류. 부ì ì ˆí•œ ì‹œê·¸ë„ %d번" @@ -2286,15 +2564,15 @@ msgstr "지ì›í•˜ì§€ 않는 LDAP URI 형ì‹: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "ldap ë° ldaps URI를 함께 ì‚¬ìš©í• ìˆ˜ 없습니다" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "sudoOption ë³µì œ: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "sudoOptionì„ ë³€í™˜í• ìˆ˜ 없습니다: %s%s%s" @@ -2307,107 +2585,111 @@ msgstr "ê°ì‹œ ì‹œìŠ¤í…œì„ ì—´ 수 없습니다" msgid "unable to send audit message" msgstr "ê°ì‹œ 메시지를 보낼 수 없습니다" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "ì´ë²¤íŠ¸ 루프 오류" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "SSL_CTX ê°ì²´ 만들기 실패: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "%s ì¸ì¦ì„œ ì¸ì¦ ë²ˆë“¤ì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "%s ì¸ì¦ì„œë¥¼ 불러올 수 없습니다" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "%s ê°œì¸ í‚¤ë¥¼ 불러올 수 없습니다" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "SSL ê°ì²´ë¥¼ í• ë‹¹í• ìˆ˜ 없습니다: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "%s:%së¡œì˜ TLS ì—°ê²° 실패: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS ì´ˆê¸°í™”ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS 핸드셰ì´í‚¹ì— 실패했습니다" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: 내부 오류. 부ì ì ˆí•œ 종료 ìƒíƒœ %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "ServerMessage를 ì–¸íŒ©í• ìˆ˜ 없습니다" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "로그 ì„œë²„ì˜ ì—°ê²°ì´ ëŠì–´ì¡ŒìŠµë‹ˆë‹¤" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "ê¸°ë¡ ë²„í¼ ë¹ ì§" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "로그 ì„œë²„ì— ì—°ê²°í• ìˆ˜ 없습니다" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "사용ìžê°€ sudoersì— ì—†ìŠµë‹ˆë‹¤" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "사용ìžê°€ 호스트ì—ì„œ ì¸ì¦í•˜ì§€ 않았습니다" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "ëª…ë ¹ì„ í—ˆìš©í•˜ì§€ 않았습니다" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%sì€(는) sudoers ì„¤ì • 파ì¼ì— 없습니다. ì´ ì‹œë„를 ë³´ê³ í•©ë‹ˆë‹¤.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%sì€(는) %sì—ì„œ sudo를 실행하ë„ë¡ í—ˆê°€ë°›ì§€ 않았습니다. ì´ ì‹œë„를 ë³´ê³ í•©ë‹ˆë‹¤.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "죄송하지만, %s 사용ìžëŠ” %sì—ì„œ sudo를 실행하면 안ë©ë‹ˆë‹¤.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "죄송하지만 %1$s 사용ìžëŠ” '%2$s%3$s%4$s'ì„(를) %8$sì˜ %5$s%6$s%7$s(으)ë¡œ 실행하ë„ë¡ í—ˆê°€ë°›ì§€ 않았습니다.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: ëª…ë ¹ì´ ì—†ìŠµë‹ˆë‹¤" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2416,26 +2698,21 @@ msgstr "" "'.'ì— ë¬´ì‹œ ì¤‘ì¸ \"%1$s\" 요소가 있습니다.\n" "\"%3$s\" ëª…ë ¹ì„ ì‹¤í–‰í•˜ë ¤ë©´, \"sudo ./%2$s\" ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹ì‹œì˜¤." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "ìž˜ëª»ëœ ì•”í˜¸ ìž…ë ¥ ì‹œë„ %u번" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "ì¸ì¦ 실패" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "암호가 필요합니다" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "로그 파ì¼ì„ ì—´ 수 없습니다: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "로그 파ì¼ì— 기ë¡í• 수 없습니다: %s" @@ -2445,7 +2722,7 @@ msgstr "로그 파ì¼ì— 기ë¡í• 수 없습니다: %s" msgid "digest for %s (%s) is not in %s form" msgstr "%s 다ì´ì œìŠ¤íŠ¸(%s)는 %s 형ì‹ì´ 아닙니다" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2454,7 +2731,7 @@ msgstr "" "\n" "LDAP ì—í• : %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2462,38 +2739,38 @@ msgstr "" "\n" "Sudoers í•ëª©:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " 실행 사용ìž: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " 실행 그룹: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " 옵션: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " ëª…ë ¹:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "%2$sì—ì„œ %1$sì— ì¼ì¹˜í•˜ëŠ” 기본 í•ëª©:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%sì˜ ì‹¤í–‰ 권한 ë° ëª…ë ¹ë³„ 기본 ê°’:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "%s 사용ìžëŠ” %sì—ì„œ ë‹¤ìŒ ëª…ë ¹ì„ ì‹¤í–‰í•´ì•¼ 합니다:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "%s 사용ìžëŠ” %sì—ì„œ sudo를 실행하ë„ë¡ í—ˆê°€ë°›ì§€ 않았습니다.\n" @@ -2508,64 +2785,64 @@ msgstr "미완결 sudoRole 무시: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "부ì ì ˆí•œ LDIF ì†ì„±: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "sudo í”„ë¡ íŠ¸ì—”ë“œì˜ %.*s ì„¤ì •ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "ë„¤íŠ¸ì›Œí¬ ì£¼ì†Œ 목ë¡ì„ í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "sudo í”„ë¡ íŠ¸ì—”ë“œì—ì„œ ì‚¬ìš©ìž ì´ë¦„ì„ ì„¤ì •í•˜ì§€ 않았습니다" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "sudo í”„ë¡ íŠ¸ì—”ë“œì—ì„œ ì‚¬ìš©ìž ID를 ì„¤ì •í•˜ì§€ 않았습니다" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "sudo í”„ë¡ íŠ¸ì—”ë“œì—ì„œ 그룹 ID를 ì§€ì •í•˜ì§€ 않았습니다" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "sudo í”„ë¡ íŠ¸ì—”ë“œì—ì„œ 호스트 ì´ë¦„ì„ ì„¤ì •í•˜ì§€ 않았습니다" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "부ì ì ˆí•œ ìž‘ì—… ë””ë ‰í„°ë¦¬: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "부ì ì ˆí•œ 루트 변경 ë””ë ‰í„°ë¦¬: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "%sì„(를) ì‹¤í–‰í• ìˆ˜ 없습니다" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: sudo í”„ë¡ íŠ¸ì—”ë“œì˜ ìƒíƒœ 플래그가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers ì •ì±… í”ŒëŸ¬ê·¸ì¸ ë²„ì „ %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers íŒŒì¼ ë¬¸ë²• ë²„ì „ %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2574,27 +2851,27 @@ msgstr "" "\n" "Sudoers 경로: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 경로: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 경로: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 경로: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "%d 형ì‹ì˜ 후í¬ë¥¼ 등ë¡í• 수 없습니다(ë²„ì „ %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "%d 형ì‹ì˜ í›„í¬ ë“±ë¡ì„ í•´ì œí• ìˆ˜ 없습니다(ë²„ì „ %d.%d)" @@ -2663,48 +2940,48 @@ msgstr "%s ê·¸ë£¹ì„ í•´ì„í• ìˆ˜ 없습니다" msgid "unable to parse gids for %s" msgstr "%s 그룹 ID를 í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "perm ìŠ¤íƒ ì˜¤ë²„í”Œë¡œìš°" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "parm ìŠ¤íƒ ì–¸ë”플로우" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "루트 gidë¡œ 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "실행 gidë¡œ 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "실행 그룹 벡터를 ì„¤ì •í• ìˆ˜ 없습니다" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "실행 uidë¡œ 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "sudoers gidë¡œ 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "ë™ìž‘ ì¤‘ì¸ í”„ë¡œì„¸ìŠ¤ê°€ 너무 많습니다" @@ -2733,252 +3010,254 @@ msgstr "SSS 소스를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다. ë¨¸ì‹ ì— SSSD를 설치했 msgid "unable to find symbol \"%s\" in %s" msgstr "%2$sì—ì„œ \"%1$s\" ì‹¬ë³¼ì„ ì°¾ì„ ìˆ˜ 없습니다" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "기본 í•ëª©ì— ë¬¸ì œ ë°œìƒ" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "올바른 sudoers ì„¤ì • ì›ë³¸ì´ 없습니다. 나갑니다." -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "%sì„(를) 루트 ë””ë ‰í„°ë¦¬ë¡œ 변환하ë„ë¡ í—ˆìš©í•˜ì§€ 않습니다" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "-R 옵션과 %s ì˜µì…˜ì˜ ë³‘í–‰ ì‚¬ìš©ì„ í—ˆê°€ë°›ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" -msgstr "%s ë””ë ‰í„°ë¦¬ë¡œì˜ ë³€ê²½ì„ í—ˆìš©í•˜ì§€ 않습니다" +msgstr "%s ë””ë ‰í„°ë¦¬ë¡œì˜ ì´ë™ì„ 허용하지 않습니다" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "-D 옵션과 %s ì˜µì…˜ì˜ ë³‘í–‰ ì‚¬ìš©ì„ í—ˆê°€ë°›ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "ì§€ì •í•œ ëª…ë ¹ì´ ì—†ìŒ" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoersì—ì„œ rootê°€ sudo를 실행하지 못하게 ì§€ì •í–ˆìŠµë‹ˆë‹¤" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "사용ìžê°€ closefrom ì œí•œ ê°’ì„ ë”°ë¡œ ì 용하ë„ë¡ í—ˆìš©í•˜ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "-C 옵션 ì‚¬ìš©ì„ í—ˆê°€ë°›ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "타임스탬프 ì†Œìœ ìž(%s): ì‚¬ìš©ìž ì—†ìŒ" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "tty ì—†ìŒ" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "죄송하지만 sudo를 ì‹¤í–‰í•˜ë ¤ë©´ tty를 확보해야합니다" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "%s 사용ìžì—게 부ì ì ˆí•œ ì…¸ ì œê³µ: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "현재 ë””ë ‰í„°ë¦¬ì˜ ëª…ë ¹" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "사용ìžê°€ ëª…ë ¹ 처리 ì œí•œ ì‹œê°„ì„ ì„¤ì •í•˜ë„ë¡ í—ˆìš©í•˜ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "죄송하지만, ëª…ë ¹ 처리 ì œí•œ ì‹œê°„ì„ ì„¤ì •í• ìˆ˜ 없습니다" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "사용ìžê°€ 환경 ì„¤ì • ê°’ì„ ìœ ì§€í•˜ë„ë¡ í—ˆìš©í•˜ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "죄송하지만 ì´ í™˜ê²½ ìƒíƒœë¥¼ ìœ ì§€í•˜ë„ë¡ í—ˆê°€ë°›ì§€ 않았습니다" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "ëª…ë ¹ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit는 sudoë¡œ ì‹¤í–‰í• í•„ìš”ê°€ 없습니다" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "%sì„(를) ì½ì„ 수 없습니다" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "%sì˜ ìƒíƒœë¥¼ ê°€ì ¸ì˜¬ 수 없습니다" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%sì€(는) ì¼ë°˜ 파ì¼ì´ 아닙니다" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%sì€(는) %u uidê°€ ì†Œìœ í–ˆì§€ë§Œ, %u uidê°€ ì†Œìœ í•´ì•¼í•©ë‹ˆë‹¤" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%sì— ëª¨ë‘ê°€ 기ë¡í• 수 있습니다" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%sì€(는) %u gidê°€ ì†Œìœ í–ˆì§€ë§Œ, %u gidê°€ ì†Œìœ í•´ì•¼í•©ë‹ˆë‹¤" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "루트만 \"-c %s\" ì˜µì…˜ì„ ì‚¬ìš©í• ìˆ˜ 있습니다" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "ì•Œ 수 없는 ë¡œê·¸ì¸ í´ëž˜ìŠ¤: %s" +msgid "unknown login class %s" +msgstr "ì•Œ 수 없는 ë¡œê·¸ì¸ í´ëž˜ìŠ¤ %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "%s 호스트를 í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "부ì ì ˆí•œ í•„í„° 옵션: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "부ì ì ˆí•œ 최대 대기 시간 ê°’: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "부ì ì ˆí•œ ì†ë„ ì¸ìˆ˜: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "부ì ì ˆí•œ 시간 오프셋 %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/timing: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "sudo 세션 재현 중: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "RAW 모드로 tty를 ì„¤ì •í• ìˆ˜ 없습니다" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "ê²½ê³ : í„°ë¯¸ë„ í™”ë©´ì´ ë¡œê·¸ë¥¼ 올바르게 ë‚˜íƒ€ë‚´ê¸°ì— ë„ˆë¬´ 작습니다.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "로그 화면 í¬ê¸°ëŠ” %d x %d ì´ì§€ë§Œ, í„°ë¯¸ë„ í™”ë©´ í¬ê¸°ëŠ” %d x %d 입니다." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "ìž¬í˜„ì— ë났습니다. 터미ë„ì„ ë³µì›í•˜ë ¤ë©´ 아무 키나 누르ì‹ì‹œì˜¤." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "모호한 ì‹ \"%s\"" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "수ì‹ì— ì¼ì¹˜í•˜ì§€ 않는 ')'" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "ì•Œ 수 없는 검색어 \"%s\"" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%sì— ì¸ìžê°€ 필요합니다" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "부ì ì ˆí•œ ì •ê·œ 표현ì‹: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "\"%s\" ë‚ ì§œë¥¼ í•´ì„í• ìˆ˜ 없습니다" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "수ì‹ì— ì¼ì¹˜í•˜ì§€ 않는 '('" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "ìž˜ëª»ëœ í›„ìœ„ ì—°ì‚°ìž \"or\"" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "ìž˜ëª»ëœ í›„ìœ„ ë¬¸ìž \"!\"" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "ì•Œ 수 없는 검색 í˜•ì‹ %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "사용법: %s [-hnRS] [-d <ë””ë ‰í„°ë¦¬>] [-m <숫ìž>] [-s <숫ìž>] <ID>\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "사용법: %s [-h] [-d <ë””ë ‰í„°ë¦¬>] -l [<검색ì‹>]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2987,7 +3266,7 @@ msgstr "" "%s - sudo 세션 로그를 ë³´ì—¬ì¤ë‹ˆë‹¤\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3199,21 +3478,16 @@ msgstr "%s: í•´ì„ ì„±ê³µ\n" msgid "%s busy, try again later" msgstr "%sì„(를) 사용중입니다. ë‚˜ì¤‘ì— ë‹¤ì‹œ ì‹œë„하ì‹ì‹œì˜¤" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "%sì„(를) ìž ê¸€ 수 없습니다" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "ê·¸ëž˜ë„ íŽ¸ì§‘í•˜ì‹œê² ìŠµë‹ˆê¹Œ? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "ê²½ê³ : %s:%d:%d 사용하지 않는 %s \"%s\"ì´(ê°€) 있습니다" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3222,7 +3496,7 @@ msgstr "" "%s - sudoers 파ì¼ì„ ì•ˆì „í•˜ê²Œ 편집합니다\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3246,11 +3520,11 @@ msgstr "" msgid "empty string" msgstr "빈 문ìžì—´" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "빈 그룹" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "빈 ë„¤íŠ¸ì›Œí¬ ê·¸ë£¹" @@ -3258,18 +3532,21 @@ msgstr "빈 ë„¤íŠ¸ì›Œí¬ ê·¸ë£¹" msgid "invalid line continuation" msgstr "부ì ì ˆí•œ ì—°ì† ë¬¸ìž" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "부ì ì ˆí•œ IPv6 주소" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "예기치 ì•Šì€ ê°œí–‰ ë¬¸ìž ë°œê²¬" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "í¬í•¨ ë ˆë²¨ì´ ë„ˆë¬´ 많습니다" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d ì•Œ 수 없는 키: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "TLS 서버 처리 ì •ë³´ë¥¼ ê°€ì ¸ì˜¬ 수 없습니다: %s" @@ -3379,6 +3656,3 @@ msgstr "í¬í•¨ ë ˆë²¨ì´ ë„ˆë¬´ 많습니다" #~ msgid "Warning: cycle in %s `%s'" #~ msgstr "ê²½ê³ : %sì˜ ì‚¬ì´í´ `%s'" - -#~ msgid "Warning: %s `%s' referenced but not defined" -#~ msgstr "ê²½ê³ : %s `%s'ì„(를) 참조했지만 ì •ì˜í•˜ì§€ 않았습니다" diff --git a/plugins/sudoers/po/pl.mo b/plugins/sudoers/po/pl.mo Binary files differindex eb3b2745e..ce799d85f 100644 --- a/plugins/sudoers/po/pl.mo +++ b/plugins/sudoers/po/pl.mo diff --git a/plugins/sudoers/po/pl.po b/plugins/sudoers/po/pl.po index e3b967b4a..3c13266be 100644 --- a/plugins/sudoers/po/pl.po +++ b/plugins/sudoers/po/pl.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-05 21:30+0200\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-20 23:15+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language: pl\n" @@ -17,7 +17,7 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "bÅ‚Ä…d skÅ‚adni" @@ -41,29 +41,46 @@ msgstr "*** informacje dotyczÄ…ce BEZPIECZEŃSTWA dla %h ***" msgid "Sorry, try again." msgstr "Niestety, proszÄ™ spróbować ponownie." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -75,16 +92,16 @@ msgstr "Niestety, proszÄ™ spróbować ponownie." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -97,21 +114,21 @@ msgstr "Niestety, proszÄ™ spróbować ponownie." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -122,7 +139,7 @@ msgstr "Niestety, proszÄ™ spróbować ponownie." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -133,13 +150,13 @@ msgstr "Niestety, proszÄ™ spróbować ponownie." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -150,214 +167,237 @@ msgstr "Niestety, proszÄ™ spróbować ponownie." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "skrót wymaga nazwy pliku" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "wartoÅ›ci \"CWD\" muszÄ… zaczynać siÄ™ od '/', '~' lub '*'" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "wartoÅ›ci \"CHROOT\" muszÄ… zaczynać siÄ™ od '/', '~' lub '*'" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "bÅ‚Ä…d skÅ‚adni, sÅ‚owo zastrzeżone %s użyte jako nazwa aliasu" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "bÅ‚Ä™dna wartość notbefore" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "bÅ‚Ä™dna wartość notafter" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "wartość limitu czasu zbyt duża" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "bÅ‚Ä™dna wartość limitu czasu" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias \"%s\" jest już zdefiniowany" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "bÅ‚Ä…d wewnÄ™trzny, przepeÅ‚nienie %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "nie udaÅ‚o siÄ™ wykonać dup na stdin: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "nie udaÅ‚o siÄ™ wywoÅ‚ać %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "nie udaÅ‚o siÄ™ wykonać fork" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "nie udaÅ‚o siÄ™ wykonać fork: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "nie udaÅ‚o siÄ™ otworzyć potoku: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (kontynuacja polecenia) %s" @@ -471,351 +511,585 @@ msgstr "%s: brak pola z grupÄ… runas" msgid "%s exists but is not a directory (0%o)" msgstr "%s istnieje, ale nie jest katalogiem (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "nie udaÅ‚o siÄ™ wykonać mkdir %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nie udaÅ‚o siÄ™ zmienić uprawnieÅ„ %s na 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "bÅ‚Ä…d podczas czytania pliku czasu: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "bÅ‚Ä™dna linia pliku czasu: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "nie udaÅ‚o siÄ™ wygenerować UUID-a" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: bÅ‚Ä…d protokoÅ‚u: niewÅ‚aÅ›ciwy typ dla %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: bÅ‚Ä…d protokoÅ‚u: brak %s w AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: nie udaÅ‚o siÄ™ sformatować id sesji" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s nie jest ustawiony" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "nie udaÅ‚o siÄ™ rozwinąć Å›cieżki iologu %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "nie udaÅ‚o siÄ™ utworzyć Å›cieżki iologu %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "bÅ‚Ä™dny iofd %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "bÅ‚Ä…d zamykania iofd %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "bÅ‚Ä™dny log we/wy %s: %s użyty, ale nie zdefiniowany" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: nie udaÅ‚o siÄ™ odnaleźć punktu wznowienia [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "nie udaÅ‚o siÄ™ otworzyć %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "nie udaÅ‚o siÄ™ otworzyć %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "nie udaÅ‚o siÄ™ skopiować %s/%s do %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "nie udaÅ‚o siÄ™ zmienić nazwy %s na %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "brak pliku logu we/wy %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nie udaÅ‚o przesunąć %zu w przód" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "nie udaÅ‚o siÄ™ odnaleźć punktu wznowienia [%lld, %ld] w %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: nie udaÅ‚o siÄ™ odnaleźć punktu wznowienia [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z przekaźnikiem" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "komunikat serwera zbyt duży: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "nie udaÅ‚o siÄ™ dodać zdarzenia do kolejki" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "nieoczekiwany stan %d dla %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "bÅ‚Ä…d maszyny stanów" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "bÅ‚Ä™dny AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "bÅ‚Ä™dny RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "bÅ‚Ä™dny AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: nieoczekiwany IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "bÅ‚Ä…d protokoÅ‚u" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "nieoczekiwana wartość type_case %d w %s z %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "nie rozpoznany typ ClientMessage" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "przekroczony limit czasu przy pisaniu do klienta %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "brak bufora zapisu dla klienta %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "przekroczony limit czasu przy czytaniu od klienta %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "EOF od %s bez wÅ‚aÅ›ciwego zakoÅ„czenia poÅ‚Ä…czenia TLS" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "komunikat klienta zbyt duży %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "komunikat klienta zbyt duży" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "bÅ‚Ä™dny ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "nie udaÅ‚o siÄ™ uzyskać zdalnego adresu IP" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Nie udaÅ‚o siÄ™ doÅ‚Ä…czyć danych użytkownika do obiektu SSL: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "nie udaÅ‚o siÄ™ dodać zdarzenia do kolejki" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "nie udaÅ‚o siÄ™ ustanowić gniazda nasÅ‚uchujÄ…cego" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "nieoczekiwany sygnaÅ‚ %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "serwer logów sudo" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Opcje:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "Å›cieżka do pliku konfiguracyjnego" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "wyÅ›wietlenie pomocy i zakoÅ„czenie" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "bez wykonywania fork, dziaÅ‚anie na pierwszym planie" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "procentowe prawdopodobieÅ„stwo odrzucenia poÅ‚Ä…czenia" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "wyÅ›wietlenie informacji o wersji i zakoÅ„czenie" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Wymagany Protobuf-C w wersji 1.3 lub wyższej" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "bÅ‚Ä™dna wartość losowego gubienia: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s wersja %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "nieznany użytkownik %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "nieznana grupa %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "nie udaÅ‚o siÄ™ przeanalizować uprawnieÅ„ iologu %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "bÅ‚Ä™dna wartość %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS nie jest obsÅ‚ugiwany" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: nie jest peÅ‚nÄ… Å›cieżkÄ…" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "nieznana wartość facility sysloga %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "nieznany priorytet sysloga %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d niedopasowany '[': %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s: %d bÅ‚Ä™dna sekcja konfiguracji: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d bÅ‚Ä™dna linia konfiguracji: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d oczekiwano nazwy sekcji: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "bÅ‚Ä™dna wartość %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d nieznany klucz: %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] niedozwolony klucz: %s" -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog facility %s" -msgstr "nieznana wartość facility sysloga %s" +msgid "unable to open log file %s" +msgstr "nie udaÅ‚o siÄ™ otworzyć pliku logu %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 -#, c-format -msgid "unknown syslog priority %s" -msgstr "nieznany priorytet sysloga %s" - -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "nie udaÅ‚o siÄ™ zainicjować kontekstu serwera TLS" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "nie udaÅ‚o siÄ™ zainicjować kontekstu przekaźnika TLS" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "nie udaÅ‚o siÄ™ utworzuć pliku kroniki" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "nie udaÅ‚o siÄ™ zablokować %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "nie udaÅ‚o siÄ™ zablokować pliku kroniki" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "nie udaÅ‚o siÄ™ otworzyć pliku kroniki" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "nie udaÅ‚o siÄ™ zapisać pliku kroniki" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "nie udaÅ‚o siÄ™ zmienić nazwy pliku kroniki" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "nieoczekiwany koniec pliku podczas odczytu pliku kroniki" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "bÅ‚Ä…d podczas odczytu pliku kroniki" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "bÅ‚Ä™dny plik kroniki, nie udaÅ‚o siÄ™ zrestartować" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "nie udaÅ‚o siÄ™ przewinąć do [%lld, %ld] w pliku kroniki %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "bÅ‚Ä…d analizy AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "bÅ‚Ä…d tworzenia logu we/wy" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "bÅ‚Ä…d logowania zdarzenia akceptacji" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "bÅ‚Ä…d analizy RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "bÅ‚Ä…d logowania zdarzenia odrzucenia" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "bÅ‚Ä…d logowania zdarzenia wyjÅ›cia" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "log jest już kompletny, nie może być wznowiony" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "nie udaÅ‚o siÄ™ wznownić logu" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "bÅ‚Ä…d analizy AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "bÅ‚Ä…d logowania zdarzenia alarmu" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "nie udaÅ‚o siÄ™ sformatować bufora czasu, dÅ‚ugość %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "bÅ‚Ä…d zapisu IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "bÅ‚Ä…d zapisu ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "bÅ‚Ä…d zapisu CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "przywitanie TLS z hostem przekaźnika nie powiodÅ‚o siÄ™" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z hostem przekaźnika" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: bÅ‚Ä™dne ServerHello, brak server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "bÅ‚Ä™dne ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "nie rozpoznany typ ServerMessage" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "przekroczony limit czasu przy czytaniu z przekaźnika %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "przekroczony limit czasu przy czytaniu z przekaźnika" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "nazwa hosta przekaźnika nie pasuje do certyfikatu" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "bÅ‚Ä…d podczas odczytu z przekaźnika" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "nie udaÅ‚ siÄ™ odczyt z przekaźnika" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "serwer przekaźnika zamknÄ…Å‚ poÅ‚Ä…czenie" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" -msgstr "komunikat sewera zbyt duży" +msgstr "komunikat serwera zbyt duży" + +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "przekroczony limit czasu przy pisaniu do przekaźnika %s (%s)" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "przekroczony limit czasu przy pisaniu do przekaźnika" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "bÅ‚Ä…d zapisu do przekaźnika" @@ -864,177 +1138,163 @@ msgid "reject the command with the given reason" msgstr "odrzucenie polecenia z podanym powodem" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "zakoÅ„czenie przesyÅ‚ania po osiÄ…gniÄ™ciu tego czasu" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "test serwera audytu przez wysÅ‚anie wybranego logu we/wy N razy równolegle" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "nie udaÅ‚o siÄ™ wyszukać %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "nie udaÅ‚o siÄ™ uzyskać adresu IP serwera" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "nie udaÅ‚o siÄ™ odczytać %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "komunikat klienta zbyt duży %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: bufor zapisu jest już w użyciu" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "nieoczekiwane zdarzenie we/wy %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: nieoczekiwany stan %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "odebrano od serwera komunikat bÅ‚Ä™du: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "odebrano od serwera komunikat zerwania: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "nie udaÅ‚o siÄ™ rozpakować ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: nieoczekiwana wartość type_case %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "przekroczony limit czasu przy czytaniu z serwera" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "przedwczesny EOF" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" -msgstr "komunikat sewera zbyt duży: %u" +msgstr "komunikat serwera zbyt duży: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "przekroczony limit czasu przy pisaniu do serwera" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "muszÄ… być podane jednoczeÅ›nie punkt wznowienia i ID iolog" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "nie można ustawić punktu restartu, jeÅ›li żadne we/wy nie jest wysyÅ‚ane" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "zakoÅ„czono przedwczeÅ›nie ze stanem %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "miniony czas wysÅ‚any do serwera [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "odebrano od serwera punkt zatwierdzenia [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "przekroczony limit czasu powitania TLS" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "nie udaÅ‚o siÄ™ ustawić zdarzenia" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "PoÅ‚Ä…czenie TLS nie powiodÅ‚o siÄ™: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "nie udaÅ‚o siÄ™ przydzielić obiektu SSL: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Nie udaÅ‚o siÄ™ doÅ‚Ä…czyć gniazda do obiektu SSL: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "nie udaÅ‚o siÄ™ zainicjować kontekstu TLS" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "nie udaÅ‚o siÄ™ ustawić szyfrowania TLS 1.2 na %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "nie udaÅ‚o siÄ™ ustawić szyfrowania TLS 1.3 na %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "nie udaÅ‚o siÄ™ utworzyć kontekstu TLS: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "nie udaÅ‚o siÄ™ ustawić minimalnej wersji protokoÅ‚u na TLS 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "nie udaÅ‚o siÄ™ ustawić parametrów Diffie-Hellmana: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "nie udaÅ‚o siÄ™ odczytać parametrów Diffie-Hellmana: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "nie udaÅ‚o siÄ™ otworzyć %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nie udaÅ‚o siÄ™ pobrać aktualnego czasu" @@ -1274,20 +1534,12 @@ msgstr "" " 3) z dużą wÅ‚adzÄ… wiąże siÄ™ duża odpowiedzialność.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "nieznany uid: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "nieznany użytkownik: %s" +msgid "unknown uid %u" +msgstr "nieznany uid %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1344,9 +1596,10 @@ msgstr "nieobsÅ‚ugiwany format wyjÅ›cia %s" msgid "%s: input and output files must be different" msgstr "%s: pliki wejÅ›ciowy i wyjÅ›ciowy muszÄ… być różne" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "nie udaÅ‚o siÄ™ zainicjować wartoÅ›ci domyÅ›lnych sudoers" @@ -1357,8 +1610,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: nieznane sÅ‚owo kluczowe: %s" +msgid "%s: unknown key word %s" +msgstr "%s: nieznane sÅ‚owo kluczowe %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1390,7 +1643,7 @@ msgstr "bÅ‚Ä…d skÅ‚adni w %s w okolicy linii %d\n" msgid "parse error in %s\n" msgstr "bÅ‚Ä…d skÅ‚adni w %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1447,7 +1700,7 @@ msgstr "" " -V, --version wyÅ›wietlenie informacji o wersji i zakoÅ„czenie" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "nieznany wpis domyÅ›lny \"%s\"" @@ -1464,12 +1717,12 @@ msgstr "nie udaÅ‚o siÄ™ pobrać czasu GMT" msgid "unable to format timestamp" msgstr "nie udaÅ‚o siÄ™ sformatować znacznika czasu" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "zbyt dużo wpisów sudoers, maksimum to %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "zmienna Å›rodowiskowa SUDOERS_BASE nie jest ustawiona i nie podano opcji -b." @@ -2061,6 +2314,26 @@ msgstr "WÅ‚Ä…czenie obsÅ‚ugi RBAC SELinux" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Åšcieżka do pliku tworzonego przy pierwszym uruchomieniu sudo: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Przechwycenie dalszych poleceÅ„ i zastosowanie do nich restrykcji sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Logowanie wszystkich procesów potomnych uruchomionych przez polecenie" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Logowanie stanu wyjÅ›cia poleceÅ„" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Dalsze polecenia w przechwyconej sesji muszÄ… być uwierzytelniane" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Zezwolenie na uruchamianie programów setuid lub setgid z przechwyconego polecenia" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2081,52 +2354,62 @@ msgstr "%s:%d:%d: nie podano wartoÅ›ci dla \"%s\"" msgid "%s: no value specified for \"%s\"" msgstr "%s: nie podano wartoÅ›ci dla \"%s\"" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: bÅ‚Ä™dny operator \"%c=\" dla \"%s\"" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: bÅ‚Ä™dny operator \"%c=\" dla \"%s\"" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: opcja \"%s\" nie przyjmuje wartoÅ›ci" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: opcja \"%s\" nie przyjmuje wartoÅ›ci" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: bÅ‚Ä™dny typ Defaults 0x%x dla opcji \"%s\"" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: bÅ‚Ä™dny typ Defaults 0x%x dla opcji \"%s\"" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: bÅ‚Ä™dna wartość \"%s\" dla opcji \"%s\"" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: bÅ‚Ä™dna wartość \"%s\" dla opcji \"%s\"" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: wartoÅ›ci \"%s\" muszÄ… zaczynać siÄ™ od '/', '~' lub '*'" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: wartoÅ›ci \"%s\" muszÄ… zaczynać siÄ™ od '/', '~' lub '*'" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: wartoÅ›ci \"%s\" muszÄ… zaczynać siÄ™ od '/'" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: wartoÅ›ci \"%s\" muszÄ… zaczynać siÄ™ od '/'" @@ -2144,12 +2427,12 @@ msgstr "nie udaÅ‚o siÄ™ przebudować Å›rodowiska" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "niestety nie jest dozwolone ustawianie nastÄ™pujÄ…cych zmiennych Å›rodowiskowych: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "bÅ‚Ä…d skÅ‚adni w %s w okolicy linii %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "bÅ‚Ä…d skÅ‚adni w %s" @@ -2189,56 +2472,51 @@ msgstr "nie udaÅ‚o siÄ™ odnaleźć symbolu \"group_plugin\" w %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: niezgodna główna wersja wtyczki grup %d, oczekiwano %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "nie udaÅ‚o siÄ™ przeanalizować adresu IP \"%s\"" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "nie udaÅ‚o siÄ™ przeanalizować maski sieciowej \"%s\"" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Pary lokalnych adresów IP i masek:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "nieznana grupa: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "nie udaÅ‚o siÄ™ uaktualnić pliku sekwencji" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "nie udaÅ‚o siÄ™ zapisać do pliku logu we/wy: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "nie udaÅ‚o siÄ™ utworzyć %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: bÅ‚Ä…d wewnÄ™trzny, plik logu we/wy dla zdarzenia %d nie jest otwarty" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "nie udaÅ‚o siÄ™ odczytać zegara" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: bÅ‚Ä…d wewnÄ™trzny, bÅ‚Ä™dny sygnaÅ‚ %d" @@ -2285,15 +2563,15 @@ msgstr "nieobsÅ‚ugiwany rodzaj URI LDAP: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "nie można mieszać URI ldap i ldaps" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "powtórka sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "nie można skonwertować sudoOption: %s%s%s" @@ -2306,107 +2584,111 @@ msgstr "nie udaÅ‚o siÄ™ otworzyć systemu audytowego" msgid "unable to send audit message" msgstr "nie udaÅ‚o siÄ™ wysÅ‚ać komunikatu audytowego" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "bÅ‚Ä…d w pÄ™tli zdarzeÅ„" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Utworzenie nowego obiektu SSL_CTX nie powiodÅ‚o siÄ™: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "nie udaÅ‚o siÄ™ zaÅ‚adować paczki certyfikatów CA %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "nie udaÅ‚o siÄ™ zaÅ‚adować certyfikatu %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "nie udaÅ‚o siÄ™ zaÅ‚adować klucza prywatnego %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Nie udaÅ‚o siÄ™ przydzielić obiektu SSL: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "PoÅ‚Ä…czenie TLS do %s:%s nie powiodÅ‚o siÄ™: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "Inicjowanie TLS nie powiodÅ‚o siÄ™" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "Powitanie TLS nie powiodÅ‚o siÄ™" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: bÅ‚Ä…d wewnÄ™trzny, bÅ‚Ä™dny kod wyjÅ›cia %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "nie udaÅ‚o siÄ™ rozpakować ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "utracono poÅ‚Ä…czenie z serwerem logów" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "brak bufora zapisu" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z serwerem logów" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "użytkownik NIE wystÄ™puje w sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "użytkownik NIE jest autoryzowany na hoÅ›cie" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "polecenie niedozwolone" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s nie wystÄ™puje w pliku sudoers. Ten incydent zostanie zgÅ‚oszony.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s nie ma uprawnieÅ„ do uruchamiania sudo na %s. Ten incydent zostanie zgÅ‚oszony.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Niestety użytkownik %s nie może uruchamiać sudo na %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Niestety użytkownik %s nie ma uprawnieÅ„ do uruchamiania '%s%s%s' jako %s%s%s na %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2415,7 +2697,7 @@ msgstr "" "zignorowano plik \"%s\" znaleziony w '.'\n" "ProszÄ™ użyć \"sudo ./%s\", jeÅ›li to \"%s\" ma być uruchomiony." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2423,20 +2705,15 @@ msgstr[0] "%u bÅ‚Ä™dna próba wprowadzenia hasÅ‚a" msgstr[1] "%u bÅ‚Ä™dne próby wprowadzenia hasÅ‚a" msgstr[2] "%u bÅ‚Ä™dnych prób wprowadzenia hasÅ‚a" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "bÅ‚Ä…d uwierzytelniania" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "wymagane jest hasÅ‚o" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "nie udaÅ‚o siÄ™ otworzyć pliku logu: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "nie udaÅ‚o siÄ™ zapisać pliku logu: %s" @@ -2446,7 +2723,7 @@ msgstr "nie udaÅ‚o siÄ™ zapisać pliku logu: %s" msgid "digest for %s (%s) is not in %s form" msgstr "skrót dla %s (%s) nie jest w postaci %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2455,7 +2732,7 @@ msgstr "" "\n" "Rola LDAP: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2463,38 +2740,38 @@ msgstr "" "\n" "Wpis sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " Jako użytkownicy: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " Jako grupy: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Opcje: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Polecenia:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "PasujÄ…ce wpisy Defaults dla %s na %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "WartoÅ›ci specyficzne dla Runas i Command dla %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Użytkownik %s może uruchamiać na %s nastÄ™pujÄ…ce polecenia:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Użytkownik %s nie ma uprawnieÅ„ do uruchamiania sudo na %s.\n" @@ -2509,64 +2786,64 @@ msgstr "zignorowano niekompletne sudoRole: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "bÅ‚Ä™dny atrybut LDIF: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "bÅ‚Ä™dna wartość %.*s ustawiona przez frontend sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "nie udaÅ‚o siÄ™ przeanalizować listy adresów sieciowych" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "nazwa użytkownika nie ustawiona przez frontend sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ID użytkownika nie ustawiony przez frontend sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ID grupy nie ustawiony przez frontend sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "nazwa hosta nie ustawiona przez frontend sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "bÅ‚Ä™dny katalog roboczy: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "bÅ‚Ä™dny katalog chroot: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "nie udaÅ‚o siÄ™ wywoÅ‚ać %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: bÅ‚Ä™dne flagi trybu z frontendu sudo: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Wersja wtyczki polityki sudoers %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Wersja gramatyki pliku sudoers %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2575,27 +2852,27 @@ msgstr "" "\n" "Åšcieżka do sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "Å›cieżka do nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "Å›cieżka do ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "Å›cieżka do ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nie udaÅ‚o siÄ™ zarejestrować uchwytu typu %d (wersja %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nie udaÅ‚o siÄ™ wyrejestrować uchwytu typu %d (wersja %d.%d)" @@ -2664,48 +2941,48 @@ msgstr "nie udaÅ‚o siÄ™ przeanalizować grup dla %s" msgid "unable to parse gids for %s" msgstr "nie udaÅ‚o siÄ™ przeanalizować gidów dla %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "przepeÅ‚nienie stosu uprawnieÅ„" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "niedopeÅ‚nienie stosu uprawnieÅ„" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "nie udaÅ‚o siÄ™ zmienić na gid roota" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "nie udaÅ‚o siÄ™ zmienić na docelowy gid" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "nie udaÅ‚o siÄ™ ustawić wektora grup docelowych" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "nie udaÅ‚o siÄ™ zmienić na docelowy uid" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "nie udaÅ‚o siÄ™ zmienić na gid sudoers" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "zbyt dużo procesów" @@ -2734,252 +3011,254 @@ msgstr "nie udaÅ‚o siÄ™ zainicjować źródÅ‚a SSS. Czy SSSD jest zainstalowany msgid "unable to find symbol \"%s\" in %s" msgstr "nie udaÅ‚o siÄ™ odnaleźć symbolu \"%s\" w %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problem z wpisami domyÅ›lnymi" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "nie znaleziono poprawnych źródeÅ‚ sudoers, zakoÅ„czenie" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "użytkownik nie ma uprawnieÅ„ do zmiany katalogu głównego na %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "brak uprawnieÅ„ do używania opcji -R z %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "użytkownik nie ma uprawnieÅ„ do zmiany katalogu na %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "brak uprawnieÅ„ do używania opcji -D z %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "nie podano polecenia" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "wg sudoers root nie ma prawa używać sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "użytkownik nie ma pozwolenia na zmianÄ™ limitu closefrom" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "brak uprawnieÅ„ do używania opcji -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "wÅ‚aÅ›ciciel znacznika czasu (%s): nie ma takiego użytkownika" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "brak tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "niestety do uruchomienia sudo konieczny jest tty" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "bÅ‚Ä™dna powÅ‚oka użytkownika %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "polecenie w bieżącym katalogu" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "użytkownik nie ma uprawnieÅ„ do ustawienia limitu czasu polecenia" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "niestety brak uprawnieÅ„ do ustawienia limitu czasu polecenia" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "użytkownik nie ma uprawnieÅ„ do zachowania Å›rodowiska" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "niestety brak uprawnieÅ„ do zachowania Å›rodowiska" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "polecenie zbyt dÅ‚ugie" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit nie musi być uruchamiany przez sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "nie udaÅ‚o siÄ™ odczytać %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "nie udaÅ‚o siÄ™ wykonać stat na %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s nie jest zwykÅ‚ym plikiem" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "wÅ‚aÅ›cicielem %s jest uid %u, powinien być %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s jest zapisywalny dla Å›wiata" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "wÅ‚aÅ›cicielem %s jest gid %u, powinien być %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "tylko root może używać \"-c %s\"" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "nieznana klasa logowania: %s" +msgid "unknown login class %s" +msgstr "nieznana klasa logowania %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "nie udaÅ‚o siÄ™ rozwiÄ…zać nazwy hosta %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "bÅ‚Ä™dna opcja filtra: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "bÅ‚Ä™dny maksymalny czas oczekiwania: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "bÅ‚Ä™dny współczynnik szybkoÅ›ci: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "bÅ‚Ä™dny offset czasu %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/czas: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Odtwarzanie sesji sudo: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "nie udaÅ‚o siÄ™ przestawić tty w tryb surowy" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Uwaga: ten terminal jest za maÅ‚y, aby wÅ‚aÅ›ciwie odtworzyć log.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Geometria logu to %d x %d, geometria terminala to %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Odtwarzanie zakoÅ„czone, proszÄ™ nacisnąć dowolny klawisz, aby odzyskać terminal." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "niejednoznaczne wyrażenie \"%s\"" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "niesparowany ')' w wyrażeniu" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "nieznany warunek wyszukiwania \"%s\"" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s wymaga argumentu" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "bÅ‚Ä™dne wyrażenie regularne: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "nie udaÅ‚o siÄ™ przeanalizować daty \"%s\"" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "niesparowany '(' w wyrażeniu" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "niedozwolone koÅ„czÄ…ce \"or\"" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "niedozwolony koÅ„czÄ…cy \"!\"" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "nieznany typ wyszukiwania %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "SkÅ‚adnia: %s [-hnRS] [-d katalog] [-m liczba] [-s wsp_szybkoÅ›ci] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "SkÅ‚adnia: %s [-h] [-d katalog] -l [wyrażenie wyszukiwania]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2988,7 +3267,7 @@ msgstr "" "%s - odtwarzanie logów sesji sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3200,21 +3479,16 @@ msgstr "%s: skÅ‚adnia poprawna\n" msgid "%s busy, try again later" msgstr "%s zajÄ™ty, proszÄ™ spróbować później" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "nie udaÅ‚o siÄ™ zablokować %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Modyfikować mimo to? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Uwaga: %s:%d:%d: nie użyty %s \"%s\"" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3223,7 +3497,7 @@ msgstr "" "%s - bezpieczna edycja pliku sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3247,11 +3521,11 @@ msgstr "" msgid "empty string" msgstr "pusty Å‚aÅ„cuch" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "pusta grupa" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "pusta grupa sieciowa" @@ -3259,14 +3533,14 @@ msgstr "pusta grupa sieciowa" msgid "invalid line continuation" msgstr "bÅ‚Ä™dna kontynuacja linii" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "bÅ‚Ä™dny adres IPv6" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "nieoczekiwany koniec linii w Å‚aÅ„cuchu" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "za dużo poziomów include" diff --git a/plugins/sudoers/po/pt.mo b/plugins/sudoers/po/pt.mo Binary files differindex e4557e0ba..de304b0b4 100644 --- a/plugins/sudoers/po/pt.mo +++ b/plugins/sudoers/po/pt.mo diff --git a/plugins/sudoers/po/pt.po b/plugins/sudoers/po/pt.po index 3256fa549..ba8496bc5 100644 --- a/plugins/sudoers/po/pt.po +++ b/plugins/sudoers/po/pt.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.7b1\n" +"Project-Id-Version: sudoers-1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-05 06:30+0100\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-22 07:21+0100\n" "Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n" "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" "Language: pt\n" @@ -18,9 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "erro de sintaxe" @@ -44,29 +44,46 @@ msgstr "*** Informação de SEGURANÇA para %h ***" msgid "Sorry, try again." msgstr "Enganou-se, tente de novo." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -78,16 +95,16 @@ msgstr "Enganou-se, tente de novo." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -100,21 +117,21 @@ msgstr "Enganou-se, tente de novo." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -125,7 +142,7 @@ msgstr "Enganou-se, tente de novo." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -136,13 +153,13 @@ msgstr "Enganou-se, tente de novo." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -153,214 +170,237 @@ msgstr "Enganou-se, tente de novo." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "impossÃvel alocar memória" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "um resumo requer um nome de caminho" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "valores para \"CWD\" têm de começar por '/', '~' ou '*'" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "valores para \"CHROOT\" têm de começar com \"/\", \"~\" ou \"*\"" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "erro de sintaxe, palavra reservada %s utilizada como nome aliás" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "valor notbefore inválido" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "valor notafter inválido" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "valor de inacção muito grande" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "valor de inacção inválido" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Aliás \"%s\" já definido" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "erro interno, transporte %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "impossÃvel duplicar stdin: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "impossÃvel executar %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "impossÃvel bifurcar" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "impossÃvel bifurcar: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "impossÃvel abrir túnel: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (comando continuado) %s" @@ -474,351 +514,585 @@ msgstr "%s: campo de grupo runas em falta" msgid "%s exists but is not a directory (0%o)" msgstr "%s existe mas não é uma pasta (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "impossÃvel criar pasta %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "impossÃvel alterar o modo de %s para 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "erro ao ler ficheiro de temporização: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "linha de ficheiro de temporização inválida : %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "impossÃvel gerar UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: erro de protocolo: tipo errado para %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: erro de protocolo: %s em falta de AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: impossÃvel formatar a id da sessão" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s não está definido" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "impossÃvel expandir caminho iolog %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "impossÃvel criar caminho iolog %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "iofd %d inválido" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "erro ao fechar iofd %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "Diario de E/S %s inválido: %s referenciado mas ausente" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: impossÃvel encontrar ponto de recomeço [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "impossÃvel abrir %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "impossÃvel abrir %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "impossÃvel copiar %s/%s para %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "impossÃvel renomear %s como %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "ficheiro de diário E/S %s/%s em falta" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: impossÃvel procurar adiante %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "impossÃvel localizar ponto de continuação [%lld, %ld] em %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: impossÃvel encontrar ponto de recomeço [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "impossÃvel ligar ao relé" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "mensagem do servidor muito grande: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "impossÃvel adicionar evento à fila" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "estado %d inesperado para %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "erro da máquina de estado" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "AcceptMessage inválida" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "RejectMessage inválida" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "AlertMessage inválida" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: IoBuffer inesperado" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "erro de protocolo" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "valor type_case %d inesperado em %s de %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "tipo de ClientMessage não reconhecido" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "expirou ao escrever no cliente %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "buffer de escrita em falta para o cliente %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "expirou ao ler do cliente %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "EOF de %s sem encerramento apropriado de TLS" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "mensagem do cliente muito grande: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "mensagem do cliente muito grande" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "ClientMessage inválida" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "impossÃvel obter endereço IP remoto" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "ImpossÃvel anexar dados do utilizador ao objecto ssl: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "impossÃvel adicionar evento à fila" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "impossÃvel definir o socket de escuta" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "sinal %d inesperado" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "servidor de diário sudo" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Opções:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "caminho do ficheiro de configuração" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "mostrar mensagem de ajuda e sair" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "não bifurcar, executar em 2º plano" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "probabilidade das ligações caÃrem" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "mostrar informação da versão e sair" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Requerida a versão Protobuf-C 1.3 ou superior" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "valor de queda aleatório inválido: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s versão %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "utilizador desconhecido %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "grupo desconhecido %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "impossÃvel analisar modo iolog %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "valor inválido para %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "TLS não suportado" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: não é um caminho completamente qualificado" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "facilidade syslog desconhecida %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "prioridade syslog desconhecida %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d \"[\" sem par: %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d secção de configuração inválida: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d linha de configuração inválida: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d esperado um nome de secção: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "valor inválido para %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d chave desconhecida: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "facilidade syslog desconhecida %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] chave ilegal: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "prioridade syslog desconhecida %s" +msgid "unable to open log file %s" +msgstr "impossÃvel abrir o diário %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "impossÃvel inicializar contexto do servidor TLS" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "impossÃvel inicializar contexto do intermédio TLS" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "impossÃvel criar o ficheiro de diário" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "impossÃvel bloquear %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "impossÃvel bloquear o diário" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "impossÃvel abrir o ficheiro de diário" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "impossÃvel escrever no diário" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "impossÃvel renomear o diário" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "EOF inesperado ao ler o diário" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "erro ao ler ficheiro de diário" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "ficheiro de diário inválido, impossÃvel reiniciar" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "impossÃvel localizar [%lld, %ld] no ficheiro de diário %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "erro ao analisar AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "erro ao criar diário de E/S" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "erro ao registar evento de aceitação" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "erro ao analisar RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "erro ao registar evento de rejeição" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "erro ao registar evento de saÃda" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "diário já concluÃdo, impossÃvel reiniciar" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "impossÃvel reiniciar o diário" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "erro ao analisar AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "erro ao registar evento de alerta" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "impossÃvel formatar buffer de temporização, tamanho %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "erro ao escrever IObuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "erro ao escrever ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "erro ao escrever CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" -msgstr "falha no TLS handshake com o servidor intermédio" +msgstr "Falha no TLS handshake com o servidor intermédio" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "impossÃvel ligar ao servidor intermédio" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: ServerHello inválido, server_id em falta" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "ServerHello inválido" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "tipo de ServerMessage não reconhecido" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "expirou ao ler do relé %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "leitura do servidor intermédio expirou" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "nome de servidor intermédio não corresponde ao certificado" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "erro ao ler do servidor intermédio" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "impossÃvel ler do servidor intermédio" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "o servidor intermédio fechou a ligação" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "mensagem do servidor muito grande" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "expirou ao escrever no relé %s (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "escrita no servidor intermédio expirou" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "erro ao escrever no servidor intermédio" @@ -844,7 +1118,7 @@ msgstr "anfitrião para onde enviar os diários" #: logsrvd/sendlog.c:136 msgid "remote ID of I/O log to be resumed" -msgstr "ID remota do diário de E/S a retomar" +msgstr "a ID remota do diário de E/S a retomar" #: logsrvd/sendlog.c:139 msgid "private key file" @@ -867,177 +1141,163 @@ msgid "reject the command with the given reason" msgstr "rejeitar o comando com o motivo indicado" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "parar transferência após atingir este tempo" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "testar servidor de auditoria enviando o diário de E/S seleccionado n vezes em paralelo" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "impossÃvel procurar %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "impossÃvel obter endereço IP do servidor" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "impossÃvel ler %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "mensagem do cliente muito grande: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: buffer de escrita já em uso" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "evento de E/S %d inesperado" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: estado %d inesperado" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "recebida mensagem de erro do servidos: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "recebida mensagem de aborto do servidos: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "impossÃvel desempacotar ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valor type_case %d inesperado" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "leitura do servidor expirou" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "EOF prematuro" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "mensagem do servidor muito grande: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "escrita no servidor expirou" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "tem de especificar o ponto de reinÃcio e a ID iolog" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "impossÃvel definir um ponto de reinÃcio sem E/S enviada" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "saÃda prematura com o estado %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "tempo decorrido de envio para o servidor [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "ponto de submissão recebido do servidor [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "TLS handshake expirou" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "impossÃvel definir o evento" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "Falha na ligação TLS: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "impossÃvel alocar objecto ssl: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "ImpossÃvel anexar socket ao objecto ssl: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "impossÃvel inicializar contexto TLS" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "impossÃvel definir TLS 1.2 ciphersuite como %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "impossÃvel definir TLS 1.3 ciphersuite como %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "impossÃvel criar contexto TLS: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "impossÃvel definir versão mÃnima do protocolo como TLS 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "impossÃvel definir parâmetros diffie-hellman: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "impossÃvel ler parâmetros diffie-hellman: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "impossÃvel abrir %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "impossÃvel obter hora do dia" @@ -1146,7 +1406,7 @@ msgstr "impossÃvel inicializar PAM: %s" #: plugins/sudoers/auth/pam.c:340 #, c-format msgid "PAM authentication error: %s" -msgstr "erro de autenticação PAM: %s" +msgstr "Erro de autenticação PAM: %s" #: plugins/sudoers/auth/pam.c:359 msgid "account validation failure, is your account locked?" @@ -1277,20 +1537,12 @@ msgstr "" " 3) lembre-se que com grande poder vem grande responsabilidade.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "uid desconhecida: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "utilizador desconhecido: %s" +msgid "unknown uid %u" +msgstr "uid desconhecida %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1347,9 +1599,10 @@ msgstr "formato de saÃda %s não suportado" msgid "%s: input and output files must be different" msgstr "%s: os ficheiros de entrada e saÃda têm de ser diferentes" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "impossÃvel inicializar valores predefinidos de sudoers" @@ -1360,8 +1613,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: palavra-chave desconhecida: %s" +msgid "%s: unknown key word %s" +msgstr "%s: palavra-chave desconhecida %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1393,7 +1646,7 @@ msgstr "erro de análise em %s, perto da linha %d\n" msgid "parse error in %s\n" msgstr "erro de análise em %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1449,7 +1702,7 @@ msgstr "" " -V, --version mostra informação da versão e sai" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "entrada de predefinições \"%s\" desconhecida" @@ -1466,12 +1719,12 @@ msgstr "impossÃvel obter hora GMT" msgid "unable to format timestamp" msgstr "impossÃvel formatar datação" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "demasiadas entradas sudoers, máximo %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "a variável de ambiente SUDOERS_BASE não está definida e a opção -b não foi especificada." @@ -2063,6 +2316,26 @@ msgstr "Activar suporte a SELinux RBAC" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Caminho para o ficheiro criado na 1ª execução de sudo: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Interceptar comandos posteriores e aplicar-lhes restrições sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Registar processos filho executados pelo comando" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Registar estado da saÃda de comandos" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Comandos subsequentes numa sessão interceptada têm de ser autenticados" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Permitir que um comando interceptado execute os programas setuid ou setgid" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2083,52 +2356,62 @@ msgstr "%s:%d:%d: sem valor especificado para \"%s\"" msgid "%s: no value specified for \"%s\"" msgstr "%s sem valor especificado para \"%s\"" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: operador \"%c=\" inválido para \"%s\"" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: operador \"%c=\" inválido para \"%s\"" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: opção \"%s\" não recebe valores" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s opção \"%s\" não recebe valores" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: tipo Defaults 0x%x inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s tipo Defaults 0x%x inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: valor \"%s\" é inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s valor \"%s\" é inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: valores para \"%s\" têm de começar com \"/\", \"~\" ou \"*\"" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: valores para \"%s\" têm de começar com \"/\", \"~\" ou \"*\"" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: valores para \"%s\" têm de começar com \"/\"" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s valores para \"%s\" têm de começar com \"/\"" @@ -2146,12 +2429,12 @@ msgstr "impossÃvel reconstruir o ambiente" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "desculpe, não tem permissão para definir as seguintes variáveis de ambiente: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "erro de análise em %s perto da linha %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "erro de análise em %s" @@ -2191,56 +2474,51 @@ msgstr "impossÃvel encontrar o sÃmbolo \"group_plugin\" em %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: versão principal de extensão de grupo %d incompatÃvel, esperada %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "impossÃvel analisar endereço IP \"%s\"" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "impossÃvel analisar netmask \"%s\"" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Pares endereço IP local e netmask:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "grupo desconhecido: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "impossÃvel actualizar o ficheiro de sequência" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "impossÃvel escrever no ficheiro de E/S: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "impossÃvel criar %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: erro interno, ficheiro de diário E/S do evento %d não aberto" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "impossÃvel ler o relógio" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: erro interno, sinal inválido %d" @@ -2287,15 +2565,15 @@ msgstr "tipo de uri LDAP não suportado: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "impossÃvel misturar URIs ldap e ldaps" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "sudoOption duplicada: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "impossÃvel converter sudoOption: %s%s%s" @@ -2308,107 +2586,111 @@ msgstr "impossÃvel abrir o sistema de auditoria" msgid "unable to send audit message" msgstr "impossÃvel enviar mensagem de auditoria" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "erro no ciclo do evento" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Falha ao criar o novo objecto SSL_CTX: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "impossÃvel carregar pacote da autoridade do certificado %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "impossÃvel carregar certificado %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "impossÃvel carregar chave privada %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "ImpossÃvel alocar objecto ssl: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "Ligação TLS a %s:%s falhou: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "Inicialização TLS sem sucesso" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS handshake sem sucesso" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: erro interno, sinal de saÃda %d inválido" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "impossÃvel desempacotar ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "ligação ao servidor de diários perdida" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "buffer de escrita em falta" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "impossÃvel ligar ao servidor de diários" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "utilizador NÃO está no sudores" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "utilizador NÃO autorizado no anfitrião" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "comando não permitido" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s não está no ficheiro sudoers. O incidente será reportado.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s não tem permissão para executar sudo em %s. O incidente será reportado.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Desculpe, %s não pode executar sudo em %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Desculpe, %s não tem permissão para executar \"%s%s%s\" como %s%s%s em %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2417,27 +2699,22 @@ msgstr "" "a ignorar \"%s\" encontrado em \".\"\n" "Use \"sudo ./%s\" se este é o \"%s\" que deseja executar." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u tentativa incorrecta" msgstr[1] "%u tentativas incorrectas" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "falha de autenticação" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "é necessária uma senha" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "impossÃvel abrir o diário: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "impossÃvel escrever o diário: %s" @@ -2447,7 +2724,7 @@ msgstr "impossÃvel escrever o diário: %s" msgid "digest for %s (%s) is not in %s form" msgstr "resumo para %s (%s) não está na forma %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2456,7 +2733,7 @@ msgstr "" "\n" "Papel LDAP: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2464,38 +2741,38 @@ msgstr "" "\n" "Entrada sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Opções: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Comandos:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Entradas Defaults correspondentes para %s em %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Predefinições Runas especÃficas de comandos para %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "O utilizador %s pode executar os seguintes comandos em %s:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "O utilizador %s não tem permissão para executar sudo em %s.\n" @@ -2510,64 +2787,64 @@ msgstr "a ignorar sudoRole incompleto: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "atributo LDIF inválido: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "%.*s inválido definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "impossÃvel analisar a lista de endereços da rede" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "nome de utilizador não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ID de utilizador não definida pelo front-end do sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ID de grupo não definida pelo front-end do sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "nome de anfitrião não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "pasta de trabalho inválida: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "pasta chroot inválida: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "impossÃvel executar %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: bandeiras de modo inválidas do front-end do sudo: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Extensão de polÃtica sudoers versão %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Gramática do ficheiro sudoers versão %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2576,27 +2853,27 @@ msgstr "" "\n" "Caminho do sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "caminho nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "caminho do ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "caminho do ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "impossÃvel registar hook do tipo %d (versão %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "impossÃvel de-registar hook do tipo %d (versão %d.%d)" @@ -2665,48 +2942,48 @@ msgstr "impossÃvel analisar grupos para %s" msgid "unable to parse gids for %s" msgstr "impossÃvel analisar gids para %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "transporte de pilha perm" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "importe de pilha perm" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "impossÃvel mudar para gid root" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "impossÃvel mudar para gid runas" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "impossÃvel definir vector de grupo runas" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "impossÃvel mudar para uid runas" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "impossÃvel mudar para gid sudoers" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "demasiados processos" @@ -2735,252 +3012,254 @@ msgstr "impossÃvel inicializar fonte SSS. Tem o SSSD instalado?" msgid "unable to find symbol \"%s\" in %s" msgstr "impossÃvel encontrar sÃmbolo \"%s\" em %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problema com entradas defaults" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "sme fontes sudoers válidas, a sair" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "utilizador sem permissão para alterar pasta chroot para %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "não tem permissão para usar a opção -R com %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "utilizador sem permissão para alterar pasta para %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "não tem permissão para usar a opção -D com %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "nenhum comando especificado" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers especifica que root não tem permissão para sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "utilizador não autorizado a sobrepor o limite closefrom" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "não tem permissão para usar a opção -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "dono da datação (%s): utilizador inexistente" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "sem tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "desculpe, tem de ter um tty para executar sudo" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "shell inválida para o utilizador %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "comando na pasta actual" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "utilizador sem permissão para definir um tempo de expiração" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "desculpe, não tem permissão para definir um tempo de inacção" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "utilizador sem permissão para definir preservar o ambiente" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "desculpe, não tem permissão para preservar o ambiente" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "comando muito longo" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit não precisa de ser executado via sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "impossÃvel ler %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "impossÃvel obter informações de %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s não é um ficheiro normal" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s é propriedade de uid %u, deveria ser %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s é escrito universalmente" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s é propriedade de gid %u, deveria ser %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "só root pode usar \"-c %s\"" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "classe de sessão desconhecida: %s" +msgid "unknown login class %s" +msgstr "classe de sessão desconhecida %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "impossÃvel resolver o anfitrião %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "opção de filtro inválida: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "espera máxima inválida: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "factor de velocidade inválido: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "desvio de tempo %s inválido" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/temporização: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "A reproduzir sessão sudo: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "impossÃvel definir tty para modo raw" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Aviso: o seu terminal é muito pequeno para reproduzir correctamente o diário.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "A geometria do diário é %d x %d, o seu terminal é %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Reprodução terminada, prima qualquer tecla para restaurar o terminal." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "expressão ambÃgua \"%s\"" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "\")\" sem par em expressão" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "termo de procura \"%s\" desconhecido" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s requer um argumento" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "expressão regular inválida: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "impossÃvel analisar a data \"%s\"" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "\"(\" sem par em expressão" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "\"or\" final ilegal" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "\"!\" final ilegal" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "tipo de procura %d desconhecido" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "uso: %s [-hnRS] [-d pasta] [-m núm] [-s núm] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "uso: %s [-h] [-d pasta] -l [expressão de procura]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2989,7 +3268,7 @@ msgstr "" "%s - reproduz os diários de sessão sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3201,21 +3480,16 @@ msgstr "%s: análise com sucesso\n" msgid "%s busy, try again later" msgstr "%s ocupado, tente mais tarde" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "impossÃvel bloquear %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Editar mesmo assim ? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Aviso: %s:%d:%d: não usado %s \"%s\"" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3224,7 +3498,7 @@ msgstr "" "%s - editar com segurança o ficheiro sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3248,11 +3522,11 @@ msgstr "" msgid "empty string" msgstr "cadeia vazia" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "grupo vazio" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "grupo de rede vazio" @@ -3260,18 +3534,21 @@ msgstr "grupo de rede vazio" msgid "invalid line continuation" msgstr "continuação de linha inválida" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "endereço IPv6 inválido" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "quebra de linha inesperada em cadeia" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "demasiados nÃveis de includes" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d chave desconhecida: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "impossÃvel obter método TLS do servidor: %s" diff --git a/plugins/sudoers/po/pt_BR.mo b/plugins/sudoers/po/pt_BR.mo Binary files differindex ce3fc9eca..cb873053e 100644 --- a/plugins/sudoers/po/pt_BR.mo +++ b/plugins/sudoers/po/pt_BR.mo diff --git a/plugins/sudoers/po/pt_BR.po b/plugins/sudoers/po/pt_BR.po index 2caa76d33..576ea257e 100644 --- a/plugins/sudoers/po/pt_BR.po +++ b/plugins/sudoers/po/pt_BR.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.6b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-03-02 19:29-0700\n" -"PO-Revision-Date: 2021-03-04 05:00-0300\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-22 10:47-0300\n" "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n" "Language: pt_BR\n" @@ -17,10 +17,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: Gtranslator 3.38.0\n" +"X-Generator: Gtranslator 40.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "erro de sintaxe" @@ -44,25 +44,46 @@ msgstr "*** Informação de SEGURANÇA para %h ***" msgid "Sorry, try again." msgstr "Sinto muito, tente novamente." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -74,16 +95,16 @@ msgstr "Sinto muito, tente novamente." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -96,21 +117,21 @@ msgstr "Sinto muito, tente novamente." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -121,242 +142,265 @@ msgstr "Sinto muito, tente novamente." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 +#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/sssd.c:145 #: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 -#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225 -#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581 -#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466 -#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 #: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 #: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155 #: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "não foi possÃvel alocar memória" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "um digest requer um nome de caminho" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "valores para \"CWD\" devem iniciar com um \"/\", \"~\" ou \"*\"" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "valores para \"CHROOT\" devem iniciar com um \"/\", \"~\" ou \"*\"" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "erro de sintaxe, palavra reservada %s usada como um nome de alias" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "valor de notbefore inválido" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "falha de notafter inválido" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "valor de timeout grande demais" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "valor de timeout inválido" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias \"%s\" já definido" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304 -#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337 -#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 -#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422 -#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967 -#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "erro interno, estouro de pilha de %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "não foi possÃvel fazer dup da entrada padrão: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "não foi possÃvel executar %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "não foi possÃvel fazer fork" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "não foi possÃvel fazer fork: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "não foi possÃvel abrir um encadeamento (pipe): %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (comando continuado) %s" @@ -470,488 +514,793 @@ msgstr "%s: campo de grupo, a ser executado como, está faltando" msgid "%s exists but is not a directory (0%o)" msgstr "%s existe, mas não é um diretório (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "não foi possÃvel fazer mkdir %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "não foi possÃvel alterar modo de %s para 0%o" # timing é o nome do arquivo gerado pelo sudo; não traduzir. -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "erro ao ler o arquivo timing: %s" # timing é o nome do arquivo gerado pelo sudo; não traduzir. -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "linha inválida no arquivo timing: %s" -#: logsrvd/iolog_writer.c:946 -msgid "log is already complete, cannot be restarted" -msgstr "o log já está completo, não é possÃvel ser reiniciado" +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "não foi possÃvel gerar o UUID" -#: logsrvd/iolog_writer.c:977 -msgid "unable to restart log" -msgstr "não foi possÃvel reiniciar o log" +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s erro de protocolo: tipo errado para %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: erro de protocolo: faltando %s de AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: não foi possÃvel formatar o id de sessão" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s não está definido" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "não foi possÃvel expandir o caminho de iolog %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "não foi possÃvel criar o caminho de iolog %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "iofd inválido %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "erro ao fechar o iofd %d: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "log de E/S inválido %s: %s referenciado, mas não definido" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: não foi possÃvel localizar o ponto de resumo [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "não foi possÃvel abrir %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "não foi possÃvel abrir %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "não foi possÃvel copiar %s/%s para %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "não foi possÃvel renomear %s para %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "faltando arquivo de log de E/S %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: não foi possÃvel buscar para frente %zu" -#: logsrvd/logsrv_util.c:150 +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: não foi possÃvel localizar o ponto de resumo [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "não foi possÃvel conectar à retransmissão" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "mensagem do servidor grande demais: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "não foi possÃvel adicionar evento para a fila" + +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 +#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 +#: logsrvd/logsrvd_relay.c:544 #, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "não foi possÃvel localizar o ponto de resumo [%lld, %ld] em %s/%s" +msgid "unexpected state %d for %s" +msgstr "estado inesperado %d para %s" -#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398 -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573 -#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637 +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "erro na máquina de estado" -#: logsrvd/logsrvd.c:303 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "AcceptMessage inválido" -#: logsrvd/logsrvd.c:311 -msgid "error parsing AcceptMessage" -msgstr "erro ao analisar AcceptMessage" - -#: logsrvd/logsrvd.c:318 -msgid "error creating I/O log" -msgstr "erro ao criar o log de E/S" - -#: logsrvd/logsrvd.c:325 -msgid "error logging accept event" -msgstr "erro a registrar log de evento de aceite" - -#: logsrvd/logsrvd.c:366 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "RejectMessage inválido" -#: logsrvd/logsrvd.c:374 -msgid "error parsing RejectMessage" -msgstr "erro ao analisar RejectMessage" - -#: logsrvd/logsrvd.c:380 -msgid "error logging reject event" -msgstr "erro a registrar log de evento de rejeição" - -#: logsrvd/logsrvd.c:490 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "AlertMessage inválido" -#: logsrvd/logsrvd.c:499 -msgid "error parsing AlertMessage" -msgstr "erro ao analisar AlertMessage" - -#: logsrvd/logsrvd.c:507 -msgid "error logging alert event" -msgstr "erro a registrar log de evento de alerta" +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: IoBuffer inesperado" -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611 +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "erro de protocolo" -#: logsrvd/logsrvd.c:538 -msgid "error writing IoBuffer" -msgstr "erro ao escrever IoBuffer" - -#: logsrvd/logsrvd.c:590 -msgid "error writing ChangeWindowSize" -msgstr "erro ao escrever ChangeWindowSize" - -#: logsrvd/logsrvd.c:622 -msgid "error writing CommandSuspend" -msgstr "erro ao escrever CommandSuspend" +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "type_case com valor inesperado %d em %s de %s" -#: logsrvd/logsrvd.c:707 +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "tipo não reconhecido de ClientMessage" -#: logsrvd/logsrvd.c:978 -msgid "client message too large" -msgstr "mensagem do cliente grande demais" - -#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216 +#: logsrvd/logsrvd.c:889 #, c-format -msgid "unable to set TLS 1.2 ciphersuite to %s: %s" -msgstr "não foi possÃvel definir conjunto de cifras TLS 1.2 para %s: %s" +msgid "timed out writing to client %s" +msgstr "esgotado o tempo limite de escrita para cliente %s" -#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244 +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 #, c-format -msgid "unable to set TLS 1.3 ciphersuite to %s: %s" -msgstr "não foi possÃvel definir conjunto de cifras TLS 1.3 para %s: %s" +msgid "missing write buffer for client %s" +msgstr "faltando buffer de escrita para cliente %s" -#: logsrvd/logsrvd.c:1280 +#: logsrvd/logsrvd.c:987 #, c-format -msgid "unable to get TLS server method: %s" -msgstr "não foi possÃvel obter o método do servidor TLS: %s" +msgid "timed out reading from client %s" +msgstr "esgotado o tempo limite de leitura do cliente %s" -#: logsrvd/logsrvd.c:1285 +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 #, c-format -msgid "unable to create TLS context: %s" -msgstr "não foi possÃvel criar o contexto de TLS: %s" +msgid "EOF from %s without proper TLS shutdown" +msgstr "EOF de %s sem desligamento TLS adequado" -#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236 +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 #, c-format -msgid "unable to load certificate %s" -msgstr "não foi possÃvel carregar o certificado %s" - -#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216 -#, c-format -msgid "unable to load certificate authority bundle %s" -msgstr "não foi possÃvel carregar o novo pacote de autoridade certificadora %s" - -#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249 -#, c-format -msgid "unable to load private key %s" -msgstr "não foi possÃvel carregar a chave privada %s" +msgid "client message too large: %zu" +msgstr "mensagem do cliente grande demais: %zu" -#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376 -#, c-format -msgid "unable to set diffie-hellman parameters: %s" -msgstr "não foi possÃvel definir os parâmetros de diffie-hellman: %s" +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 +msgid "client message too large" +msgstr "mensagem do cliente grande demais" -#: logsrvd/logsrvd.c:1389 -#, c-format -msgid "unable to set minimum protocol version to TLS 1.2: %s" -msgstr "não foi possÃvel definir a versão mÃnima do protocolo para TLS 1.2: %s" +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 +msgid "invalid ClientMessage" +msgstr "ClientMessage inválido" -#: logsrvd/logsrvd.c:1574 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "não foi possÃvel obter o endereço IP remoto" -#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Não foi possÃvel anexar dados do usuário ao objeto ssl: %s" -#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834 -#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512 -#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "não foi possÃvel adicionar evento para a fila" - -#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033 -msgid "unable setup listen socket" +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 +msgid "unable to setup listen socket" msgstr "não foi possÃvel configurar soquete de escuta" -#: logsrvd/logsrvd.c:1934 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "string inesperada %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "servidor de log do sudo" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Opções:" -#: logsrvd/logsrvd.c:1938 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "caminho para o arquivo de autenticação" -#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "exibe uma mensagem de ajuda e sai" -#: logsrvd/logsrvd.c:1942 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "não faz fork, executa em primeiro plano" -#: logsrvd/logsrvd.c:1944 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "chance em porcentagem das conexões caÃrem" -#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "exibe as informações de versão e sai" -#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C versão 1.3 ou superior é necessário" # "random-drop" foi uma escolha por fazer referência à opção de linha de comando -- Rafael -#: logsrvd/logsrvd.c:2012 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "valor de \"random-drop\" inválido: %s" -#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s versão %s\n" -#: logsrvd/logsrvd_conf.c:332 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "usuário desconhecido %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "grupo desconhecido %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "não foi possÃvel analisar o modo iolog %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "valor inválido para %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "sem suporte a TLS" -#: logsrvd/logsrvd_conf.c:344 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: não um caminho totalmente qualificado" -#: logsrvd/logsrvd_conf.c:770 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "facilidade de syslog desconhecida %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "prioridade de syslog desconhecida %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d \"[\" sem correspondente: %s" -#: logsrvd/logsrvd_conf.c:781 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d seção inválida de configuração: %s" -#: logsrvd/logsrvd_conf.c:789 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d linha inválida de configuração: %s" -#: logsrvd/logsrvd_conf.c:795 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d esperava um nome de seção: %s" -#: logsrvd/logsrvd_conf.c:809 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "invalid value for %s: %s" -msgstr "valor inválido para %s: %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] chave ilegal: %s" -#: logsrvd/logsrvd_conf.c:817 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d chave desconhecida: %s" +msgid "unable to open log file %s" +msgstr "não foi possÃvel abrir o arquivo de log %s" + +#: logsrvd/logsrvd_conf.c:1667 +msgid "unable to initialize server TLS context" +msgstr "não foi possÃvel inicializar o contexto TLS do servidor" + +#: logsrvd/logsrvd_conf.c:1687 +msgid "unable to initialize relay TLS context" +msgstr "não foi possÃvel inicializar o contexto TLS da retransmissão" -#: logsrvd/logsrvd_conf.c:1006 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 +msgid "unable to create journal file" +msgstr "não foi possÃvel criar o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 #, c-format -msgid "unknown syslog facility %s" -msgstr "facilidade de syslog desconhecida %s" +msgid "unable to lock %s" +msgstr "não foi possÃvel travar %s" + +#: logsrvd/logsrvd_journal.c:144 +msgid "unable to lock journal file" +msgstr "não foi possÃvel travar o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "não foi possÃvel abrir o arquivo de journal" -#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014 -#: logsrvd/logsrvd_conf.c:1018 +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 +msgid "unable to write journal file" +msgstr "não foi possÃvel escrever o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 +msgid "unable to rename journal file" +msgstr "não foi possÃvel renomear o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 +msgid "unexpected EOF reading journal file" +msgstr "EOF inesperado ao ler o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 +msgid "error reading journal file" +msgstr "erro ao ler o arquivo de journal" + +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 +msgid "invalid journal file, unable to restart" +msgstr "arquivo de journal inválido, não foi possÃvel reiniciar" + +#: logsrvd/logsrvd_journal.c:436 #, c-format -msgid "unknown syslog priority %s" -msgstr "prioridade de syslog desconhecida %s" +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "não foi possÃvel procurar [%lld, %ld] em arquivo de journal %s" + +#: logsrvd/logsrvd_local.c:152 +msgid "error parsing AcceptMessage" +msgstr "erro ao analisar AcceptMessage" + +#: logsrvd/logsrvd_local.c:163 +msgid "error creating I/O log" +msgstr "erro ao criar o log de E/S" + +#: logsrvd/logsrvd_local.c:186 +msgid "error logging accept event" +msgstr "erro a registrar log de evento de aceite" + +#: logsrvd/logsrvd_local.c:225 +msgid "error parsing RejectMessage" +msgstr "erro ao analisar RejectMessage" + +#: logsrvd/logsrvd_local.c:249 +msgid "error logging reject event" +msgstr "erro a registrar log de evento de rejeição" + +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "erro a registrar log de evento de saÃda" -#: logsrvd/sendlog.c:125 +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 +msgid "log is already complete, cannot be restarted" +msgstr "o log já está completo, não é possÃvel ser reiniciado" + +#: logsrvd/logsrvd_local.c:374 +msgid "unable to restart log" +msgstr "não foi possÃvel reiniciar o log" + +#: logsrvd/logsrvd_local.c:390 +msgid "error parsing AlertMessage" +msgstr "erro ao analisar AlertMessage" + +#: logsrvd/logsrvd_local.c:400 +msgid "error logging alert event" +msgstr "erro a registrar log de evento de alerta" + +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "não é possÃvel formatar o buffer de tempo, comprimento %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 +msgid "error writing IoBuffer" +msgstr "erro ao escrever IoBuffer" + +#: logsrvd/logsrvd_local.c:505 +msgid "error writing ChangeWindowSize" +msgstr "erro ao escrever ChangeWindowSize" + +#: logsrvd/logsrvd_local.c:540 +msgid "error writing CommandSuspend" +msgstr "erro ao escrever CommandSuspend" + +#: logsrvd/logsrvd_relay.c:436 +msgid "TLS handshake with relay host failed" +msgstr "falha na negociação TLS com host de retransmissão" + +#: logsrvd/logsrvd_relay.c:464 +msgid "unable to connect to relay host" +msgstr "não foi possÃvel conectar ao host de retransmissão" + +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: ServerHello inválido, faltando server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 +msgid "invalid ServerHello" +msgstr "ServerHello inválido" + +#: logsrvd/logsrvd_relay.c:680 +msgid "unrecognized ServerMessage type" +msgstr "tipo não reconhecido de ServerMessage" + +#: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "esgotado o tempo limite de leitura da retransmissão %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 +msgid "timeout reading from relay" +msgstr "esgotado o tempo limite de leitura da retransmissão" + +#: logsrvd/logsrvd_relay.c:762 +msgid "relay host name does not match certificate" +msgstr "o nome do host de retransmissão não corresponde ao certificado" + +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 +msgid "error reading from relay" +msgstr "erro ao ler da retransmissão" + +#: logsrvd/logsrvd_relay.c:806 +msgid "unable to read from relay" +msgstr "não foi possÃvel ler da retransmissão" + +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 +msgid "relay server closed connection" +msgstr "conexão fechada com o servidor de retransmissão" + +#: logsrvd/logsrvd_relay.c:839 +msgid "server message too large" +msgstr "mensagem do servidor grande demais" + +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "esgotado o tempo limite de escrita para retransmissão %s (%s)" + +#: logsrvd/logsrvd_relay.c:905 +msgid "timeout writing to relay" +msgstr "esgotado o tempo limite de escrita para retransmissão" + +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 +msgid "error writing to relay" +msgstr "erro ao escrever para retransmissão" + +#: logsrvd/sendlog.c:120 msgid "send sudo I/O log to remote server" msgstr "envia log de E/S do sudo para servidor remoto" -#: logsrvd/sendlog.c:131 +#: logsrvd/sendlog.c:126 msgid "only send an accept event (no I/O)" msgstr "só envia um evento de aceite (sem E/S)" -#: logsrvd/sendlog.c:134 +#: logsrvd/sendlog.c:129 msgid "certificate bundle file to verify server's cert against" msgstr "arquivo de pacote de certificados para verificar o certificado do servidor" -#: logsrvd/sendlog.c:136 +#: logsrvd/sendlog.c:131 msgid "certificate file for TLS handshake" msgstr "arquivo de certificado para negociação TLS" -#: logsrvd/sendlog.c:139 +#: logsrvd/sendlog.c:134 msgid "host to send logs to" msgstr "máquina a ser enviado logs" -#: logsrvd/sendlog.c:141 +#: logsrvd/sendlog.c:136 msgid "remote ID of I/O log to be resumed" msgstr "ID remoto do log de E/S para ser resumido" -#: logsrvd/sendlog.c:144 +#: logsrvd/sendlog.c:139 msgid "private key file" msgstr "arquivo de chave privada" -#: logsrvd/sendlog.c:146 +#: logsrvd/sendlog.c:141 msgid "do not verify server certificate" msgstr "não verifica o certificado do servidor" -#: logsrvd/sendlog.c:149 +#: logsrvd/sendlog.c:144 msgid "port to use when connecting to host" msgstr "porta para usar ao conectar à máquina" -#: logsrvd/sendlog.c:151 +#: logsrvd/sendlog.c:146 msgid "restart previous I/O log transfer" msgstr "reinicia transferência anterior de log de E/S" -#: logsrvd/sendlog.c:153 +#: logsrvd/sendlog.c:148 msgid "reject the command with the given reason" msgstr "rejeita a comando com o motivo dado" -#: logsrvd/sendlog.c:155 +#: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "interrompe a transferência após chegar a este tempo" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "testa o servidor de auditoria enviando o log de E/S selecionado n vezes em paralelo" -#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "não foi possÃvel procurar %s:%s: %s" -#: logsrvd/sendlog.c:218 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "não foi possÃvel obter o endereço IP" -#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "não foi possÃvel ler %s/%s: %s" -#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "mensagem do cliente grande demais: %zu" - -#: logsrvd/sendlog.c:826 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: buffer de escrita já em uso" -#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "E/S com evento inesperado %d" -#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: estado inesperado %d" -#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466 -msgid "invalid ServerHello" -msgstr "ServerHello inválido" - -#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "mensagem de erro recebida do servidor: %s" -#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "mensagem de abortar recebida do servidor: %s" -#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "não foi possÃvel desempacotar ServerMessage" - -#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: type_case com valor inesperado %d" -#: logsrvd/sendlog.c:1112 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "esgotado o tempo limite de leitura do servidor" -#: logsrvd/sendlog.c:1190 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "EOF prematuro" -#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "mensagem do servidor grande demais: %u" -#: logsrvd/sendlog.c:1254 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "esgotado o tempo limite de escrita para servidor" -#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296 +#: logsrvd/sendlog.c:1609 +msgid "both restart point and iolog ID must be specified" +msgstr "ambos ponto de ponto de reinÃcio e ID do iolog devem ser especificados" + +#: logsrvd/sendlog.c:1613 +msgid "a restart point may not be set when no I/O is sent" +msgstr "um ponto de reinÃcio pode não estar definido quando nenhuma E/S é enviada" + +#: logsrvd/sendlog.c:1689 +#, c-format +msgid "exited prematurely with state %d" +msgstr "sai prematuramente com estado %d" + +#: logsrvd/sendlog.c:1690 +#, c-format +msgid "elapsed time sent to server [%lld, %ld]" +msgstr "tempo decorrido enviado ao servidor [%lld, %ld]" + +#: logsrvd/sendlog.c:1692 +#, c-format +msgid "commit point received from server [%lld, %ld]" +msgstr "ponto de confirmação recebido do servidor [%lld, %ld]" + +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "esgotado o tempo limite da negociação TLS" -#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "não foi possÃvel definir evento" -#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "falha de conexão de TLS: %s" -#: logsrvd/sendlog.c:1554 +#: logsrvd/tls_client.c:195 #, c-format -msgid "Unable to initialize ssl context: %s" -msgstr "Não foi possÃvel inicializar o contexto de ssl: %s" +msgid "unable to allocate ssl object: %s" +msgstr "não foi possÃvel alocar objeto ssl: %s" -#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258 -#, c-format -msgid "Unable to allocate ssl object: %s" -msgstr "Não foi possÃvel alocar objeto ssl: %s" - -#: logsrvd/sendlog.c:1564 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Não foi possÃvel anexar soquete ao objeto ssl: %s" -#: logsrvd/sendlog.c:1808 -msgid "both restart point and iolog ID must be specified" -msgstr "ambos ponto de ponto de reinÃcio e ID do iolog devem ser especificados" +#: logsrvd/tls_client.c:236 +msgid "unable to initialize TLS context" +msgstr "não foi possÃvel inicializar o contexto TLS" -#: logsrvd/sendlog.c:1812 -msgid "a restart point may not be set when no I/O is sent" -msgstr "um ponto de reinÃcio pode não estar definido quando nenhuma E/S é enviada" +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 +#, c-format +msgid "unable to set TLS 1.2 ciphersuite to %s: %s" +msgstr "não foi possÃvel definir conjunto de cifras TLS 1.2 para %s: %s" -#: logsrvd/sendlog.c:1887 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format -msgid "exited prematurely with state %d" -msgstr "sai prematuramente com estado %d" +msgid "unable to set TLS 1.3 ciphersuite to %s: %s" +msgstr "não foi possÃvel definir conjunto de cifras TLS 1.3 para %s: %s" -#: logsrvd/sendlog.c:1888 +#: logsrvd/tls_init.c:197 #, c-format -msgid "elapsed time sent to server [%lld, %ld]" -msgstr "tempo decorrido enviado ao servidor [%lld, %ld]" +msgid "unable to create TLS context: %s" +msgstr "não foi possÃvel criar o contexto de TLS: %s" -#: logsrvd/sendlog.c:1890 +#: logsrvd/tls_init.c:203 #, c-format -msgid "commit point received from server [%lld, %ld]" -msgstr "ponto de confirmação recebido do servidor [%lld, %ld]" +msgid "unable to set minimum protocol version to TLS 1.2: %s" +msgstr "não foi possÃvel definir a versão mÃnima do protocolo para TLS 1.2: %s" + +#: logsrvd/tls_init.c:279 +#, c-format +msgid "unable to set diffie-hellman parameters: %s" +msgstr "não foi possÃvel definir os parâmetros de diffie-hellman: %s" + +#: logsrvd/tls_init.c:288 +#, c-format +msgid "unable to read diffie-hellman parameters: %s" +msgstr "não foi possÃvel ler os parâmetros de diffie-hellman: %s" -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "não foi possÃvel obter o horário do dia" @@ -1057,33 +1406,33 @@ msgstr "%s: Não foi possÃvel verificar TGT! Possivelmente um ataque!: %s" msgid "unable to initialize PAM: %s" msgstr "não foi possÃvel inicializar PAM: %s" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:340 #, c-format msgid "PAM authentication error: %s" msgstr "Erro de autenticação PAM: %s" -#: plugins/sudoers/auth/pam.c:356 +#: plugins/sudoers/auth/pam.c:359 msgid "account validation failure, is your account locked?" msgstr "falha de verificação da conta; sua conta está travada?" -#: plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:370 msgid "Account or password is expired, reset your password and try again" msgstr "Conta ou senha expirou; redefina sua senha e tente novamente" -#: plugins/sudoers/auth/pam.c:373 +#: plugins/sudoers/auth/pam.c:376 #, c-format msgid "unable to change expired password: %s" msgstr "não foi possÃvel alterar a senha expirada: %s" -#: plugins/sudoers/auth/pam.c:384 +#: plugins/sudoers/auth/pam.c:387 msgid "Password expired, contact your system administrator" msgstr "Senha expirou; entre em contato com o administrador do seu sistema" -#: plugins/sudoers/auth/pam.c:389 +#: plugins/sudoers/auth/pam.c:392 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Conta expirou ou a configuração do PAM não possui uma seção \"account\" para sudo; contate o administrador do seu sistema" -#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402 +#: plugins/sudoers/auth/pam.c:400 plugins/sudoers/auth/pam.c:405 #, c-format msgid "PAM account management error: %s" msgstr "erro de gerenciamento de conta PAM: %s" @@ -1171,16 +1520,6 @@ msgstr "erro ao ler o arquivo de instruções: %s" msgid "ignoring lecture file %s: not a regular file" msgstr "ignorando o arquivo de instruções %s: não é um arquivo comum" -#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 -#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 -#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688 -#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435 -#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "não foi possÃvel abrir %s" - #: plugins/sudoers/check.c:283 msgid "" "\n" @@ -1201,20 +1540,12 @@ msgstr "" " #3) Com grandes poderes vêm grandes responsabilidades.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "uid desconhecido: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383 -#, c-format -msgid "unknown user: %s" -msgstr "usuário desconhecido: %s" +msgid "unknown uid %u" +msgstr "uid desconhecido %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1256,7 +1587,7 @@ msgstr "preenchimento de ordem: %s: %s" msgid "%s grammar version %d\n" msgstr "gramática de %s versão %d\n" -#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:159 #, c-format msgid "unsupported input format %s" msgstr "formato de entrada sem suporte %s" @@ -1271,9 +1602,10 @@ msgstr "formato de saÃda sem suporte %s" msgid "%s: input and output files must be different" msgstr "%s: arquivos de entrada e saÃda devem ser diferentes" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "não foi possÃvel inicializar valores padrões do sudoers" @@ -1284,8 +1616,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: palavra-chave desconhecida: %s" +msgid "%s: unknown key word %s" +msgstr "%s: palavra-chave desconhecida %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1317,8 +1649,8 @@ msgstr "erro de análise em %s perto da linha %d\n" msgid "parse error in %s\n" msgstr "erro de análise em \"%s\"\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 -#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 +#: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" msgstr "não foi possÃvel gravar em %s" @@ -1374,7 +1706,7 @@ msgstr "" " -V, --version exibe informações de versão e sai" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "entrada de Defaults \"%s\" desconhecida" @@ -1391,12 +1723,12 @@ msgstr "não foi possÃvel obter o horário GMT" msgid "unable to format timestamp" msgstr "não é possÃvel formatar marca de tempo" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "entradas de sudoers demais, máximo %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "a variável de ambiente SUDOERS_BASE não está definida e a opção -b não foi especificada." @@ -1990,6 +2322,26 @@ msgstr "Habilita suporte a RBAC no SELinux" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Caminho para o arquivo que é criado na primeira execução do sudo: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Intercepta outros comandos e aplica restrições sudoers a eles" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "Registra log qualquer processo filho executado pelo comando" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "Registra log o status de saÃda dos comandos" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Os comandos subsequentes em uma sessão interceptada devem ser autenticados" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Permite que um comando interceptado execute os programas setuid ou setgid definidos" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2010,52 +2362,62 @@ msgstr "%s:%d:%d: nenhum valor especificado para \"%s\"" msgid "%s: no value specified for \"%s\"" msgstr "%s: nenhum valor especificado para \"%s\"" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: operador inválido \"%c=\" para \"%s\"" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: operador inválido \"%c=\" para \"%s\"" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: a opção \"%s\" não aceita um valor" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: a opção \"%s\" não leva um valor" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: tipo de Defaults 0x%x inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: Tipo de Defaults 0x%x inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: valor \"%s\" é inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: o valor \"%s\" é inválido para a opção \"%s\"" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: valores para \"%s\" devem iniciar com um \"/\", \"~\" ou \"*\"" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: valores para \"%s\" devem iniciar com um \"/\", '~', ou '*'" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: valores para \"%s\" devem iniciar com um \"/\"" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: valores para \"%s\" devem iniciar com um \"/\"" @@ -2073,12 +2435,12 @@ msgstr "não foi possÃvel recompilar o ambiente" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "sinto muito, você não tem permissão para definir as seguintes variáveis de ambiente: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "erro de análise em %s próximo à linha %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "erro de análise em %s" @@ -2118,56 +2480,51 @@ msgstr "não foi possÃvel localizar um sÃmbolo \"group_plugin\" %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: versão maior do plug-in de grupo %d incompatÃvel, esperava %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "não foi possÃvel analisar o endereço IP \"%s\"" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "não foi possÃvel analisar a máscara de rede \"%s\"" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Par de endereço IP e máscara de rede locais:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407 -#, c-format -msgid "unknown group: %s" -msgstr "grupo desconhecido %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "não foi possÃvel atualizar o arquivo de sequência" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "não foi possÃvel gravar no arquivo de log de E/S: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "não foi possÃvel criar %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: erro interno, o arquivo de log de E/S para evento %d não está aberto" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836 -#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "não foi possÃvel ler do relógio" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: erro interno, sinal inválido %d" @@ -2214,15 +2571,15 @@ msgstr "tipo de uri LDAP sem suporte: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "não foi possÃvel misturar ldap e ldaps URIs" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "sudoOption duplicado: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "não foi possÃvel converter sudoOption: %s%s%s" @@ -2235,87 +2592,111 @@ msgstr "não foi possÃvel abrir o sistema de auditoria" msgid "unable to send audit message" msgstr "não foi possÃvel enviar mensagem de auditoria" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "erro no evento de loop" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Criação do novo objeto SSL_CTX falhou: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:219 +#, c-format +msgid "unable to load certificate authority bundle %s" +msgstr "não foi possÃvel carregar o novo pacote de autoridade certificadora %s" + +#: plugins/sudoers/log_client.c:239 +#, c-format +msgid "unable to load certificate %s" +msgstr "não foi possÃvel carregar o certificado %s" + +#: plugins/sudoers/log_client.c:252 +#, c-format +msgid "unable to load private key %s" +msgstr "não foi possÃvel carregar a chave privada %s" + +#: plugins/sudoers/log_client.c:261 +#, c-format +msgid "Unable to allocate ssl object: %s" +msgstr "Não foi possÃvel alocar objeto ssl: %s" + +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "falha de conexão de TLS com %s:%s: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "A inicialização do TLS não teve êxito" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "A negociação TLS não teve êxito" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: erro interno, status de saÃda inválido %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "não foi possÃvel desempacotar ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "conexão perdida com o servidor de log" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "faltando buffer de escrita" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "não foi possÃvel conectar ao servidor de log" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "usuário NÃO ESTà no sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "usuário NÃO ESTà autorizado na máquina" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "comando não permitido" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s não está no arquivo sudoers. Este incidente será relatado.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s não tem permissão para executar sudo em %s. Este incidente será relatado.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Sinto muito, usuário %s não pode executar sudo em %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Sinto muito, usuário %s não tem permissão para executar \"%s%s%s\" como %s%s%s em %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2324,27 +2705,22 @@ msgstr "" "ignorando \"%s\" encontrado em \".\"\n" "Use \"sudo ./%s\" se isto é o \"%s\" que você deseja executar." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u tentativa de senha incorreta" msgstr[1] "%u tentativas de senha incorreta" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "falha de autenticação" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "uma senha é necessária" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "não foi possÃvel abrir o arquivo de log: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "não foi possÃvel gravar no arquivo de log: %s" @@ -2354,7 +2730,7 @@ msgstr "não foi possÃvel gravar no arquivo de log: %s" msgid "digest for %s (%s) is not in %s form" msgstr "digest de %s (%s) não está na forma %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2363,7 +2739,7 @@ msgstr "" "\n" "Papel LDAP: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2371,38 +2747,38 @@ msgstr "" "\n" "Entradas no sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " UsuáriosRunAs: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " GruposRunAs: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Opções: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Comandos:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Entradas de Defaults correspondentes a %s em %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Padrão especÃfico de comandos e \"runas\" de %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Usuário %s pode executar os seguintes comandos em %s:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Usuário %s não tem permissão para executar sudo em %s.\n" @@ -2417,64 +2793,64 @@ msgstr "ignorando sudoRole incompleto: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "atributo LDIF inválido: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "%.*s inválido definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "não foi possÃvel analisar a lista de endereços de rede" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "nome de usuário não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ID de usuário não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ID de grupo não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "nome da máquina não definido pelo front-end do sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "diretório de trabalho inválido: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "diretório de chroot inválido: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "não foi possÃvel executar %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: opções de modo inválidas pelo front-end do sudo: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Versão de plug-in de polÃtica do sudoers %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Versão de gramática de arquivo do sudoers %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2483,27 +2859,27 @@ msgstr "" "\n" "Caminho do sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "caminho do nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "caminho do ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "caminho do ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "não foi possÃvel registrar hook do tipo %d (versão %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "não foi possÃvel cancelar registro de hook do tipo %d (versão %d.%d)" @@ -2540,7 +2916,7 @@ msgid "unable to cache gid %u, already exists" msgstr "não foi possÃvel fazer cache de gid %u, já existe" #: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619 -#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730 +#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:729 #, c-format msgid "unable to cache group %s" msgstr "não foi possÃvel fazer cache de grupo %s" @@ -2550,70 +2926,70 @@ msgstr "não foi possÃvel fazer cache de grupo %s" msgid "unable to cache group %s, already exists" msgstr "não foi possÃvel fazer cache de grupo %s, já existe" -#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928 -#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030 +#: plugins/sudoers/pwutil.c:876 plugins/sudoers/pwutil.c:927 +#: plugins/sudoers/pwutil.c:977 plugins/sudoers/pwutil.c:1029 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "não foi possÃvel fazer cache da lista de grupos de %s, já existe" -#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933 -#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035 +#: plugins/sudoers/pwutil.c:882 plugins/sudoers/pwutil.c:932 +#: plugins/sudoers/pwutil.c:983 plugins/sudoers/pwutil.c:1034 #, c-format msgid "unable to cache group list for %s" msgstr "não foi fazer cache de lista de grupos para %s" -#: plugins/sudoers/pwutil.c:922 +#: plugins/sudoers/pwutil.c:921 #, c-format msgid "unable to parse groups for %s" msgstr "não foi possÃvel analisar grupos de %s" -#: plugins/sudoers/pwutil.c:1024 +#: plugins/sudoers/pwutil.c:1023 #, c-format msgid "unable to parse gids for %s" msgstr "não foi possÃvel analisar os gids de %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "estouro da pilha de permissões" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "esvaziamento da pilha de permissões" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "não foi possÃvel alterar gid de root" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "não foi possÃvel alterar para gid de \"runas\"" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "não foi possÃvel definir vetor de grupo de \"runas\"" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "não foi possÃvel alterar para uid de \"runas\"" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "não foi possÃvel alterar para gid de sudoers" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "processos demais" @@ -2642,254 +3018,256 @@ msgstr "não foi possÃvel inicializar a fonte SSS. SSSD está instalado em sua msgid "unable to find symbol \"%s\" in %s" msgstr "não foi possÃvel localizar sÃmbolo \"%s\" em %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "problema com o entradas padrão" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "nenhuma fonte de sudoers válida encontrada; saindo" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "usuário sem permissão para alterar o diretório raiz para %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "você não tem permissão para usar a opção -R com %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "usuário sem permissão para alterar o diretório para %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "você não tem permissão para usar a opção -D com %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "nenhum comando especificado" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers especifica que o root não tem permissão para usar sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "usuário sem permissão para substituir o limite closefrom" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "você não tem permissão para usar a opção -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "dono da marca de tempo (%s): Usuário inexistente" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "nenhum tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "sinto muito, você deve ter um tty para executar sudo" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "shell inválido para o usuário %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "comando no diretório atual" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "usuário sem permissão para definir um tempo limite de comando" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "sinto muito, você não tem permissão para definir um tempo limite de comando" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "usuário sem permissão para preservar o ambiente" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "sinto muito, você não tem permissão para preservar o ambiente" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "comando muito grande" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit não precisa ser executado via sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "não foi possÃvel ler %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "não foi possÃvel obter o estado de %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s não é um arquivo comum" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s tem como dono o uid %u, deveria ser %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s é gravável globalmente" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s tem como dono o gid %u, deveria ser %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "apenas o root pode usar \"-c %s\"" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "classe de login desconhecida: %s" +msgid "unknown login class %s" +msgstr "classe de login desconhecida %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "não foi possÃvel resolver máquina %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "opção de filtro inválida: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "espera máxima inválida: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "fator de velocidade inválido: %s" +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "deslocamento de tempo inválido %s" + # timing é o nome do arquivo gerado pelo sudo; não traduzir. -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" # timing é o nome do arquivo gerado pelo sudo; não traduzir. -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/timing: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Reproduzindo sessão de sudo: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "não foi possÃvel definir o tty para modo raw" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Aviso: seu terminal é muito pequeno para reproduzir adequadamente o log.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Geometria do log é %d x %d; geometria do seu terminal é %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Reprodução finalizada, pressione qualquer tecla para restaurar o terminal." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "expressão ambÃgua \"%s\"" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "\")\" não coincidente na expressão" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "termo de pesquisa desconhecido \"%s\"" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s requer um argumento" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "expressão regular inválida: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "não foi possÃvel analisar a data \"%s\"" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "\"(\" sem correspondente na expressão" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "fim de linha ilegal com \"or\"" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "fim de linha ilegal com \"!\"" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "tipo de pesquisa desconhecido %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "uso: %s [-hnRS] [-d diretório] [-m número] [-s número] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "uso: %s [-h] [-d diretório] -l [expressão de pesquisa]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2898,7 +3276,7 @@ msgstr "" "%s - reproduz logs de sessão do sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -2927,11 +3305,11 @@ msgstr "" " -s, --speed=núm aumenta ou diminui a velocidade da saÃda\n" " -V, --version exibe a informação da versão e sai" -#: plugins/sudoers/testsudoers.c:345 +#: plugins/sudoers/testsudoers.c:344 msgid "\thost unmatched" msgstr "\tmáquina sem correspondente" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:347 msgid "" "\n" "Command allowed" @@ -2939,7 +3317,7 @@ msgstr "" "\n" "Comando permitido" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command denied" @@ -2947,7 +3325,7 @@ msgstr "" "\n" "Comando negado" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command unmatched" @@ -2960,26 +3338,26 @@ msgstr "" msgid "%s is group writable" msgstr "%s é gravável pelo grupo" -#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661 +#: plugins/sudoers/timestamp.c:328 plugins/sudoers/timestamp.c:663 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "não foi possÃvel truncar o arquivo de marca de tempo para %lld bytes" -#: plugins/sudoers/timestamp.c:847 +#: plugins/sudoers/timestamp.c:860 msgid "ignoring time stamp from the future" msgstr "ignorado marca de tempo no futuro" -#: plugins/sudoers/timestamp.c:870 +#: plugins/sudoers/timestamp.c:883 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "marca de tempo muito a frente no futuro: %20.20s" -#: plugins/sudoers/timestamp.c:992 +#: plugins/sudoers/timestamp.c:1005 #, c-format msgid "unable to lock time stamp file %s" msgstr "não foi possÃvel travar o arquivo de marca de tempo %s" -#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056 +#: plugins/sudoers/timestamp.c:1049 plugins/sudoers/timestamp.c:1069 #, c-format msgid "lecture status path too long: %s/%s" msgstr "caminho de status de instruções muito longo: %s/%s" @@ -3111,21 +3489,16 @@ msgstr "%s: análise OK\n" msgid "%s busy, try again later" msgstr "%s ocupado, tente novamente" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "não foi possÃvel travar %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Editar mesmo assim? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Aviso: %s:%d:%d: %s não usado \"%s\"" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3134,7 +3507,7 @@ msgstr "" "%s - edita o arquivo sudoers com segurança\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3158,11 +3531,11 @@ msgstr "" msgid "empty string" msgstr "string vazia" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "grupo vazio" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "netgroup vazio" @@ -3170,18 +3543,24 @@ msgstr "netgroup vazio" msgid "invalid line continuation" msgstr "continuação de linha inválida" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "endereço IPv6 inválido" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "quebra de linha inesperada na string" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "nÃveis de inclusões demais" +#~ msgid "unable to get TLS server method: %s" +#~ msgstr "não foi possÃvel obter o método do servidor TLS: %s" + +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d chave desconhecida: %s" + #~ msgid "%s:%u unable to parse \"%s\"" #~ msgstr "%s:%u não foi possÃvel analisar \"%s\"" @@ -3240,9 +3619,6 @@ msgstr "nÃveis de inclusões demais" #~ msgid "Preload the dummy exec functions contained in the sudo_noexec library" #~ msgstr "Pré-carrega as funções de exec de teste contidas na biblioteca sudo_noexec" -#~ msgid "unable to lock log file: %s" -#~ msgstr "não foi possÃvel travar o arquivo de log: %s" - #~ msgid "sudo_ldap_conf_add_ports: port too large" #~ msgstr "sudo_ldap_conf_add_ports: porta muito grande" @@ -3331,9 +3707,6 @@ msgstr "nÃveis de inclusões demais" #~ msgid "Warning: cycle in %s `%s'" #~ msgstr "Aviso: ciclo em %s \"%s\"" -#~ msgid "Warning: %s `%s' referenced but not defined" -#~ msgstr "Aviso: %s \"%s\" referenciado, mas não definido" - #~ msgid "Warning: unused %s `%s'" #~ msgstr "Aviso: %s não usado \"%s\"" diff --git a/plugins/sudoers/po/sr.mo b/plugins/sudoers/po/sr.mo Binary files differindex 8ffdd9837..441122141 100644 --- a/plugins/sudoers/po/sr.mo +++ b/plugins/sudoers/po/sr.mo diff --git a/plugins/sudoers/po/sr.po b/plugins/sudoers/po/sr.po index 3fc4ef224..6f5fcbed3 100644 --- a/plugins/sudoers/po/sr.po +++ b/plugins/sudoers/po/sr.po @@ -3,10 +3,10 @@ # МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2014—2021. msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.6b1\n" +"Project-Id-Version: sudoers-1.9.7b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-03-02 19:29-0700\n" -"PO-Revision-Date: 2021-04-02 06:50+0200\n" +"POT-Creation-Date: 2021-05-01 16:27-0600\n" +"PO-Revision-Date: 2021-07-03 07:21+0200\n" "Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -55,10 +55,14 @@ msgstr "Извините, покушајте поново." #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115 +#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 +#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 +#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 +#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 #: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -75,7 +79,7 @@ msgstr "Извините, покушајте поново." #: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 #: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 #: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262 +#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 #: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 @@ -121,9 +125,9 @@ msgstr "Извините, покушајте поново." #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 +#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/sssd.c:145 #: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 @@ -135,10 +139,10 @@ msgstr "Извините, покушајте поново." #: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 #: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 #: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 -#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225 -#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581 -#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466 -#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 #: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 #: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155 #: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 @@ -200,11 +204,11 @@ msgstr "ПÑеудоним „%s“ је већ одређен" #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304 -#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337 -#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 +#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 +#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 #: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 #: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 @@ -220,7 +224,7 @@ msgstr "ПÑеудоним „%s“ је већ одређен" #: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 #: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 #: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181 +#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 #: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 @@ -275,9 +279,9 @@ msgstr "ПÑеудоним „%s“ је већ одређен" #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854 -#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954 -#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359 +#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 +#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 #: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 #: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 #: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 @@ -291,11 +295,11 @@ msgstr "ПÑеудоним „%s“ је већ одређен" #: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 #: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 #: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 -#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422 -#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967 -#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 +#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 +#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 +#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 +#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 #: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 #: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 #: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 @@ -318,7 +322,7 @@ msgstr "%s: %s" #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 #: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 #: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "унутрашња грешка, прекорачење „%s“" @@ -488,14 +492,6 @@ msgstr "грешка читања датотеке времениÑања: %s" msgid "invalid timing file line: %s" msgstr "неиÑправан ред датотеке времениÑања: %s" -#: logsrvd/iolog_writer.c:946 -msgid "log is already complete, cannot be restarted" -msgstr "дневик је већ довршен, не може бити поново покренут" - -#: logsrvd/iolog_writer.c:977 -msgid "unable to restart log" -msgstr "не могу поново да покренем дневник" - #: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 #: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format @@ -517,133 +513,54 @@ msgstr "%s/%s: не могу да премотам унапред „%zu“" msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "не могу да нађем тачку наÑтавка [%lld, %ld] у „%s/%s“" -#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398 -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573 -#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637 +#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 +#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 +#: logsrvd/logsrvd_relay.c:544 msgid "state machine error" msgstr "грешка машине Ñтања" -#: logsrvd/logsrvd.c:303 +#: logsrvd/logsrvd.c:443 msgid "invalid AcceptMessage" msgstr "неиÑправна „Порука прихвата“" -#: logsrvd/logsrvd.c:311 -msgid "error parsing AcceptMessage" -msgstr "грешка обраде „Поруке прихвата“" - -#: logsrvd/logsrvd.c:318 -msgid "error creating I/O log" -msgstr "грешка Ñтварања У/И дневника" - -#: logsrvd/logsrvd.c:325 -msgid "error logging accept event" -msgstr "грешка прибележавања догађаја прихвата" - -#: logsrvd/logsrvd.c:366 +#: logsrvd/logsrvd.c:482 msgid "invalid RejectMessage" msgstr "неиÑправна „Порука одбијања“" -#: logsrvd/logsrvd.c:374 -msgid "error parsing RejectMessage" -msgstr "грешка обраде „Поруке одбијања“" - -#: logsrvd/logsrvd.c:380 -msgid "error logging reject event" -msgstr "грешка прибележавања догађаја одбијања" - -#: logsrvd/logsrvd.c:490 +#: logsrvd/logsrvd.c:593 msgid "invalid AlertMessage" msgstr "неиÑправна „Порука узбуне“" -#: logsrvd/logsrvd.c:499 -msgid "error parsing AlertMessage" -msgstr "грешка обраде „Поруке узбуне“" - -#: logsrvd/logsrvd.c:507 -msgid "error logging alert event" -msgstr "грешка прибележавања догађаја упозорења" - -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611 +#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "грешка протокола" -#: logsrvd/logsrvd.c:538 -msgid "error writing IoBuffer" -msgstr "Грешка пиÑања „Уи_Међумеморије“" - -#: logsrvd/logsrvd.c:590 -msgid "error writing ChangeWindowSize" -msgstr "грешка пиÑања „Промени_величину_прозора“" - -#: logsrvd/logsrvd.c:622 -msgid "error writing CommandSuspend" -msgstr "грешка пиÑања „ОбуÑтаве_наредбе“" - -#: logsrvd/logsrvd.c:707 +#: logsrvd/logsrvd.c:797 msgid "unrecognized ClientMessage type" msgstr "непозната врÑта „Поруке_клијента“" -#: logsrvd/logsrvd.c:978 +#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 msgid "client message too large" msgstr "порука клијента је превелика" -#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216 -#, c-format -msgid "unable to set TLS 1.2 ciphersuite to %s: %s" -msgstr "не могу да подеÑим шифрарник ТЛС-а 1.2 на „%s“: %s" - -#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244 -#, c-format -msgid "unable to set TLS 1.3 ciphersuite to %s: %s" -msgstr "не могу да подеÑим шифрарник ТЛС-а 1.3 на „%s“: %s" - -#: logsrvd/logsrvd.c:1280 -#, c-format -msgid "unable to get TLS server method: %s" -msgstr "не могу да добавим метод ТЛС Ñервера: %s" - -#: logsrvd/logsrvd.c:1285 -#, c-format -msgid "unable to create TLS context: %s" -msgstr "Ðе могу да Ñтворим ТЛС контекÑÑ‚: %s" - -#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236 -#, c-format -msgid "unable to load certificate %s" -msgstr "не могу да учитам уверење „%s“" +#: logsrvd/logsrvd.c:1102 +msgid "invalid ClientMessage" +msgstr "неиÑправна „Порука клијента“" -#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216 -#, c-format -msgid "unable to load certificate authority bundle %s" -msgstr "не могу да учитам комплет ауторитета уверења „%s“" - -#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249 -#, c-format -msgid "unable to load private key %s" -msgstr "не могу да учитам лични кључ „%s“" - -#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376 -#, c-format -msgid "unable to set diffie-hellman parameters: %s" -msgstr "не могу да подеÑим „diffie-hellman“ параметре: %s" - -#: logsrvd/logsrvd.c:1389 -#, c-format -msgid "unable to set minimum protocol version to TLS 1.2: %s" -msgstr "не могу да подеÑим најмање издање протокола на „TLS 1.2“: %s" - -#: logsrvd/logsrvd.c:1574 +#: logsrvd/logsrvd.c:1408 msgid "unable to get remote IP addr" msgstr "не могу да добавим удаљену ИП адреÑу" -#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 +#: plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Ðе могу да прикачим податке кориÑника ÑÑл објекту: %s" -#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834 -#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512 -#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969 +#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 +#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 +#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 #: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 #: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 #: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 @@ -661,285 +578,457 @@ msgstr "Ðе могу да прикачим податке кориÑника Ñ msgid "unable to add event to queue" msgstr "не могу да додам догађај у ред" -#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033 -msgid "unable setup listen socket" +#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +msgid "unable to setup listen socket" msgstr "не могу да подеÑим прикључницу оÑлушкивања" -#: logsrvd/logsrvd.c:1934 +#: logsrvd/logsrvd.c:1855 msgid "sudo log server" msgstr "Ñервер Ñудо дневника" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127 +#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Опције:" -#: logsrvd/logsrvd.c:1938 +#: logsrvd/logsrvd.c:1859 msgid "path to configuration file" msgstr "путања до датотеке подешавања" -#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129 +#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "приказује поруку помоћи и излази" -#: logsrvd/logsrvd.c:1942 +#: logsrvd/logsrvd.c:1863 msgid "do not fork, run in the foreground" msgstr "не клонира, ради у првом плану" -#: logsrvd/logsrvd.c:1944 +#: logsrvd/logsrvd.c:1865 msgid "percent chance connections will drop" msgstr "проÑенат шанÑи за одбацивање веза" -#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157 +#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 msgid "display version information and exit" msgstr "приказује податке о издању и излази" -#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 msgid "Protobuf-C version 1.3 or higher required" msgstr "Потребно је „Protobuf-C“ издање 1.3 или новије" -#: logsrvd/logsrvd.c:2012 +#: logsrvd/logsrvd.c:1933 #, c-format msgid "invalid random drop value: %s" msgstr "неиÑправна вредноÑÑ‚ одбацивања наÑумичноÑти: %s" -#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785 +#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 #: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s издање %s\n" -#: logsrvd/logsrvd_conf.c:332 +#: logsrvd/logsrvd_conf.c:446 msgid "TLS not supported" msgstr "ТЛС није подржано" -#: logsrvd/logsrvd_conf.c:344 +#: logsrvd/logsrvd_conf.c:468 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656 +#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: није потпуно квалификована путања" -#: logsrvd/logsrvd_conf.c:770 +#: logsrvd/logsrvd_conf.c:1035 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "„%s:%d“ непоклопљена [: %s" -#: logsrvd/logsrvd_conf.c:781 +#: logsrvd/logsrvd_conf.c:1046 #, c-format msgid "%s:%d invalid config section: %s" msgstr "„%s:%d“ неиÑправан одељак подешавања: %s" -#: logsrvd/logsrvd_conf.c:789 +#: logsrvd/logsrvd_conf.c:1054 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "„%s:%d“ неиÑправан ред подешавања: %s" -#: logsrvd/logsrvd_conf.c:795 +#: logsrvd/logsrvd_conf.c:1060 #, c-format msgid "%s:%d expected section name: %s" msgstr "„%s:%d“ очекиван је назив одељка: %s" -#: logsrvd/logsrvd_conf.c:809 +#: logsrvd/logsrvd_conf.c:1074 #, c-format msgid "invalid value for %s: %s" msgstr "неиÑправна вредноÑÑ‚ за „%s“: %s" -#: logsrvd/logsrvd_conf.c:817 +#: logsrvd/logsrvd_conf.c:1082 #, c-format msgid "%s:%d unknown key: %s" msgstr "„%s:%d“ непознат кључ: %s" -#: logsrvd/logsrvd_conf.c:1006 +#: logsrvd/logsrvd_conf.c:1294 #, c-format msgid "unknown syslog facility %s" msgstr "непознато поÑтројење ÑиÑтемÑког дневика „%s“" -#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014 -#: logsrvd/logsrvd_conf.c:1018 +#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 +#: logsrvd/logsrvd_conf.c:1306 #, c-format msgid "unknown syslog priority %s" msgstr "непознат приоритет ÑиÑтемÑког дневика „%s“" -#: logsrvd/sendlog.c:125 +#: logsrvd/logsrvd_conf.c:1374 +msgid "unable to initialize server TLS context" +msgstr "не могу да покренем ТЛС контекÑÑ‚ Ñервера" + +#: logsrvd/logsrvd_conf.c:1394 +msgid "unable to initialize relay TLS context" +msgstr "не могу да покренем ТЛС контекÑÑ‚ преноÑника" + +#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 +#: logsrvd/logsrvd_journal.c:373 +msgid "unable to create journal file" +msgstr "не могу да направим датотеку дневника" + +#: logsrvd/logsrvd_journal.c:134 +msgid "unable to lock journal file" +msgstr "не могу да закључам датотеку дневника" + +#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 +#: logsrvd/logsrvd_journal.c:411 +msgid "unable to write journal file" +msgstr "не могу да запишем датотеку дневника" + +#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +msgid "unable to rename journal file" +msgstr "не могу да преименујем датотеку дневника" + +#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +msgid "unexpected EOF reading journal file" +msgstr "неочекивани крај датотеке читајући датотеку дневника" + +#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +msgid "error reading journal file" +msgstr "грешка читања датотеке дневника" + +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +msgid "invalid journal file, unable to restart" +msgstr "неиÑправна датотека дневника, не могу поново да почнем" + +#: logsrvd/logsrvd_local.c:149 +msgid "error parsing AcceptMessage" +msgstr "грешка обраде „Поруке прихвата“" + +#: logsrvd/logsrvd_local.c:156 +msgid "error creating I/O log" +msgstr "грешка Ñтварања У/И дневника" + +#: logsrvd/logsrvd_local.c:164 +msgid "error logging accept event" +msgstr "грешка прибележавања догађаја прихвата" + +#: logsrvd/logsrvd_local.c:196 +msgid "error parsing RejectMessage" +msgstr "грешка обраде „Поруке одбијања“" + +#: logsrvd/logsrvd_local.c:202 +msgid "error logging reject event" +msgstr "грешка прибележавања догађаја одбијања" + +#: logsrvd/logsrvd_local.c:276 +msgid "log is already complete, cannot be restarted" +msgstr "дневик је већ довршен, не може бити поново покренут" + +#: logsrvd/logsrvd_local.c:307 +msgid "unable to restart log" +msgstr "не могу поново да покренем дневник" + +#: logsrvd/logsrvd_local.c:322 +msgid "error parsing AlertMessage" +msgstr "грешка обраде „Поруке узбуне“" + +#: logsrvd/logsrvd_local.c:330 +msgid "error logging alert event" +msgstr "грешка прибележавања догађаја упозорења" + +#: logsrvd/logsrvd_local.c:397 +msgid "error writing IoBuffer" +msgstr "Грешка пиÑања „Уи_Међумеморије“" + +#: logsrvd/logsrvd_local.c:434 +msgid "error writing ChangeWindowSize" +msgstr "грешка пиÑања „Промени_величину_прозора“" + +#: logsrvd/logsrvd_local.c:474 +msgid "error writing CommandSuspend" +msgstr "грешка пиÑања „ОбуÑтаве_наредбе“" + +#: logsrvd/logsrvd_relay.c:434 +msgid "TLS handshake with relay host failed" +msgstr "ТЛС руковање Ñа домаћином преноÑника није уÑпело" + +#: logsrvd/logsrvd_relay.c:462 +msgid "unable to connect to relay host" +msgstr "Ðе могу да Ñе повежем Ñа домаћином преноÑника" + +#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 +#: plugins/sudoers/log_client.c:1466 +msgid "invalid ServerHello" +msgstr "неиÑправан „Поздрав_Ñервера“" + +#: logsrvd/logsrvd_relay.c:677 +msgid "unrecognized ServerMessage type" +msgstr "непозната врÑта „Поруке_Ñервера“" + +#: logsrvd/logsrvd_relay.c:709 +msgid "timeout reading from relay" +msgstr "иÑтекло је време читања Ñа преноÑника" + +#: logsrvd/logsrvd_relay.c:761 +msgid "relay host name does not match certificate" +msgstr "назив домаћина преноÑника не одговара уверењу" + +#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 +#: logsrvd/logsrvd_relay.c:794 +msgid "error reading from relay" +msgstr "грешка читања Ñа преноÑника" + +#: logsrvd/logsrvd_relay.c:817 +msgid "unable to read from relay" +msgstr "не могу да читам Ñа преноÑника" + +#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +msgid "relay server closed connection" +msgstr "Ñервер преноÑника је затворио везу" + +#: logsrvd/logsrvd_relay.c:850 +msgid "server message too large" +msgstr "порука Ñервера је превелика" + +#: logsrvd/logsrvd_relay.c:915 +msgid "timeout writing to relay" +msgstr "иÑтекло је време пиÑања на преноÑнику" + +#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:993 +msgid "error writing to relay" +msgstr "грешка пиÑања на преноÑнику" + +#: logsrvd/sendlog.c:120 msgid "send sudo I/O log to remote server" msgstr "шаље У/И дневник Ñудоа удаљеном Ñерверу" -#: logsrvd/sendlog.c:131 +#: logsrvd/sendlog.c:126 msgid "only send an accept event (no I/O)" msgstr "шаље Ñамо догађај прихвата (не У/И)" -#: logsrvd/sendlog.c:134 +#: logsrvd/sendlog.c:129 msgid "certificate bundle file to verify server's cert against" msgstr "датотека Ñкупа уверења за проверавање уверења Ñервера" -#: logsrvd/sendlog.c:136 +#: logsrvd/sendlog.c:131 msgid "certificate file for TLS handshake" msgstr "датотека уверења за ТЛС руковање" -#: logsrvd/sendlog.c:139 +#: logsrvd/sendlog.c:134 msgid "host to send logs to" msgstr "домаћин коме шаље дневнике" -#: logsrvd/sendlog.c:141 +#: logsrvd/sendlog.c:136 msgid "remote ID of I/O log to be resumed" msgstr "ИБ удаљеног У/И дневника који ће бити враћен" -#: logsrvd/sendlog.c:144 +#: logsrvd/sendlog.c:139 msgid "private key file" msgstr "датотека приватног кључа" -#: logsrvd/sendlog.c:146 +#: logsrvd/sendlog.c:141 msgid "do not verify server certificate" msgstr "не проверава уверење Ñервера" -#: logsrvd/sendlog.c:149 +#: logsrvd/sendlog.c:144 msgid "port to use when connecting to host" msgstr "прикључник за коришћење приликом повезивања на домаћина" -#: logsrvd/sendlog.c:151 +#: logsrvd/sendlog.c:146 msgid "restart previous I/O log transfer" msgstr "поново покреће претходни Ð¿Ñ€ÐµÐ½Ð¾Ñ Ð£/И дневника" -#: logsrvd/sendlog.c:153 +#: logsrvd/sendlog.c:148 msgid "reject the command with the given reason" msgstr "одбацује наредбу Ñа датим разлогом" -#: logsrvd/sendlog.c:155 +#: logsrvd/sendlog.c:150 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "теÑтира анкетни Ñервер шаљући изабрани У/И дневник n пута у паралели" -#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "не могу да потражим „%s:%s“: %s" -#: logsrvd/sendlog.c:218 +#: logsrvd/sendlog.c:213 msgid "unable to get server IP addr" msgstr "не могу да добавим ИП адреÑу Ñервера" -#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "не могу да прочитам „%s/%s“: %s" -#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692 +#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 #, c-format msgid "client message too large: %zu" msgstr "порука клијента је превелика: %zu" -#: logsrvd/sendlog.c:826 +#: logsrvd/sendlog.c:830 #, c-format msgid "%s: write buffer already in use" msgstr "%s: међумеморија пиÑања је већ у употреби" -#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893 +#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 #: plugins/sudoers/iolog.c:962 #, c-format msgid "unexpected I/O event %d" msgstr "неочекивани У/И догађај „%d“" -#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975 +#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 #: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 #: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 #, c-format msgid "%s: unexpected state %d" msgstr "%s: неочекивано Ñтање „%d“" -#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466 -msgid "invalid ServerHello" -msgstr "неиÑправан „Поздрав_Ñервера“" - -#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 #, c-format msgid "error message received from server: %s" msgstr "порука грешке је примљена Ñа Ñервера: %s" -#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 #, c-format msgid "abort message received from server: %s" msgstr "порука прекида је примљена Ñа Ñервера: %s" -#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572 +#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 msgid "unable to unpack ServerMessage" msgstr "не могу да отпакујем „Поруку_Ñервера“" -#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: неочекивана вредноÑÑ‚ врÑте_Ñлова „%d“" -#: logsrvd/sendlog.c:1112 +#: logsrvd/sendlog.c:1116 msgid "timeout reading from server" msgstr "иÑтекло је време читања Ñа Ñервера" -#: logsrvd/sendlog.c:1190 +#: logsrvd/sendlog.c:1195 msgid "premature EOF" msgstr "прерани крај датотеке" -#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 #, c-format msgid "server message too large: %u" msgstr "порука Ñервера је превелика: %u" -#: logsrvd/sendlog.c:1254 +#: logsrvd/sendlog.c:1259 msgid "timeout writing to server" msgstr "иÑтекло је време пиÑања на Ñервер" -#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296 +#: logsrvd/sendlog.c:1591 +msgid "both restart point and iolog ID must be specified" +msgstr "мора бити наведена и тачка поновног покретања и ИБ уи_дневника" + +#: logsrvd/sendlog.c:1595 +msgid "a restart point may not be set when no I/O is sent" +msgstr "тачка поновног покретања Ñе не може подеÑити када није поÑлат У/И" + +#: logsrvd/sendlog.c:1671 +#, c-format +msgid "exited prematurely with state %d" +msgstr "изађох прерано Ñа Ñтањем „%d“" + +#: logsrvd/sendlog.c:1672 +#, c-format +msgid "elapsed time sent to server [%lld, %ld]" +msgstr "протекло време поÑлато Ñерверу [%lld, %ld]" + +#: logsrvd/sendlog.c:1674 +#, c-format +msgid "commit point received from server [%lld, %ld]" +msgstr "тачка Ñлања примљена Ñа Ñервера [%lld, %ld]" + +#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "дошло је до временÑког иÑтека ТЛС руковања" -#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507 +#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 #: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "не могу да подеÑим догађај" -#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521 +#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 #, c-format msgid "TLS connection failed: %s" msgstr "ТЛС веза није уÑпела: %s" -#: logsrvd/sendlog.c:1554 +#: logsrvd/tls_client.c:197 #, c-format -msgid "Unable to initialize ssl context: %s" -msgstr "Ðе могу да покренем ÑÑл контекÑÑ‚: %s" - -#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258 -#, c-format -msgid "Unable to allocate ssl object: %s" -msgstr "Ðе могу да доделим ÑÑл објекат: %s" +msgid "unable to allocate ssl object: %s" +msgstr "не могу да доделим ÑÑл објекат: %s" -#: logsrvd/sendlog.c:1564 +#: logsrvd/tls_client.c:210 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Ðе могу да прикачим прикључницу ÑÑл објекту: %s" -#: logsrvd/sendlog.c:1808 -msgid "both restart point and iolog ID must be specified" -msgstr "мора бити наведена и тачка поновног покретања и ИБ уи_дневника" +#: logsrvd/tls_client.c:238 +msgid "unable to initialize TLS context" +msgstr "не могу да покренем ТЛС контекÑÑ‚" -#: logsrvd/sendlog.c:1812 -msgid "a restart point may not be set when no I/O is sent" -msgstr "тачка поновног покретања Ñе не може подеÑити када није поÑлат У/И" +#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#, c-format +msgid "unable to set TLS 1.2 ciphersuite to %s: %s" +msgstr "не могу да подеÑим шифрарник ТЛС-а 1.2 на „%s“: %s" -#: logsrvd/sendlog.c:1887 +#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 #, c-format -msgid "exited prematurely with state %d" -msgstr "изађох прерано Ñа Ñтањем „%d“" +msgid "unable to set TLS 1.3 ciphersuite to %s: %s" +msgstr "не могу да подеÑим шифрарник ТЛС-а 1.3 на „%s“: %s" -#: logsrvd/sendlog.c:1888 +#: logsrvd/tls_init.c:200 #, c-format -msgid "elapsed time sent to server [%lld, %ld]" -msgstr "протекло време поÑлато Ñерверу [%lld, %ld]" +msgid "unable to create TLS context: %s" +msgstr "Ðе могу да Ñтворим ТЛС контекÑÑ‚: %s" -#: logsrvd/sendlog.c:1890 +#: logsrvd/tls_init.c:206 #, c-format -msgid "commit point received from server [%lld, %ld]" -msgstr "тачка Ñлања примљена Ñа Ñервера [%lld, %ld]" +msgid "unable to set minimum protocol version to TLS 1.2: %s" +msgstr "не могу да подеÑим најмање издање протокола на „TLS 1.2“: %s" + +#: logsrvd/tls_init.c:282 +#, c-format +msgid "unable to set diffie-hellman parameters: %s" +msgstr "не могу да подеÑим „diffie-hellman“ параметре: %s" + +#: logsrvd/tls_init.c:291 +#, c-format +msgid "unable to read diffie-hellman parameters: %s" +msgstr "не могу да читам „diffie-hellman“ параметре: %s" + +#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 +#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 +#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 +#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "не могу да отворим „%s“" #: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 #: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 @@ -1050,33 +1139,33 @@ msgstr "%s: Ðе могу потврдити ТГТ! Могући напад!: % msgid "unable to initialize PAM: %s" msgstr "не могу да покренем ПÐÐœ: %s" -#: plugins/sudoers/auth/pam.c:337 +#: plugins/sudoers/auth/pam.c:340 #, c-format msgid "PAM authentication error: %s" msgstr "Грешка ПÐÐœ потврђивања идентитета: %s" -#: plugins/sudoers/auth/pam.c:356 +#: plugins/sudoers/auth/pam.c:359 msgid "account validation failure, is your account locked?" msgstr "неуÑпех провере налога, да ли је ваш налог закључан?" -#: plugins/sudoers/auth/pam.c:367 +#: plugins/sudoers/auth/pam.c:370 msgid "Account or password is expired, reset your password and try again" msgstr "Ðалог или лозинка је иÑтекла, поново поÑтавите лозинку и покушајте поново" -#: plugins/sudoers/auth/pam.c:373 +#: plugins/sudoers/auth/pam.c:376 #, c-format msgid "unable to change expired password: %s" msgstr "не могу да изменим иÑтеклу лозинку: %s" -#: plugins/sudoers/auth/pam.c:384 +#: plugins/sudoers/auth/pam.c:387 msgid "Password expired, contact your system administrator" msgstr "Лозинка је иÑтекла, обратите Ñе админиÑтратору ÑиÑтема" -#: plugins/sudoers/auth/pam.c:389 +#: plugins/sudoers/auth/pam.c:392 msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator" msgstr "Ðалог је иÑтекао или ПÐÐœ подешавањима недоÑтаје одељак „налог“ за Ñудо, обратите Ñе админиÑтратору ÑиÑтема" -#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402 +#: plugins/sudoers/auth/pam.c:400 plugins/sudoers/auth/pam.c:405 #, c-format msgid "PAM account management error: %s" msgstr "грешка управљања ПÐÐœ налогом: %s" @@ -1164,16 +1253,6 @@ msgstr "грешка читања датотеке обучавања „%s“" msgid "ignoring lecture file %s: not a regular file" msgstr "занемарујем датотеку обучавања „%s“: није обична датотека" -#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 -#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 -#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688 -#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435 -#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "не могу да отворим „%s“" - #: plugins/sudoers/check.c:283 msgid "" "\n" @@ -1204,7 +1283,7 @@ msgstr "непознат јиб: %u" #: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 #: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 #: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383 +#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 #, c-format msgid "unknown user: %s" msgstr "непознат кориÑник: %s" @@ -1249,7 +1328,7 @@ msgstr "попуњавање поретка: %s: %s" msgid "%s grammar version %d\n" msgstr "%s граматика издање %d\n" -#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:159 #, c-format msgid "unsupported input format %s" msgstr "неподржан Ð·Ð°Ð¿Ð¸Ñ ÑƒÐ»Ð°Ð·Ð° „%s“" @@ -1265,7 +1344,7 @@ msgid "%s: input and output files must be different" msgstr "%s: улазна датотека треба да Ñе разликује од излазне" #: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247 +#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 #: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "не могу да покренем оÑновне вредноÑти ÑудоерÑа" @@ -1311,7 +1390,7 @@ msgid "parse error in %s\n" msgstr "грешка обраде у %s\n" #: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 -#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318 +#: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" msgstr "не могу да пишем у „%s“" @@ -2123,7 +2202,7 @@ msgid "Local IP address and netmask pairs:\n" msgstr "МеÑна ИП адреÑа и парови мрежне маÑке:\n" #: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407 +#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 #, c-format msgid "unknown group: %s" msgstr "непозната група: %s" @@ -2151,8 +2230,8 @@ msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: унутрашња грешка, датотека У/И дневника за догађај %d није отворена" #: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836 -#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487 +#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "не могу да прочитам Ñат" @@ -2235,6 +2314,26 @@ msgstr "грешка у петљи догађаја" msgid "Creation of new SSL_CTX object failed: %s" msgstr "Стварање новог „SSL_CTX“ објекта није уÑпело: %s" +#: plugins/sudoers/log_client.c:216 +#, c-format +msgid "unable to load certificate authority bundle %s" +msgstr "не могу да учитам комплет ауторитета уверења „%s“" + +#: plugins/sudoers/log_client.c:236 +#, c-format +msgid "unable to load certificate %s" +msgstr "не могу да учитам уверење „%s“" + +#: plugins/sudoers/log_client.c:249 +#, c-format +msgid "unable to load private key %s" +msgstr "не могу да учитам лични кључ „%s“" + +#: plugins/sudoers/log_client.c:258 +#, c-format +msgid "Unable to allocate ssl object: %s" +msgstr "Ðе могу да доделим ÑÑл објекат: %s" + #: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format msgid "TLS connection to %s:%s failed: %s" @@ -2413,7 +2512,7 @@ msgstr "неиÑправна оÑобина „LDIF“: %s" msgid "invalid %.*s set by sudo front-end" msgstr "Ñудо челник је поÑтавио неиÑправну „%.*s“" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269 +#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "не могу да обрадим ÑпиÑак адреÑа мреже" @@ -2531,7 +2630,7 @@ msgid "unable to cache gid %u, already exists" msgstr "не могу да ÑмеÑтим у оÑтаву гиб „%u“, већ поÑтоји" #: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619 -#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730 +#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:729 #, c-format msgid "unable to cache group %s" msgstr "не могу да ÑмеÑтим у оÑтаву групу „%s“" @@ -2541,24 +2640,24 @@ msgstr "не могу да ÑмеÑтим у оÑтаву групу „%s“" msgid "unable to cache group %s, already exists" msgstr "не могу да ÑмеÑтим у оÑтаву групу „%s“, већ поÑтоји" -#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928 -#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030 +#: plugins/sudoers/pwutil.c:876 plugins/sudoers/pwutil.c:927 +#: plugins/sudoers/pwutil.c:977 plugins/sudoers/pwutil.c:1029 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "не могу да ÑмеÑтим у оÑтаву ÑпиÑак групе за „%s“, већ поÑтоји" -#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933 -#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035 +#: plugins/sudoers/pwutil.c:882 plugins/sudoers/pwutil.c:932 +#: plugins/sudoers/pwutil.c:983 plugins/sudoers/pwutil.c:1034 #, c-format msgid "unable to cache group list for %s" msgstr "не могу да ÑмеÑтим у оÑтаву ÑпиÑак групе за „%s“" -#: plugins/sudoers/pwutil.c:922 +#: plugins/sudoers/pwutil.c:921 #, c-format msgid "unable to parse groups for %s" msgstr "не могу да обрадим групе за „%s“" -#: plugins/sudoers/pwutil.c:1024 +#: plugins/sudoers/pwutil.c:1023 #, c-format msgid "unable to parse gids for %s" msgstr "не могу да обрадим гид-ове за „%s“" @@ -2915,11 +3014,11 @@ msgstr "" " -s, --speed=број убрзава или уÑпорава излаз\n" " -V, --version приказује податке о издању и излази" -#: plugins/sudoers/testsudoers.c:345 +#: plugins/sudoers/testsudoers.c:344 msgid "\thost unmatched" msgstr "\tдомаћин није поклопљен" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:347 msgid "" "\n" "Command allowed" @@ -2927,7 +3026,7 @@ msgstr "" "\n" "Ðаредба је допуштена" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command denied" @@ -2935,7 +3034,7 @@ msgstr "" "\n" "Ðаредба је одбијена" -#: plugins/sudoers/testsudoers.c:349 +#: plugins/sudoers/testsudoers.c:348 msgid "" "\n" "Command unmatched" @@ -2948,26 +3047,26 @@ msgstr "" msgid "%s is group writable" msgstr "Група може да пише у „%s“" -#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661 +#: plugins/sudoers/timestamp.c:328 plugins/sudoers/timestamp.c:663 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "не могу да Ñкратим датотеку временÑке ознаке на %lld бајта" -#: plugins/sudoers/timestamp.c:847 +#: plugins/sudoers/timestamp.c:860 msgid "ignoring time stamp from the future" msgstr "занемарујем временÑку ознаку из будућноÑти" -#: plugins/sudoers/timestamp.c:870 +#: plugins/sudoers/timestamp.c:883 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "временÑка ознака је превише у будућноÑти: %20.20s" -#: plugins/sudoers/timestamp.c:992 +#: plugins/sudoers/timestamp.c:1005 #, c-format msgid "unable to lock time stamp file %s" msgstr "не могу да закључам датотеку временÑке ознаке „%s“" -#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056 +#: plugins/sudoers/timestamp.c:1049 plugins/sudoers/timestamp.c:1069 #, c-format msgid "lecture status path too long: %s/%s" msgstr "путања Ñтања обучавања је предуга: %s/%s" @@ -3170,6 +3269,9 @@ msgstr "неочекивани прекид реда у ниÑци" msgid "too many levels of includes" msgstr "превише нивоа укључивања" +#~ msgid "unable to get TLS server method: %s" +#~ msgstr "не могу да добавим метод ТЛС Ñервера: %s" + #~ msgid "%s:%u unable to parse \"%s\"" #~ msgstr "„%s:%u“ не могу да обрадим „%s“" @@ -3229,9 +3331,6 @@ msgstr "превише нивоа укључивања" #~ msgid "sudo_ldap_conf_add_ports: port too large" #~ msgstr "sudo_ldap_conf_add_ports: прикључник је превелик" -#~ msgid "unable to lock log file: %s" -#~ msgstr "не могу да закључам датотеку дневника: %s" - #~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n" #~ msgstr "„SSL_повезивање“ није уÑпело: ssl_грешка=%d, Ñпремник=%s\n" diff --git a/plugins/sudoers/po/sudoers.pot b/plugins/sudoers/po/sudoers.pot index a0a9f038e..5fda31aa1 100644 --- a/plugins/sudoers/po/sudoers.pot +++ b/plugins/sudoers/po/sudoers.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.7b1\n" +"Project-Id-Version: sudo 1.9.8\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" +"POT-Creation-Date: 2021-09-01 13:39-0600\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" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "" @@ -41,174 +41,214 @@ msgstr "" msgid "Sorry, try again." msgstr "" -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 gram.y:362 -#: gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 gram.y:496 gram.y:506 -#: gram.y:518 gram.y:562 gram.y:571 gram.y:580 gram.y:589 gram.y:619 gram.y:716 -#: gram.y:724 gram.y:735 gram.y:747 gram.y:766 gram.y:914 gram.y:922 gram.y:932 -#: gram.y:938 gram.y:1060 gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 -#: gram.y:1124 gram.y:1133 gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 -#: gram.y:1700 lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 gram.y:364 +#: gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 gram.y:500 gram.y:510 +#: gram.y:522 gram.y:566 gram.y:575 gram.y:584 gram.y:593 gram.y:712 gram.y:720 +#: gram.y:731 gram.y:743 gram.y:762 gram.y:917 gram.y:922 gram.y:930 gram.y:940 +#: gram.y:946 gram.y:1068 gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 +#: gram.y:1132 gram.y:1141 gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 +#: gram.y:1708 lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 -#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 -#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 -#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 -#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 -#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 -#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 -#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183 -#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 -#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 -#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 -#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 -#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 -#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 -#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 -#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 -#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 -#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 -#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 -#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 -#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 -#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 -#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 -#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 -#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 -#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 -#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 -#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379 -#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408 -#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426 -#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 -#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 -#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 -#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/sssd.c:145 -#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 -#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 -#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 -#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 -#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 -#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 -#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155 -#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 -#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 -#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 +#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 +#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 +#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 +#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 +#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 +#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:646 +#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:769 +#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 +#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:76 +#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 +#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 +#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:425 +#: plugins/sudoers/cvtsudoers_ldif.c:433 plugins/sudoers/cvtsudoers_ldif.c:444 +#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:464 +#: plugins/sudoers/cvtsudoers_ldif.c:472 plugins/sudoers/cvtsudoers_ldif.c:619 +#: plugins/sudoers/defaults.c:652 plugins/sudoers/defaults.c:947 +#: plugins/sudoers/defaults.c:1122 plugins/sudoers/editor.c:190 +#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 +#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:133 +#: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:606 +#: plugins/sudoers/iolog.c:623 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 +#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 +#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 +#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 +#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 +#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 +#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 +#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 +#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 +#: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 +#: plugins/sudoers/ldap_util.c:615 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:108 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:181 +#: plugins/sudoers/logging.c:465 plugins/sudoers/logging.c:485 +#: plugins/sudoers/logging.c:621 plugins/sudoers/match_command.c:297 +#: plugins/sudoers/match_command.c:497 plugins/sudoers/match_command.c:546 +#: plugins/sudoers/match_command.c:618 plugins/sudoers/match_command.c:666 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:201 +#: plugins/sudoers/parse.c:218 plugins/sudoers/parse.c:248 +#: plugins/sudoers/parse.c:265 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse.c:299 plugins/sudoers/parse_ldif.c:153 +#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 +#: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 +#: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 +#: plugins/sudoers/parse_ldif.c:379 plugins/sudoers/parse_ldif.c:396 +#: plugins/sudoers/parse_ldif.c:408 plugins/sudoers/parse_ldif.c:412 +#: plugins/sudoers/parse_ldif.c:426 plugins/sudoers/parse_ldif.c:483 +#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:626 +#: plugins/sudoers/parse_ldif.c:651 plugins/sudoers/parse_ldif.c:709 +#: plugins/sudoers/parse_ldif.c:726 plugins/sudoers/parse_ldif.c:754 +#: plugins/sudoers/parse_ldif.c:761 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 +#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 +#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 +#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:335 +#: plugins/sudoers/sudoers.c:361 plugins/sudoers/sudoers.c:429 +#: plugins/sudoers/sudoers.c:438 plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:833 plugins/sudoers/sudoers.c:971 +#: plugins/sudoers/sudoers.c:1030 plugins/sudoers/sudoers.c:1296 +#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:565 +#: plugins/sudoers/sudoreplay.c:1280 plugins/sudoers/sudoreplay.c:1490 +#: plugins/sudoers/sudoreplay.c:1494 plugins/sudoers/testsudoers.c:120 +#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 +#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 +#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 +#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 +#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 +#: plugins/sudoers/toke_util.c:155 plugins/sudoers/toke_util.c:193 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 +#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 +#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 +#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:938 +#: toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/auth/pam.c:505 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 #: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 #: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 @@ -219,17 +259,17 @@ msgstr "" #: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 #: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 #: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 +#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:424 +#: plugins/sudoers/cvtsudoers_ldif.c:432 plugins/sudoers/cvtsudoers_ldif.c:443 +#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:463 +#: plugins/sudoers/cvtsudoers_ldif.c:471 plugins/sudoers/cvtsudoers_ldif.c:618 +#: plugins/sudoers/defaults.c:652 plugins/sudoers/defaults.c:947 +#: plugins/sudoers/defaults.c:1122 plugins/sudoers/editor.c:190 #: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:606 +#: plugins/sudoers/iolog.c:623 plugins/sudoers/ldap.c:184 #: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 #: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 #: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 @@ -242,23 +282,23 @@ msgstr "" #: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 #: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 #: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/ldap_util.c:292 plugins/sudoers/ldap_util.c:299 +#: plugins/sudoers/ldap_util.c:615 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:108 plugins/sudoers/log_client.c:217 +#: plugins/sudoers/log_client.c:238 plugins/sudoers/log_client.c:251 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:180 plugins/sudoers/logging.c:181 +#: plugins/sudoers/logging.c:464 plugins/sudoers/logging.c:484 +#: plugins/sudoers/logging.c:621 plugins/sudoers/match_command.c:296 +#: plugins/sudoers/match_command.c:496 plugins/sudoers/match_command.c:545 +#: plugins/sudoers/match_command.c:618 plugins/sudoers/match_command.c:665 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:200 +#: plugins/sudoers/parse.c:217 plugins/sudoers/parse.c:247 +#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:287 +#: plugins/sudoers/parse.c:298 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 #: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 @@ -268,34 +308,34 @@ msgstr "" #: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 #: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 #: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:152 +#: plugins/sudoers/policy.c:161 plugins/sudoers/policy.c:170 +#: plugins/sudoers/policy.c:197 plugins/sudoers/policy.c:330 +#: plugins/sudoers/policy.c:345 plugins/sudoers/policy.c:347 +#: plugins/sudoers/policy.c:377 plugins/sudoers/policy.c:386 +#: plugins/sudoers/policy.c:434 plugins/sudoers/policy.c:444 +#: plugins/sudoers/policy.c:453 plugins/sudoers/policy.c:462 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 #: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 #: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:363 +#: plugins/sudoers/set_perms.c:706 plugins/sudoers/set_perms.c:1073 +#: plugins/sudoers/set_perms.c:1380 plugins/sudoers/set_perms.c:1549 #: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 #: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 #: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 #: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 +#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:335 +#: plugins/sudoers/sudoers.c:361 plugins/sudoers/sudoers.c:429 +#: plugins/sudoers/sudoers.c:438 plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:833 plugins/sudoers/sudoers.c:971 +#: plugins/sudoers/sudoers.c:1030 plugins/sudoers/sudoers.c:1296 +#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:565 +#: plugins/sudoers/sudoreplay.c:1280 plugins/sudoers/sudoreplay.c:1490 +#: plugins/sudoers/sudoreplay.c:1494 plugins/sudoers/testsudoers.c:120 #: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 #: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 #: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 @@ -305,58 +345,58 @@ msgstr "" #: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 #: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 #: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:938 +#: toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "" @@ -470,351 +510,585 @@ msgstr "" msgid "%s exists but is not a directory (0%o)" msgstr "" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:797 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "" -#: logsrvd/logsrv_util.c:150 +#: logsrvd/logsrv_util.c:149 #, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" +msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:274 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "" + +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 +msgid "unable to setup listen socket" msgstr "" -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 -msgid "unable to setup listen socket" +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" msgstr "" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 #, c-format -msgid "%s:%d unmatched '[': %s" +msgid "unknown syslog facility %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 #, c-format -msgid "%s:%d invalid config section: %s" +msgid "unknown syslog priority %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1133 #, c-format -msgid "%s:%d invalid configuration line: %s" +msgid "%s:%d unmatched '[': %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1144 #, c-format -msgid "%s:%d expected section name: %s" +msgid "%s:%d invalid config section: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1074 +#: logsrvd/logsrvd_conf.c:1152 #, c-format -msgid "invalid value for %s: %s" +msgid "%s:%d invalid configuration line: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1082 +#: logsrvd/logsrvd_conf.c:1158 #, c-format -msgid "%s:%d unknown key: %s" +msgid "%s:%d expected section name: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" +msgid "%s:%d [%s] illegal key: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:850 #, c-format -msgid "unknown syslog priority %s" +msgid "unable to open log file %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "" @@ -863,177 +1137,163 @@ msgid "reject the command with the given reason" msgstr "" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:265 plugins/sudoers/audit.c:417 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:548 plugins/sudoers/logging.c:642 +#: plugins/sudoers/logging.c:804 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "" @@ -1269,19 +1529,11 @@ msgid "" "\n" msgstr "" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" +msgid "unknown uid %u" msgstr "" #: plugins/sudoers/check_aliases.c:56 @@ -1339,9 +1591,10 @@ msgstr "" msgid "%s: input and output files must be different" msgstr "" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "" @@ -1352,7 +1605,7 @@ msgstr "" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" +msgid "%s: unknown key word %s" msgstr "" #: plugins/sudoers/cvtsudoers.c:521 @@ -1385,7 +1638,7 @@ msgstr "" msgid "parse error in %s\n" msgstr "" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1421,7 +1674,7 @@ msgid "" msgstr "" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "" @@ -1438,12 +1691,12 @@ msgstr "" msgid "unable to format timestamp" msgstr "" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "" "the SUDOERS_BASE environment variable is not set and the -b option was not " "specified." @@ -2046,6 +2299,26 @@ msgstr "" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "" + +#: plugins/sudoers/def_data.c:586 +msgid "Log sub-commands run by the original command" +msgstr "" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2066,52 +2339,62 @@ msgstr "" msgid "%s: no value specified for \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "" @@ -2130,12 +2413,12 @@ msgid "" "sorry, you are not allowed to set the following environment variables: %s" msgstr "" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "" @@ -2175,56 +2458,51 @@ msgstr "" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "" @@ -2273,15 +2551,15 @@ msgstr "" msgid "unable to mix ldap and ldaps URIs" msgstr "" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "" @@ -2294,134 +2572,133 @@ msgstr "" msgid "unable to send audit message" msgstr "" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" "Use \"sudo ./%s\" if this is the \"%s\" you wish to run." msgstr "" -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "" msgstr[1] "" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:883 #, c-format msgid "unable to write log file: %s" msgstr "" @@ -2431,51 +2708,59 @@ msgstr "" msgid "digest for %s (%s) is not in %s form" msgstr "" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:232 +msgid "SELinux RBAC is not supported when intercept mode is enabled" +msgstr "" + +#: plugins/sudoers/parse.c:236 +msgid "SELinux RBAC is not supported when the log_subcmds flag is enabled" +msgstr "" + +#: plugins/sudoers/parse.c:547 #, c-format msgid "" "\n" "LDAP Role: %s\n" msgstr "" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:550 msgid "" "\n" "Sudoers entry:\n" msgstr "" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:552 msgid " RunAsUsers: " msgstr "" -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:567 msgid " RunAsGroups: " msgstr "" -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:577 msgid " Options: " msgstr "" -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:633 msgid " Commands:\n" msgstr "" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:824 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:842 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:860 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:875 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "" @@ -2490,91 +2775,91 @@ msgstr "" msgid "invalid LDIF attribute: %s" msgstr "" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" "Sudoers path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "" @@ -2643,48 +2928,48 @@ msgstr "" msgid "unable to parse gids for %s" msgstr "" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "" @@ -2713,259 +2998,261 @@ msgstr "" msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" +msgid "unknown login class %s" msgstr "" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 #, c-format -msgid "%s/%.2s/%.2s/%.2s: %s" +msgid "invalid time offset %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:342 #, c-format -msgid "%s/timing: %s" +msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:341 +#: plugins/sudoers/sudoreplay.c:347 #, c-format -msgid "%s/%s: %s" +msgid "%s/timing: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "" -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "" -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" "\n" msgstr "" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3156,28 +3443,23 @@ msgstr "" msgid "%s busy, try again later" msgstr "" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" "\n" msgstr "" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3193,11 +3475,11 @@ msgstr "" msgid "empty string" msgstr "" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "" @@ -3205,14 +3487,14 @@ msgstr "" msgid "invalid line continuation" msgstr "" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "" diff --git a/plugins/sudoers/po/uk.mo b/plugins/sudoers/po/uk.mo Binary files differindex d124cc1ea..6fe86a5e5 100644 --- a/plugins/sudoers/po/uk.mo +++ b/plugins/sudoers/po/uk.mo diff --git a/plugins/sudoers/po/uk.po b/plugins/sudoers/po/uk.po index 800c11334..8780caed7 100644 --- a/plugins/sudoers/po/uk.po +++ b/plugins/sudoers/po/uk.po @@ -4,10 +4,10 @@ # Yuri Chornoivan <yurchor@ukr.net>, 2011-2021. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-03 13:06+0300\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-20 14:38+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" "Language: uk\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 20.12.0\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "ÑинтакÑична помилка" @@ -42,29 +42,46 @@ msgstr "*** Дані щодо ЗÐХИСТУ %h ***" msgid "Sorry, try again." msgstr "Вибачте, повторіть Ñпробу." -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -76,16 +93,16 @@ msgstr "Вибачте, повторіть Ñпробу." #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -98,21 +115,21 @@ msgstr "Вибачте, повторіть Ñпробу." #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -123,7 +140,7 @@ msgstr "Вибачте, повторіть Ñпробу." #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -134,13 +151,13 @@ msgstr "Вибачте, повторіть Ñпробу." #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -151,214 +168,237 @@ msgstr "Вибачте, повторіть Ñпробу." #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ потрібний об’єм пам’ÑÑ‚Ñ–" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ñлід вказати шлÑÑ…" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«CWD» мають починатиÑÑ Ð· «/», «~» або «*»" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«CHROOT» мають починатиÑÑ Ð· «/», «~» або «*»" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "ÑинтакÑична помилка, Ñк назву замінника викориÑтано зарезервоване Ñлово %s" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ notbefore" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ notafter" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ” надто великим" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу очікуваннÑ" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "Замінник «%s» вже визначено" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ %s" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdin: %m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ %s: %m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "не вдалоÑÑ Ñтворити відгалуженнÑ" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "не вдалоÑÑ Ñтворити відгалуженнÑ: %m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ канал: %m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (команда продовжуєтьÑÑ) %s" @@ -472,351 +512,585 @@ msgstr "%s: не вказано даних щодо групи, від Ñ–Ð¼ÐµÐ½Ñ msgid "%s exists but is not a directory (0%o)" msgstr "%s Ñ–Ñнує, але не Ñ” каталогом (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "не вдалоÑÑ Ñтворити каталог %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим доÑтупу до %s на Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° чаÑових позначок: %s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "некоректний Ñ€Ñдок у файлі timing: %s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "не вдалоÑÑ Ñтворити UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s: помилка протоколу: помилковий тип Ð´Ð»Ñ %s" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s: помилка протоколу: не виÑтачає %s з AcceptMessage" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° ÑеанÑу" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s: %s не вÑтановлено" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ð¸ шлÑÑ… iolog %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "не вдалоÑÑ Ñтворити шлÑÑ… iolog %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "некоректний файловий деÑкриптор введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "помилка під Ñ‡Ð°Ñ Ñпроби закрити деÑкриптор файла введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %d: %s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "некоректний журнал введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ %s: маємо поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° %s без Ñамого запиÑу" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ точку Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "не вдалоÑÑ Ñкопіювати %s/%s до %s/%s: %s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ %s на %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "не виÑтачає файла журналу введеннÑ-виведеннÑ, %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: неможливо виконати Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¿ÐµÑ€ÐµÐ´ на %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ точку Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ [%lld, %ld] у %s/%s" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ точку Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "не вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· ретранÑлÑтором" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "надто велике Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñервера: %zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ подію до черги обробки" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "неочікуваний Ñтан %d %s" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "помилка Ñкінченного автомата" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "некоректне AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "некоректне RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "некоректне AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s: неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "помилка протоколу" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ type_case %d у %s від %s" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "нерозпізнаний тип ClientMessage" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу до клієнта %s" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "пропущено буфер запиÑу Ð´Ð»Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° %s" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· клієнта %s" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "EOF від %s без належного Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ TLS" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° Ñ” надто довгим: %zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° Ñ” надто великим" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "некоректне ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ віддалену IP-адреÑу" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ дані кориÑтувача до об'єкта SSL: %s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ подію до черги обробки" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "не вдалоÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ñокет Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° дані" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "неочікуваний Ñигнал %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "Ñервер журналу sudo" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "Параметри:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "шлÑÑ… до файла налаштувань" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "показати довідкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– завершити роботу" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "не відгалужувати, не переходити у фоновий режим під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "ймовірніÑÑ‚ÑŒ Ñ€Ð¾Ð·Ñ–Ñ€Ð²Ð°Ð½Ð½Ñ Ð·'єднаннÑ" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "показати дані щодо верÑÑ–Ñ— Ñ– завершити роботу" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "Потрібна верÑÑ–Ñ Protobuf-C 1.3 або новіша" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ÑÑ‚Ñ– ÑкиданнÑ: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s, верÑÑ–Ñ %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "невідомий кориÑтувач %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "невідома група %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ iolog %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s: %s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "Підтримки TLS не передбачено" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: не Ñ” повноцінним запиÑом шлÑхуnot a fully qualified path" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "невідома можливіÑÑ‚ÑŒ syslog %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "невідома пріоритетніÑÑ‚ÑŒ syslog %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d «[» без пари: %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d некоректний розділ налаштувань: %s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d некоректний Ñ€Ñдок налаштувань: %s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d мало бути вказано назву розділу: %s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s: %s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d невідомий ключ: %s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "невідома можливіÑÑ‚ÑŒ syslog %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] заборонений ключ: %s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "невідома пріоритетніÑÑ‚ÑŒ syslog %s" +msgid "unable to open log file %s" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл журналу %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ контекÑÑ‚ Ñервера TLS" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ контекÑÑ‚ ретранÑлÑтора TLS" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "не вдалоÑÑ Ñтворити файл журналу" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "не вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "не вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ файл журналу" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл журналу" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл журналу" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ файл журналу" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "неочікуваний Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð° під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° журналу" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° журналу" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "некоректний файл журналу, неможливо перезапуÑтити" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "не вдалоÑÑ Ð²Ñтановити позицію [%lld, %ld] у файлі журналу %s" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби обробити AcceptMessage" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "помилка під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ введеннÑ-виведеннÑ" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ події Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ñ— журналу" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "помилка під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð¸ обробити RejectMessage" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ події відмови у запиÑÑ– до журналу" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑати до журналу подію виходу" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "журнал вже завершено — його не можна перезапуÑтити" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿ÑƒÑтити журнал" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби обробити AlertMessage" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ події критичного Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð° чаÑових позначок, довжина — %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑати IoBuffer" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑати ChangeWindowSize" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑати CommandSuspend" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "помилка Ñпроби ініціалізації зв'Ñзку TLS із вузлом ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "не вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· вузлом ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ServerHello — пропущено server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "некоректне ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "нерозпізнаний тип ServerMessage" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· ретранÑлÑтора %s (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "назва вузла ретранÑлÑтора не відповідає Ñертифікату" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ з ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "Ñервер-ретранÑлÑтор розірвав з'єднаннÑ" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñервера Ñ” надто великим" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу до ретранÑлÑтора %s (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ ретранÑлÑтора" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби запиÑати до ретранÑлÑтора" @@ -865,177 +1139,163 @@ msgid "reject the command with the given reason" msgstr "відкинути команду із вказаною причиною" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "припинити Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… піÑÐ»Ñ Ð´Ð¾ÑÑÐ³Ð½ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— тривалоÑÑ‚Ñ–" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "перевірити Ñервер аудиту надÑиланнÑм вибраного журналу введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ n разів у паралельному режимі" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ пошук %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ IP-адреÑу Ñервера" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° Ñ” надто довгим: %zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s: буфер запиÑу вже викориÑтовуєтьÑÑ" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "неочікувана Ð¿Ð¾Ð´Ñ–Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ â€” %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s: неочікуваний Ñтан — %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "отримано Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку від Ñервера: %s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "отримано Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ Ñервера: %s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ type_case — %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· Ñервера" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "передчаÑне Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñервера Ñ” надто великим: %u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ñервері" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "Ñлід вказати одночаÑно точку перезапуÑку та ідентифікатор журналу введеннÑ-виведеннÑ" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "точку перезапуÑку не можна вÑтановлювати, Ñкщо не надÑилаєтьÑÑ Ð¶Ð¾Ð´Ð½Ð¸Ñ… даних введеннÑ-виведеннÑ" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "передчаÑний вихід зі Ñтаном %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "на Ñервер надіÑлано дані щодо чаÑу, Ñкий лишивÑÑ [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "отримано точку внеÑку від Ñервера [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "ÑталоÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° ÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð²'Ñзку TLS" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "не вдалоÑÑ Ð²Ñтановити подію" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "Ðе вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ TLS: %s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити об'єкт SSL у пам'ÑÑ‚Ñ–: %s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ Ñокет до об'єкта SSL: %s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ контекÑÑ‚ TLS" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "не вдалоÑÑ Ð²Ñтановити ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ TLS 1.2 у %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "не вдалоÑÑ Ð²Ñтановити ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ TLS 1.3 у %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "не вдалоÑÑ Ñтворити контекÑÑ‚ TLS: %s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "не вдалоÑÑ Ð²Ñтановити мінімальну верÑÑ–ÑŽ протоколу у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TLS 1.2: %s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "не вдалоÑÑ Ð²Ñтановити параметри Діфі-Гелмана: %s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ параметри Діфі-Гелмана: %s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані щодо пори доби" @@ -1275,20 +1535,12 @@ msgstr "" " #3) КориÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ¸Ð¼Ð¸ правами розширює Ñферу відповідальноÑÑ‚Ñ–.\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uid: %u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "невідомий кориÑтувач: %s" +msgid "unknown uid %u" +msgstr "невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uid %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1345,9 +1597,10 @@ msgstr "непідтримуваний формат виведеннÑ, %s" msgid "%s: input and output files must be different" msgstr "%s: файли вхідних Ñ– вихідних даних мають бути різними файлами" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sudoers" @@ -1358,8 +1611,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s: невідоме ключове Ñлово: %s" +msgid "%s: unknown key word %s" +msgstr "%s: невідоме ключове Ñлово %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1391,7 +1644,7 @@ msgstr "помилка обробки у %s поблизу Ñ€Ñдка %d\n" msgid "parse error in %s\n" msgstr "помилка обробки у %s\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1447,7 +1700,7 @@ msgstr "" " -V, --version вивеÑти дані щодо верÑÑ–Ñ— Ñ– завершити роботу" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "невідомий Ð·Ð°Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… параметрів «%s»" @@ -1464,12 +1717,12 @@ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ гринвіцький чаÑ" msgid "unable to format timestamp" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð°Ñового штампа" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "забагато запиÑів sudoers, макÑимальна кількіÑÑ‚ÑŒ — %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "не вÑтановлено Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— Ñередовища SUDOERS_BASE Ñ– не вказано параметра -b." @@ -2061,6 +2314,26 @@ msgstr "Увімкнути підтримку RBAC SELinux" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "ШлÑÑ… до файла, Ñкий було Ñтворено під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ запуÑку sudo: %s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "Перехоплювати подальші команди Ñ– заÑтоÑовувати до них Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ sudoers" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "ВеÑти журнал уÑÑ–Ñ… дочірніх процеÑів, Ñкі запущено командою" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "ЗапиÑувати до журналу Ñтан виходу команд" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð½Ð°Ñтупних команд у перехопленому ÑеанÑÑ– Ñлід пройти розпізнаваннÑ" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "Дозволити перехопленій команді запуÑкати програми зі вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ setuid або setgid" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2081,52 +2354,62 @@ msgstr "%s:%d:%d: не вказано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s»" msgid "%s: no value specified for \"%s\"" msgstr "%s: не вказано Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s»" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d:%d: некоректний оператор «%c=» Ð´Ð»Ñ Â«%s»" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%s: некоректний оператор «%c=» Ð´Ð»Ñ Â«%s»" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: параметру «%s» не потрібно передавати значеннÑ" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: параметру «%s» не потрібно передавати значеннÑ" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s:%d:%d: некоректний тип Defaults, 0x%x, Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: некоректний тип Defaults, 0x%x, Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» Ñ” некоректним Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«%s» Ñ” некоректним Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%s»" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s» має починатиÑÑ Ð· «/», «~» або «*»" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s» має починатиÑÑ Ð· «/», «~» або «*»" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s» має починатиÑÑ Ð· «/»" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Â«%s» має починатиÑÑ Ð· «/»" @@ -2144,12 +2427,12 @@ msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ Ñередовище" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "вибачте, вам не дозволено вÑтановлювати такі змінні Ñередовища: %s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "помилка обробки у %s поблизу Ñ€Ñдка %d" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "помилка обробки у %s" @@ -2189,56 +2472,51 @@ msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñимвол «group_plugin» у %s" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: неÑуміÑна оÑновна верÑÑ–Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ° обробки груп %d, мало бути — %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ IP-адреÑу «%s»" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ маÑку мережі «%s»" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "Пари локальних IP-Ð°Ð´Ñ€ÐµÑ Ñ– маÑок мережі:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "невідома група: %s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ файл поÑлідовноÑÑ‚Ñ–" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "не вдалоÑÑ Ð·Ð´Ñ–Ð¹Ñнити Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ файла журналу введеннÑ-виведеннÑ: %s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "не вдалоÑÑ Ñтворити %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, файл журналу введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ñ— %d не відкрито" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ‡Ð°Ñ Ð½Ð° годиннику" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, некоректний Ñигнал %d" @@ -2285,15 +2563,15 @@ msgstr "непідтримуваний тип адреÑи LDAP: %s" msgid "unable to mix ldap and ldaps URIs" msgstr "не можна викориÑтовувати Ñуміш з Ð°Ð´Ñ€ÐµÑ ldap Ñ– ldaps" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ sudoOption: %s%s%s" @@ -2306,107 +2584,111 @@ msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ÑиÑтему аудита" msgid "unable to send audit message" msgstr "не вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°ÑƒÐ´Ð¸Ñ‚Ð°" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "помилка у циклі обробки подій" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Ðе вдалоÑÑ Ñтворити об'єкт SSL_CTX: %s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ комплект Ñлужби Ñертифікації %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñертифікат %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ закритий ключ %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити об'єкт SSL у пам'ÑÑ‚Ñ–: %s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "Ðе вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ TLS із %s:%s: %s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "Спроба ініціалізувати TLS завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "Спроба узгодити зв'Ñзок TLS завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, некоректний Ñтан виходу %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "втрачено зв’Ñзок з Ñервером журналу" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "не вказано буфер запиÑу" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "не вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· Ñервером журналу" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "кориÑтувача немає у ÑпиÑку sudoers" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "кориÑтувача не уповноважено на дії на вузлі" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ заборонено" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s немає у файлі sudoers. Ð—Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ подію додано до звіту.\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s заборонено виконувати sudo на %s. Ð—Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾ подію додано до звіту.\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Вибачте, кориÑтувач %s не має права виконувати sudo на %s.\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Вибачте, кориÑтувач %s не має права виконувати «%s%s%s» від імені %s%s%s на %s.\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2415,7 +2697,7 @@ msgstr "" "пропущено «%s» знайдений у «.»\n" "СкориÑтайтеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ «sudo ./%s», Ñкщо вам потрібно виконати Ñаме «%s»." -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2424,20 +2706,15 @@ msgstr[1] "%u невдалих Ñпроби Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ" msgstr[2] "%u невдалих Ñпроб Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ" msgstr[3] "одна невдала Ñпроба Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби розпізнаваннÑ" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "Ñлід вказати пароль" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл журналу: %s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ файла журналу: %s" @@ -2447,7 +2724,7 @@ msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ файла журн msgid "digest for %s (%s) is not in %s form" msgstr "контрольну Ñуму Ð´Ð»Ñ %s (%s) подано не у формі %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2456,7 +2733,7 @@ msgstr "" "\n" "Роль LDAP: %s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2464,38 +2741,38 @@ msgstr "" "\n" "Ð—Ð°Ð¿Ð¸Ñ sudoers:\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " КориÑтувачі Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку: " -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " Групи Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку: " -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " Параметри: " -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " Команди:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "ВідповідніÑÑ‚ÑŒ запиÑів Defaults Ð´Ð»Ñ %s на %s:\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку від імені Ñ– команд Ð´Ð»Ñ %s:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "КориÑтувач %s має право виконувати на %s такі команди:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "КориÑтувач %s не має права виконувати sudo на %s.\n" @@ -2510,64 +2787,64 @@ msgstr "ігноруємо неповний Ð·Ð°Ð¿Ð¸Ñ sudoRole: cn: %s" msgid "invalid LDIF attribute: %s" msgstr "некоректний атрибут LDIF: %s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "оболонкою sudo вÑтановлено некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° %.*s" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ ÑпиÑок мережевих адреÑ" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача не вÑтановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "ідентифікатор кориÑтувача не вÑтановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "ідентифікатор групи не вÑтановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "назву вузла не вÑтановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "некоректний робочий каталог: %s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "некоректний каталог chroot: %s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: некоректні прапорці режиму від оболонки sudo: 0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Додаток правил sudoers верÑÑ–Ñ— %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Граматична перевірка файла sudoers верÑÑ–Ñ— %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2576,27 +2853,27 @@ msgstr "" "\n" "ШлÑÑ… до sudoers: %s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "ШлÑÑ… до nsswitch: %s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ШлÑÑ… до ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ШлÑÑ… до ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "неможливо зареєÑтрувати процедуру Ð¿ÐµÑ€ÐµÑ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ %d (верÑÑ–Ñ %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "неможливо ÑкаÑувати реєÑтрацію процедури Ð¿ÐµÑ€ÐµÑ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ %d (верÑÑ–Ñ %d.%d)" @@ -2665,48 +2942,48 @@ msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ запиÑи груп %s" msgid "unable to parse gids for %s" msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ запиÑи ідентифікаторів груп %s" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтека доÑтупу" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ Ñтека доÑтупу" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ ідентифікатор групи (gid) root" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ gid на runas" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "не вдалоÑÑ Ð²Ñтановити вектор групи виконаннÑ" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ uid на runas" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ gid на sudoers" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "забагато процеÑів" @@ -2735,252 +3012,254 @@ msgstr "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ джерело SSS. ЧРmsgid "unable to find symbol \"%s\" in %s" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñимвол «%s» у %s" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "проблема з типовими запиÑами" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "не знайдено коректних джерел даних sudoers, Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "кориÑтувачеві заборонено змінювати кореневий каталог на %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "вам не дозволено викориÑтовувати параметр -R з %s" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "кориÑтувачеві заборонено змінювати каталог на %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "вам не дозволено викориÑтовувати параметр -D з %s" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "не вказано команду" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers вказує, що sudo не можна кориÑтуватиÑÑ Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ від root" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "кориÑтувачеві заборонено перевизначати Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ closefrom" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "вам не дозволено викориÑтовувати параметр -C" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "влаÑник чаÑового штампа (%s): не знайдено кориÑтувача з таким іменем" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "немає tty" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "вибачте, Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ sudo вашому кориÑтувачеві потрібен tty" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "некоректний Ð·Ð°Ð¿Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸ Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача %s: %s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "команда у поточному каталозі" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "кориÑтувачеві заборонено вÑтановлювати Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "вибачте, вам не дозволено вÑтановлювати Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "кориÑтувачеві заборонено зберігати Ñередовище" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "вибачте, вам не дозволено зберігати Ñередовище" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "надто довга команда" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "Ðемає потреби у запуÑку sudoedit за допомогою sudo" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ stat Ð´Ð»Ñ %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s не Ñ” звичайним файлом" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s належить uid %u, має належати %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ «%s» можливий Ð´Ð»Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ кориÑтувача" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s належить gid %u, має належати %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "викориÑтовувати «-c %s» може лише root" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "невідомий ÐºÐ»Ð°Ñ Ð²Ñ…Ð¾Ð´Ñƒ: %s" +msgid "unknown login class %s" +msgstr "невідомий ÐºÐ»Ð°Ñ Ð²Ñ…Ð¾Ð´Ñƒ %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ адреÑу вузла %s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "некоректний параметр фільтруваннÑ: %s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑ. очікуваннÑ: %s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "некоректний коефіцієнт швидкоÑÑ‚Ñ–: %s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "некоректний зÑув чаÑу %s" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/розклад за чаÑом: %s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑеанÑу sudo: %s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²ÐµÑти tty у режим без обробки даних" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "ПопередженнÑ: розміри вашого термінала Ñ” замалими Ð´Ð»Ñ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¾Ð³Ð¾ показу журналу.\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Ð’Ñтановлено формат журналу %d x %d, тоді Ñк формат термінала — %d x %d." -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾, натиÑніть будь-Ñку клавішу, щоб повернутиÑÑ Ð´Ð¾ термінала." -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "неоднозначний вираз «%s»" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "зайва дужка, «)», у виразі" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "невідомий ключ пошуку «%s»" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s потребує Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "некоректний формальний вираз: %s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "не вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ дату «%s»" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "зайва дужка, «(», у виразі" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "помилкове завершальне «or»" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "помилкове завершальне «!»" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "невідомий тип пошуку %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "кориÑтуваннÑ: %s [-hnRS] [-d каталог] [-m чиÑло] [-s чиÑло] ідентифікатор\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "викориÑтаннÑ: %s [-h] [-d каталог] -l [вираз Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2989,7 +3268,7 @@ msgstr "" "%s — Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñ–Ð² ÑеанÑів sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3201,21 +3480,16 @@ msgstr "%s: вдала обробка\n" msgid "%s busy, try again later" msgstr "%s зайнÑто, повторіть Ñпробу пізніше" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "не вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "Редагувати попри уÑе? [y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "ПопередженнÑ: %s:%d:%d: не викориÑтано %s «%s»" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3224,7 +3498,7 @@ msgstr "" "%s — безпечне Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3248,11 +3522,11 @@ msgstr "" msgid "empty string" msgstr "порожній Ñ€Ñдок" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð°" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð° група" @@ -3260,18 +3534,21 @@ msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð¼ÐµÑ€ÐµÐ¶ÐµÐ²Ð° група" msgid "invalid line continuation" msgstr "некоректне Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ Ñ€Ñдка" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "некоректна адреÑа IPv6" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "неочікуваний розрив Ñ€Ñдків у Ñ€Ñдку" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "занадто виÑокий рівень вкладеноÑÑ‚Ñ–" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d невідомий ключ: %s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑпоÑіб TLS Ñервера: %s" diff --git a/plugins/sudoers/po/zh_CN.mo b/plugins/sudoers/po/zh_CN.mo Binary files differindex fcae64194..43d962565 100644 --- a/plugins/sudoers/po/zh_CN.mo +++ b/plugins/sudoers/po/zh_CN.mo diff --git a/plugins/sudoers/po/zh_CN.po b/plugins/sudoers/po/zh_CN.po index d780d3ac4..90a2de208 100644 --- a/plugins/sudoers/po/zh_CN.po +++ b/plugins/sudoers/po/zh_CN.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-05 21:23-0400\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-22 18:44-0400\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" @@ -17,9 +17,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "è¯æ³•é”™è¯¯" @@ -43,29 +43,46 @@ msgstr "*** %h å®‰å…¨ä¿¡æ¯ ***" msgid "Sorry, try again." msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -77,16 +94,16 @@ msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -99,21 +116,21 @@ msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -124,7 +141,7 @@ msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -135,13 +152,13 @@ msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -152,214 +169,237 @@ msgstr "对ä¸èµ·ï¼Œè¯·é‡è¯•ã€‚" #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "æ— æ³•åˆ†é…内å˜" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "摘è¦éœ€è¦è·¯å¾„å‚æ•°" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "“CWDâ€çš„值必须以“/â€ã€â€œ~â€æˆ–“*â€å¼€å¤´" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "“CHROOTâ€çš„值必须以“/â€ã€â€œ~â€æˆ–“*â€å¼€å¤´" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "è¯æ³•é”™è¯¯ï¼Œä¿ç•™å— %s 被用作别å" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "æ— æ•ˆçš„ notbefore 值" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "æ— æ•ˆçš„ notafter 值" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "超时值过大" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "æ— æ•ˆçš„è¶…æ—¶å€¼" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "别å“%sâ€å·²å®šä¹‰è¿‡" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s:%s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "内部错误,%s 溢出" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "æ— æ³• dup stdin:%m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "æ— æ³•æ‰§è¡Œ %s:%m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "æ— æ³•æ‰§è¡Œ fork" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "æ— æ³•æ‰§è¡Œ fork:%m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "æ— æ³•æ‰“å¼€ç®¡é“:%m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s:%s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s:(命令继ç»æ‰§è¡Œ) %s" @@ -473,353 +513,604 @@ msgstr "%s:缺少 runas 组 å—段" msgid "%s exists but is not a directory (0%o)" msgstr "%s å˜åœ¨ï¼Œä½†ä¸æ˜¯ç›®å½•(0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "æ— æ³•åˆ›å»ºç›®å½• %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "æ— æ³•å°† %s 的模å¼æ›´æ”¹ä¸º 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "读å–æ—¶åºæ–‡ä»¶å‡ºé”™ï¼š%s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "æ— æ•ˆçš„æ—¶åºæ–‡ä»¶è¡Œï¼š%s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "æ— æ³•ç”Ÿæˆ UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s:å议错误:%s 的错误类型" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s:å议错误:AcceptMessage ä¸ %s 缺失" + +#: logsrvd/iolog_writer.c:446 +#, fuzzy, c-format +#| msgid "%s: unable to allocate options: %s" +msgid "%s: unable to format session id" +msgstr "%sï¼šæ— æ³•åˆ†é…选项:%s" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s:%s 未设置" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, fuzzy, c-format +#| msgid "unable to open log file: %s" +msgid "unable to expand iolog path %s" +msgstr "æ— æ³•æ‰“å¼€æ—¥å¿—æ–‡ä»¶ï¼š%s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "æ— æ³•åˆ›å»º iolog 路径 %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "æ— æ•ˆçš„ iofd %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "å…³é— iofd %d 时出错:%s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "æ— æ•ˆçš„ I/O 日志 %s:%s 被引用但ä¸å˜åœ¨" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, fuzzy, c-format +#| msgid "unable to find resume point [%lld, %ld] in %s/%s" +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "æ— æ³•æ‰¾åˆ°æ¢å¤ç‚¹ [%lld, %ld](在 %s/%s ä¸ï¼‰" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "æ— æ³•æ‰“å¼€ %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "æ— æ³•æ‰“å¼€ %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "æ— æ³•å¤åˆ¶ %s/%s 到 %s/%s:%s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "æ— æ³•å°† %s é‡å‘½å为 %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "缺失 I/O 日志文件 %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%sï¼šæ— æ³•å‘å‰æŸ¥æ‰¾ %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" +#: logsrvd/logsrv_util.c:149 +#, fuzzy, c-format +#| msgid "unable to find resume point [%lld, %ld] in %s/%s" +msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "æ— æ³•æ‰¾åˆ°æ¢å¤ç‚¹ [%lld, %ld](在 %s/%s ä¸ï¼‰" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +#, fuzzy +#| msgid "unable to connect to relay host" +msgid "unable to connect to relay" +msgstr "æ— æ³•è¿žæŽ¥åˆ°ä¸ç»§ä¸»æœº" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "æœåŠ¡å™¨æ¶ˆæ¯è¿‡å¤§ï¼š%zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "æ— æ³•å°†äº‹ä»¶æ·»åŠ åˆ°é˜Ÿåˆ—" + +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, fuzzy, c-format +#| msgid "%s: unexpected state %d" +msgid "unexpected state %d for %s" +msgstr "%sï¼šæœªé¢„æœŸçš„çŠ¶æ€ %d" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "状æ€æœºé”™è¯¯" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "æ— æ•ˆçš„ AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "æ— æ•ˆçš„ RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "æ— æ•ˆçš„ AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s:未预期的 IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "å议错误" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, fuzzy, c-format +#| msgid "%s: unexpected type_case value %d" +msgid "unexpected type_case value %d in %s from %s" +msgstr "%s:未预期的 type_case 值 %d" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "æ— æ³•è¯†åˆ«çš„ ClientMessage 类型" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, fuzzy, c-format +#| msgid "timeout writing to relay" +msgid "timed out writing to client %s" +msgstr "写入ä¸ç»§æ—¶è¶…æ—¶" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, fuzzy, c-format +#| msgid "missing write buffer" +msgid "missing write buffer for client %s" +msgstr "缺失写缓冲" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "从客户端 %s 读å–超时" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "客户端消æ¯è¿‡å¤§ï¼š%zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "客户端消æ¯è¿‡é•¿" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "æ— æ•ˆçš„ ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "æ— æ³•èŽ·å–远程 IP 地å€" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "æ— æ³•å°†ç”¨æˆ·æ•°æ®é™„åŠ åˆ° ssl 对象上:%s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "æ— æ³•å°†äº‹ä»¶æ·»åŠ åˆ°é˜Ÿåˆ—" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "æ— æ³•è®¾ç½®ç›‘å¬å¥—接å—" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "æœªé¢„æœŸçš„ä¿¡å· %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "sudo 日志æœåŠ¡å™¨" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "选项:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "é…置文件路径" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "显示帮助信æ¯å¹¶é€€å‡º" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "ä¸è¦è¿›è¡Œ fork,在å‰å°è¿è¡Œ" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "显示版本信æ¯å¹¶é€€å‡º" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "éœ€è¦ Protobuf-C 1.3 版或更高版本" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "æ— æ•ˆçš„éšæœºä¸¢å¼ƒå€¼ï¼š%s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s 版本 %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "未知用户 %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "未知组 %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "æ— æ³•è§£æž iolog æ¨¡å¼ %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "用于 %s çš„æ— æ•ˆçš„å€¼ï¼š%s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "ä¸æ”¯æŒ TLS" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s:ä¸æ˜¯å®Œå…¨åˆæ ¼çš„路径" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "未知的 syslog 设施 %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "ä½ç½®çš„ syslog 优先级 %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d ä¸åŒ¹é…çš„ '[':%s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d æ— æ•ˆçš„é…置段:%s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d æ— æ•ˆçš„é…置行:%s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "用于 %s çš„æ— æ•ˆçš„å€¼ï¼š%s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d 未知的键:%s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "未知的 syslog 设施 %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "ä½ç½®çš„ syslog 优先级 %s" +msgid "unable to open log file %s" +msgstr "æ— æ³•æ‰“å¼€æ—¥å¿—æ–‡ä»¶ %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "æ— æ³•åˆå§‹åŒ–æœåŠ¡å™¨ TLS 上下文" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "æ— æ³•åˆå§‹åŒ–ä¸ç»§ TLS 上下文" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "æ— æ³•åˆ›å»ºæ—¥å¿—æ–‡ä»¶" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "æ— æ³•é”定 %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "æ— æ³•é”定日志文件" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "æ— æ³•æ‰“å¼€æ—¥å¿—æ–‡ä»¶" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "æ— æ³•å†™å…¥æ—¥å¿—æ–‡ä»¶" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "æ— æ³•é‡å‘½å日志文件" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "读å–日志文件时未预期的 EOF" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "读å–日志文件出错" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "æ— æ•ˆçš„æ—¥å¿—æ–‡ä»¶ï¼Œæ— æ³•é‡æ–°å¯åŠ¨" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, fuzzy, c-format +#| msgid "unable to find resume point [%lld, %ld] in %s/%s" +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "æ— æ³•æ‰¾åˆ°æ¢å¤ç‚¹ [%lld, %ld](在 %s/%s ä¸ï¼‰" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "è§£æž AcceptMessage 出错" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "创建 I/O 日志出错" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "记录接å—事件时出错" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "è§£æž RejectMessage 出错" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "记录拒ç»äº‹ä»¶æ—¶å‡ºé”™" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +#, fuzzy +#| msgid "error logging alert event" +msgid "error logging exit event" +msgstr "记录è¦å‘Šäº‹ä»¶æ—¶å‡ºé”™" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "日志已完æˆï¼Œæ— 法é‡æ–°å¯åŠ¨" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "æ— æ³•é‡æ–°å¯åŠ¨ log" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "è§£æž AlertMessage 出错" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "记录è¦å‘Šäº‹ä»¶æ—¶å‡ºé”™" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, fuzzy, c-format +#| msgid "unable to format timestamp" +msgid "unable to format timing buffer, length %d" +msgstr "æ— æ³•æ ¼å¼åŒ–时间戳" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s:%s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "写入 IoBuffer 出错" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "写入 ChangeWindowSize 出错" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "写入 CommandSuspend 出错" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "与ä¸ç»§ä¸»æœºçš„ TLS æ¡æ‰‹å¤±è´¥" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "æ— æ³•è¿žæŽ¥åˆ°ä¸ç»§ä¸»æœº" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, fuzzy, c-format +#| msgid "invalid ServerHello" +msgid "%s: invalid ServerHello, missing server_id" +msgstr "æ— æ•ˆçš„ ServerHello" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "æ— æ•ˆçš„ ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "æ— æ³•è¯†åˆ«çš„ ServerMessage 类型" #: logsrvd/logsrvd_relay.c:709 +#, fuzzy, c-format +#| msgid "timeout reading from server" +msgid "timed out reading from relay %s (%s)" +msgstr "从æœåŠ¡å™¨è¯»å–超时" + +#: logsrvd/logsrvd_relay.c:711 #, fuzzy #| msgid "timeout reading from server" msgid "timeout reading from relay" msgstr "从æœåŠ¡å™¨è¯»å–超时" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "从ä¸ç»§è¯»å–出错" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "æ— æ³•ä»Žä¸ç»§è¯»å–" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "ä¸ç»§æœåŠ¡å™¨å…³é—了连接" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "æœåŠ¡å™¨æ¶ˆæ¯è¿‡å¤§" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, fuzzy, c-format +#| msgid "timeout writing to relay" +msgid "timed out writing to relay %s (%s)" +msgstr "写入ä¸ç»§æ—¶è¶…æ—¶" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "写入ä¸ç»§æ—¶è¶…æ—¶" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "写入ä¸ç»§æ—¶å‡ºé”™" @@ -849,7 +1140,7 @@ msgstr "" #: logsrvd/sendlog.c:139 msgid "private key file" -msgstr "" +msgstr "ç§é’¥æ–‡ä»¶" #: logsrvd/sendlog.c:141 msgid "do not verify server certificate" @@ -861,184 +1152,170 @@ msgstr "连接到主机时使用的端å£" #: logsrvd/sendlog.c:146 msgid "restart previous I/O log transfer" -msgstr "" +msgstr "é‡æ–°å¼€å§‹å…ˆå‰çš„ I/O æ—¥å¿—ä¼ è¾“" #: logsrvd/sendlog.c:148 msgid "reject the command with the given reason" msgstr "" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "æ— æ³•æŸ¥æ‰¾ %s:%s:%s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "æ— æ³•èŽ·å–æœåŠ¡å™¨ IP 地å€" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "æ— æ³•è¯»å– %s/%s:%s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "客户端消æ¯è¿‡å¤§ï¼š%zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s:写缓冲已在使用" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "未预期的 I/O 事件 %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%sï¼šæœªé¢„æœŸçš„çŠ¶æ€ %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "从æœåŠ¡å™¨æ”¶åˆ°äº†é”™è¯¯æ¶ˆæ¯ï¼š%s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "从æœåŠ¡å™¨æ”¶åˆ°äº†ä¸æ¢æ¶ˆæ¯ï¼š%s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "æ— æ³•è§£åŒ… ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s:未预期的 type_case 值 %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "从æœåŠ¡å™¨è¯»å–超时" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "过早的文件结æŸ" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "æœåŠ¡å™¨æ¶ˆæ¯è¿‡å¤§ï¼š%u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "写入æœåŠ¡å™¨æ—¶è¶…æ—¶" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "过早地退出,状æ€ç 为 %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "TLS æ¡æ‰‹è¶…æ—¶" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "æ— æ³•è®¾ç½®äº‹ä»¶" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS 连接失败:%s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "æ— æ³•åˆ†é… ssl 对象:%s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "æ— æ³•å°†å¥—æŽ¥å—é™„åŠ ç»™ ssl 对象:%s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "æ— æ³•åˆå§‹åŒ– TLS 上下文" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "æ— æ³•å°† TLS 1.2 密ç 套件设置为 %s: %s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "æ— æ³•å°† TLS 1.3 密ç 套件设置为 %s: %s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "æ— æ³•åˆ›å»º TLS 上下文:%s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "æ— æ³•å°†æœ€ä½Žå议版本设置为 TLS 1.2:%s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "æ— æ³•è®¾ç½® diffie-hellman å‚数:%s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "æ— æ³•è¯»å– diffie-hellman å‚数:%s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "æ— æ³•æ‰“å¼€ %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "æ— æ³•èŽ·å–时间" @@ -1280,20 +1557,12 @@ msgstr "" " #3) æƒåŠ›è¶Šå¤§ï¼Œè´£ä»»è¶Šå¤§ã€‚\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "未知的用户 ID:%u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "未知用户:%s" +msgid "unknown uid %u" +msgstr "未知的用户 ID %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1350,9 +1619,10 @@ msgstr "ä¸æ”¯æŒçš„è¾“å‡ºæ ¼å¼ %s" msgid "%s: input and output files must be different" msgstr "%s:输入和输出文件ä¸èƒ½ç›¸åŒ" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "æ— æ³•åˆå§‹åŒ– sudoers 默认值" @@ -1363,8 +1633,8 @@ msgstr "%s:%s:%s:%s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s:未知的关键è¯ï¼š%s" +msgid "%s: unknown key word %s" +msgstr "%sï¼šæœªçŸ¥çš„å…³é”®è¯ %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1396,7 +1666,7 @@ msgstr "%s ä¸ç¬¬ %d 行附近出现解æžé”™è¯¯\n" msgid "parse error in %s\n" msgstr "%s ä¸å‡ºçŽ°è§£æžé”™è¯¯\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1452,7 +1722,7 @@ msgstr "" " -V, --version 显示版本信æ¯å¹¶é€€å‡º" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "未知的默认æ¡ç›®â€œ%sâ€" @@ -1469,12 +1739,12 @@ msgstr "æ— æ³•èŽ·å– GMT 时间" msgid "unable to format timestamp" msgstr "æ— æ³•æ ¼å¼åŒ–时间戳" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "sudoers æ¡ç›®è¿‡å¤šï¼Œæœ€å¤šä¸º %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "没有设置 SUDOERS_BASE 环境å˜é‡ï¼Œå¹¶ä¸”没有指定 -b 选项。" @@ -2069,6 +2339,28 @@ msgstr "å¯ç”¨ SELinux RBAC 支æŒ" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "" + +#: plugins/sudoers/def_data.c:590 +#, fuzzy +#| msgid "Log the output of the command being run" +msgid "Log the exit status of commands" +msgstr "记录所执行命令的输出" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "" + #: plugins/sudoers/defaults.c:185 #, fuzzy, c-format #| msgid "%s:%d: unknown defaults entry \"%s\"" @@ -2091,58 +2383,70 @@ msgstr "%s:%d 没有给“%sâ€æŒ‡å®šå€¼" msgid "%s: no value specified for \"%s\"" msgstr "%s:没有给“%sâ€æŒ‡å®šå€¼" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, fuzzy, c-format +#| msgid "%s:%d no value specified for \"%s\"" +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%s:%d 没有给“%sâ€æŒ‡å®šå€¼" + +#: plugins/sudoers/defaults.c:253 +#, fuzzy, c-format +#| msgid "%s: invalid Defaults type 0x%x for option \"%s\"" +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%1$s:选项“%3$sâ€çš„默认类型 0x%2$x æ— æ•ˆ" + +#: plugins/sudoers/defaults.c:289 #, fuzzy, c-format #| msgid "%s:%d option \"%s\" does not take a value" msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d “%sâ€é€‰é¡¹ä¸å¸¦å€¼" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s:“%sâ€é€‰é¡¹ä¸å¸¦å€¼" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, fuzzy, c-format #| msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:%2$d 选项“%4$sâ€çš„默认类型 0x%3$x æ— æ•ˆ" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:选项“%3$sâ€çš„默认类型 0x%2$x æ— æ•ˆ" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, fuzzy, c-format #| msgid "%s:%d value \"%s\" is invalid for option \"%s\"" msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%1$s:%2$d 值“%3$sâ€å¯¹é€‰é¡¹â€œ%4$sâ€æ— 效" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s:值“%sâ€å¯¹é€‰é¡¹â€œ%sâ€æ— 效" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, fuzzy, c-format #| msgid "%s:%d values for \"%s\" must start with a '/'" msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d “%sâ€çš„值必须以“/â€å¼€å¤´" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, fuzzy, c-format #| msgid "%s: values for \"%s\" must start with a '/'" msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:“%sâ€çš„值必须以“/â€å¼€å¤´" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, fuzzy, c-format #| msgid "%s:%d values for \"%s\" must start with a '/'" msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d “%sâ€çš„值必须以“/â€å¼€å¤´" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s:“%sâ€çš„值必须以“/â€å¼€å¤´" @@ -2160,12 +2464,12 @@ msgstr "æ— æ³•é‡å»ºçŽ¯å¢ƒ" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "对ä¸èµ·ï¼Œæ‚¨æ— æƒè®¾ç½®ä»¥ä¸‹çŽ¯å¢ƒå˜é‡ï¼š%s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "%s ä¸ç¬¬ %d 行附近有解æžé”™è¯¯" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "%s ä¸å‡ºçŽ°è§£æžé”™è¯¯" @@ -2205,56 +2509,51 @@ msgstr "æ— æ³•åœ¨ %s ä¸æ‰¾åˆ°ç¬¦å·â€œgroup_pluginâ€" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s:ä¸å…¼å®¹çš„组æ’ä»¶ä¸»ç‰ˆæœ¬å· %d,应为 %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "æ— æ³•è§£æž IP 地å€åˆ—表“%sâ€" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "æ— æ³•è§£æžç½‘络掩ç “%sâ€" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "本地 IP 地å€å’Œç½‘络掩ç 对:\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "未知组:%s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "æ— æ³•æ›´æ–°åºåˆ—文件" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "æ— æ³•å†™å…¥ I/O 日志文件:%s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "æ— æ³•åˆ›å»º %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s:内部错误,事件 %d çš„ I/O 日志文件未打开" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "æ— æ³•è¯»å–时钟" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%sï¼šå†…éƒ¨é”™è¯¯ï¼Œä¿¡å· %d æ— æ•ˆ" @@ -2301,15 +2600,15 @@ msgstr "ä¸æ”¯æŒçš„ LDAP URI 类型:%s" msgid "unable to mix ldap and ldaps URIs" msgstr "æ— æ³•æ··åˆ ldap å’Œ ldaps URI" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "é‡å¤çš„ sudoOption: %s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "æ— æ³•è½¬æ¢ sudoOption: %s%s%s" @@ -2322,107 +2621,111 @@ msgstr "æ— æ³•æ‰“å¼€å®¡æ ¸ç³»ç»Ÿ" msgid "unable to send audit message" msgstr "æ— æ³•å‘é€å®¡æ ¸æ¶ˆæ¯" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "事件循环ä¸å‡ºé”™" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "创建新的 SSL_CTX 对象失败:%s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "æ— æ³•åŠ è½½æ•°å—è¯ä¹¦è®¤è¯æœºæž„集åˆï¼ˆCA bundle) %s" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "æ— æ³•åŠ è½½è¯ä¹¦ %s" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "æ— æ³•åŠ è½½ç§é’¥ %s" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "æ— æ³•åˆ†é… ssl 对象:%s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "到 %s:%s çš„ TLS 连接失败:%s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS åˆå§‹åŒ–ä¸æˆåŠŸ" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS æ¡æ‰‹ä¸æˆåŠŸ" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%sï¼šå†…éƒ¨é”™è¯¯ï¼Œæ— æ•ˆçš„é€€å‡ºçŠ¶æ€ %d" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "æ— æ³•è§£åŒ… ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "丢失了到日志æœåŠ¡å™¨çš„连接" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "缺失写缓冲" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "æ— æ³•è¿žæŽ¥åˆ°æ—¥å¿—æœåŠ¡å™¨" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "用户ä¸åœ¨ sudoers ä¸" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "用户未获得æ¤ä¸»æœºä¸Šçš„授æƒ" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "命令ç¦æ¢ä½¿ç”¨" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s ä¸åœ¨ sudoers 文件ä¸ã€‚æ¤äº‹å°†è¢«æŠ¥å‘Šã€‚\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s æ— æƒåœ¨ %s 上è¿è¡Œ sudo。æ¤äº‹å°†è¢«æŠ¥å‘Šã€‚\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "对ä¸èµ·ï¼Œç”¨æˆ· %s ä¸èƒ½åœ¨ %s 上è¿è¡Œ sudo。\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "对ä¸èµ·ï¼Œç”¨æˆ· %1$s æ— æƒä»¥ %5$s%6$s%7$s 的身份在 %8$s 上执行 %2$s%3$s%4$s。\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s:找ä¸åˆ°å‘½ä»¤" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2431,26 +2734,21 @@ msgstr "" "忽略在“.â€ä¸æ‰¾åˆ°çš„“%sâ€\n" "请使用“sudo ./%sâ€ï¼Œå¦‚果这是您想è¿è¡Œçš„“%sâ€ã€‚" -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u 次错误密ç å°è¯•" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "认è¯å¤±è´¥" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "需è¦å¯†ç " -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "æ— æ³•æ‰“å¼€æ—¥å¿—æ–‡ä»¶ï¼š%s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "æ— æ³•å†™å…¥æ—¥å¿—æ–‡ä»¶ï¼š %s" @@ -2460,7 +2758,7 @@ msgstr "æ— æ³•å†™å…¥æ—¥å¿—æ–‡ä»¶ï¼š %s" msgid "digest for %s (%s) is not in %s form" msgstr "%s(%s) 的摘è¦ä¸æ˜¯ %s å½¢å¼" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2469,7 +2767,7 @@ msgstr "" "\n" "LDAP 角色:%s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2477,38 +2775,38 @@ msgstr "" "\n" "Sudoers æ¡ç›®ï¼š\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAs 用户:" -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAs 组:" -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " 选项:" -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " 命令:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "åŒ¹é… %2$s 上 %1$s 的默认æ¡ç›®ï¼š\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%s Runas 和命令特定的默认值:\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "用户 %s å¯ä»¥åœ¨ %s 上è¿è¡Œä»¥ä¸‹å‘½ä»¤ï¼š\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "用户 %s æ— æƒåœ¨ %s 上è¿è¡Œ sudo。\n" @@ -2523,65 +2821,65 @@ msgstr "将忽略ä¸å®Œæ•´çš„ sudoRole:cn:%s" msgid "invalid LDIF attribute: %s" msgstr "æ— æ•ˆçš„ LDIF 属性:%s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "sudo å‰ç«¯è®¾ç½®äº†æ— 效的 %.*s" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "æ— æ³•è§£æžç½‘络地å€åˆ—表" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "用户å未通过 sudo å‰ç«¯è®¾ç½®" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "用户 ID 未通过 sudo å‰ç«¯è®¾ç½®" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "组 ID 未通过 sudo å‰ç«¯è®¾ç½®" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "主机å未通过 sudo å‰ç«¯è®¾ç½®" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "æ— æ•ˆçš„å·¥ä½œç›®å½•ï¼š%s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "æ— æ³•çš„ chroot 目录:%s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "æ— æ³•æ‰§è¡Œ %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, fuzzy, c-format #| msgid "invalid %.*s set by sudo front-end" msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "sudo å‰ç«¯è®¾ç½®äº†æ— 效的 %.*s" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers ç–ç•¥æ’件版本 %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers 文件è¯æ³•ç‰ˆæœ¬ %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2590,27 +2888,27 @@ msgstr "" "\n" "Sudoers 路径:%s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 路径:%s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 路径:%s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 路径:%s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "æ— æ³•æ³¨å†Œç±»åž‹ä¸º %d çš„é’©å(hook)(版本 %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "æ— æ³•å–消注册类型为 %d çš„é’©å(hook)(版本 %d.%d)" @@ -2679,48 +2977,48 @@ msgstr "æ— æ³•å¯¹ %s 解æžç»„" msgid "unable to parse gids for %s" msgstr "æ— æ³•è§£æž %s 的组 ID" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "æƒé™å †æ ˆä¸Šæº¢" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "æƒé™å †æ ˆä¸‹æº¢" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "æ— æ³•åˆ‡æ¢ä¸º root 组 ID" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "æ— æ³•åˆ‡æ¢ä¸º runas 组 ID" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "æ— æ³•è®¾ç½® runas 组å‘é‡" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "æ— æ³•åˆ‡æ¢ä¸º runas 用户 ID" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "æ— æ³•åˆ‡æ¢ä¸º sudoers 组 ID" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "进程过多" @@ -2749,254 +3047,258 @@ msgstr "æ— æ³•åˆå§‹åŒ– SSS 资æºã€‚您的计算机上安装 SSSD 了å—?" msgid "unable to find symbol \"%s\" in %s" msgstr "æ— æ³•åœ¨ %s ä¸æ‰¾åˆ°ç¬¦å·â€œ%sâ€" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "默认æ¡ç›®æœ‰é—®é¢˜" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "没有找到有效的 sudoers 资æºï¼Œé€€å‡º" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "用户ä¸å…è®¸å°†æ ¹ç›®å½•è®¾ç½®ä¸º %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, fuzzy, c-format #| msgid "you are not permitted to use the -C option" msgid "you are not permitted to use the -R option with %s" msgstr "æ‚¨æ— æƒä½¿ç”¨ -C 选项" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "用户ä¸å…许将目录å˜æ›´ä¸º %s" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, fuzzy, c-format #| msgid "you are not permitted to use the -C option" msgid "you are not permitted to use the -D option with %s" msgstr "æ‚¨æ— æƒä½¿ç”¨ -C 选项" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "未指定命令" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers 指定 root ä¸å…许执行 sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "æ‚¨æ— æƒä½¿ç”¨ -C 选项" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "时间戳所有者(%s)ï¼šæ— æ¤ç”¨æˆ·" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "æ— ç»ˆç«¯" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "抱æ‰ï¼Œæ‚¨å¿…须拥有一个终端æ¥æ‰§è¡Œ sudo" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "用户 %s çš„æ— æ•ˆ shell:%s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "当å‰ç›®å½•ä¸çš„命令" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "ä¸å…许用户设置超时时间" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "抱æ‰ï¼Œæ‚¨æ— æƒè®¾ç½®è¶…时时间" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "ä¸å…许用户ä¿ç•™çŽ¯å¢ƒ" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "抱æ‰ï¼Œæ‚¨æ— æƒä¿ç•™çŽ¯å¢ƒ" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "命令过长" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit æ— éœ€ç»ç”± sudo è¿è¡Œ" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "æ— æ³•è¯»å– %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "æ— æ³• stat %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s ä¸æ˜¯å¸¸è§„文件" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s 属于用户 ID %u,应为 %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s å¯è¢«ä»»ä½•äººå†™" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s 属于组 ID %u,应为 %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "åªæœ‰ root æ‰èƒ½ä½¿ç”¨â€œ-c %sâ€" -#: plugins/sudoers/sudoers.c:1125 -#, c-format -msgid "unknown login class: %s" +#: plugins/sudoers/sudoers.c:1180 +#, fuzzy, c-format +#| msgid "unknown login class: %s" +msgid "unknown login class %s" msgstr "未知的登录类别:%s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "æ— æ³•è§£æžä¸»æœºï¼š%s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "æ— æ•ˆçš„è¿‡æ»¤å™¨é€‰é¡¹ï¼š%s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "æ— æ•ˆçš„æœ€å¤§ç‰å¾…:%s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "æ— æ³•çš„é€Ÿåº¦ç³»æ•°ï¼š%s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, fuzzy, c-format +#| msgid "invalid timeout value" +msgid "invalid time offset %s" +msgstr "æ— æ•ˆçš„è¶…æ—¶å€¼" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/æ—¶åºï¼š%s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s:%s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "回放 sudo 会è¯ï¼š%s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "æ— æ³•å°†ç»ˆç«¯è®¾ä¸ºåŽŸå§‹æ¨¡å¼" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "è¦å‘Šï¼šæ‚¨çš„终端尺寸太å°ï¼Œä¸èƒ½æ£å¸¸åœ°å›žæ”¾æ—¥å¿—。\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "æ—¥å¿—çš„å‡ ä½•å°ºå¯¸ä¸º %dx%dï¼Œæ‚¨ç»ˆç«¯çš„å‡ ä½•å°ºå¯¸ä¸º %dx%d。" -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "回放完æˆï¼Œè¯·æŒ‰ä»»æ„键返回终端。" -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "有æ§ä¹‰çš„表达å¼â€œ%sâ€" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "表达å¼ä¸çš„“)â€ä¸åŒ¹é…" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "未知的æœç´¢è¯â€œ%sâ€" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s 需è¦å‚æ•°" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "æ— æ•ˆçš„æ£åˆ™è¡¨è¾¾å¼ï¼š%s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "æ— æ³•è§£æžæ—¥æœŸâ€œ%sâ€" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "表达å¼ä¸çš„“(â€ä¸åŒ¹é…" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "éžæ³•çš„结尾å—符“orâ€" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "éžæ³•çš„结尾å—符“!â€" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "未知的æœç´¢ç±»åž‹ %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "用法:%s [-hnRS] [-d 目录] [-m 数值] [-s 数值] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "用法:%s [-h] [-d 目录] -l [æœç´¢è¡¨è¾¾å¼]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -3005,7 +3307,7 @@ msgstr "" "%s - 回放 sudo 会è¯è®°å½•\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3217,21 +3519,16 @@ msgstr "%s:解æžæ£ç¡®\n" msgid "%s busy, try again later" msgstr "%s 忙,请ç¨åŽé‡è¯•" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "æ— æ³•é”定 %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "ä»ç„¶ç¼–辑?[y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "è¦å‘Šï¼š%s:%d:%d:未使用的 %s“%sâ€" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3240,7 +3537,7 @@ msgstr "" "%s - 安全地编辑 sudoers 文件\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3264,11 +3561,11 @@ msgstr "" msgid "empty string" msgstr "空å—符串" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "空组" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "" @@ -3278,18 +3575,21 @@ msgstr "" msgid "invalid line continuation" msgstr "æ— æ•ˆçš„è®¤è¯ç±»åž‹" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "æ— æ•ˆçš„ IPv6 地å€" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "å—符串ä¸æœªé¢„期的æ¢è¡Œ" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "include 嵌套层数过多" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d 未知的键:%s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "æ— æ³•èŽ·å– TLS æœåŠ¡å™¨æ–¹æ³•ï¼š%s" @@ -3370,9 +3670,6 @@ msgstr "include 嵌套层数过多" #~ msgid "Warning: cycle in %s `%s'" #~ msgstr "è¦å‘Šï¼šåœ¨ %s “%sâ€ä¸å¾ªçŽ¯" -#~ msgid "Warning: %s `%s' referenced but not defined" -#~ msgstr "è¦å‘Šï¼šå¼•ç”¨äº† %s “%sâ€ä½†å°šæœªå®šä¹‰" - #~ msgid "Warning: unused %s `%s'" #~ msgstr "è¦å‘Šï¼š%s “%sâ€æœªä½¿ç”¨" diff --git a/plugins/sudoers/po/zh_TW.mo b/plugins/sudoers/po/zh_TW.mo Binary files differindex 3e93319d3..bcd7052ba 100644 --- a/plugins/sudoers/po/zh_TW.mo +++ b/plugins/sudoers/po/zh_TW.mo diff --git a/plugins/sudoers/po/zh_TW.po b/plugins/sudoers/po/zh_TW.po index 56b8c6d87..74b201540 100644 --- a/plugins/sudoers/po/zh_TW.po +++ b/plugins/sudoers/po/zh_TW.po @@ -6,10 +6,10 @@ # Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.7b1\n" +"Project-Id-Version: sudoers 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-05-01 16:27-0600\n" -"PO-Revision-Date: 2021-05-09 20:32+0800\n" +"POT-Creation-Date: 2021-08-19 09:50-0600\n" +"PO-Revision-Date: 2021-08-21 18:25+0800\n" "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n" "Language: zh_TW\n" @@ -18,9 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.3\n" +"X-Generator: Poedit 3.0\n" -#: confstr.sh:1 gram.y:1183 +#: confstr.sh:1 gram.y:1191 msgid "syntax error" msgstr "語法錯誤" @@ -44,29 +44,46 @@ msgstr "*** %h é ˆçŸ¥çš„å®‰å…¨è³‡è¨Š ***" msgid "Sorry, try again." msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" -#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 -#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 -#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580 -#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747 -#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060 -#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133 -#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700 -#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797 -#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125 +#: gram.y:235 gram.y:302 gram.y:311 gram.y:320 gram.y:330 gram.y:340 +#: gram.y:364 gram.y:391 gram.y:400 gram.y:408 gram.y:417 gram.y:426 +#: gram.y:500 gram.y:510 gram.y:522 gram.y:566 gram.y:575 gram.y:584 +#: gram.y:593 gram.y:712 gram.y:720 gram.y:731 gram.y:743 gram.y:762 +#: gram.y:917 gram.y:922 gram.y:930 gram.y:940 gram.y:946 gram.y:1068 +#: gram.y:1077 gram.y:1085 gram.y:1094 gram.y:1103 gram.y:1132 gram.y:1141 +#: gram.y:1149 gram.y:1239 gram.y:1351 gram.y:1658 gram.y:1708 +#: lib/eventlog/eventlog.c:308 lib/eventlog/eventlog.c:381 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:862 +#: lib/eventlog/eventlog.c:1146 lib/iolog/iolog_json.c:125 #: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360 #: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100 #: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123 #: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139 #: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210 -#: logsrvd/logsrvd.c:1021 logsrvd/logsrvd.c:1089 logsrvd/logsrvd_journal.c:142 -#: logsrvd/logsrvd_journal.c:196 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:380 logsrvd/logsrvd_relay.c:443 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:857 -#: logsrvd/sendlog.c:500 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143 +#: logsrvd/iolog_writer.c:85 logsrvd/iolog_writer.c:90 +#: logsrvd/iolog_writer.c:124 logsrvd/iolog_writer.c:172 +#: logsrvd/iolog_writer.c:212 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:261 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:301 logsrvd/iolog_writer.c:314 +#: logsrvd/iolog_writer.c:327 logsrvd/iolog_writer.c:340 +#: logsrvd/iolog_writer.c:355 logsrvd/iolog_writer.c:393 +#: logsrvd/iolog_writer.c:399 logsrvd/iolog_writer.c:406 +#: logsrvd/iolog_writer.c:412 logsrvd/iolog_writer.c:596 +#: logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 logsrvd/logsrvd.c:311 +#: logsrvd/logsrvd.c:1017 logsrvd/logsrvd.c:1079 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:204 +#: logsrvd/logsrvd_journal.c:205 logsrvd/logsrvd_journal.c:261 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_local.c:173 logsrvd/logsrvd_local.c:174 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:237 +#: logsrvd/logsrvd_local.c:317 logsrvd/logsrvd_local.c:318 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:324 +#: logsrvd/logsrvd_queue.c:155 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/logsrvd_relay.c:445 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:846 +#: logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 plugins/sudoers/audit.c:114 +#: plugins/sudoers/audit.c:271 plugins/sudoers/auth/bsdauth.c:143 #: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/pam.c:691 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 #: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 @@ -78,16 +95,16 @@ msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" #: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 #: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 #: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638 -#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108 -#: plugins/sudoers/editor.c:187 plugins/sudoers/env.c:262 +#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 +#: plugins/sudoers/cvtsudoers_ldif.c:444 plugins/sudoers/cvtsudoers_ldif.c:451 +#: plugins/sudoers/cvtsudoers_ldif.c:464 plugins/sudoers/cvtsudoers_ldif.c:472 +#: plugins/sudoers/cvtsudoers_ldif.c:619 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 #: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 #: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 #: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 @@ -100,21 +117,21 @@ msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 -#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 -#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 -#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484 -#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604 -#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216 -#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253 -#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:293 +#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:386 plugins/sudoers/log_client.c:699 +#: plugins/sudoers/log_client.c:720 plugins/sudoers/log_client.c:1440 +#: plugins/sudoers/log_client.c:1656 plugins/sudoers/log_client.c:1980 +#: plugins/sudoers/log_client.c:2037 plugins/sudoers/logging.c:101 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:465 +#: plugins/sudoers/logging.c:485 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:297 plugins/sudoers/match_command.c:497 +#: plugins/sudoers/match_command.c:546 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:666 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:201 plugins/sudoers/parse.c:218 +#: plugins/sudoers/parse.c:238 plugins/sudoers/parse.c:255 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:289 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -125,7 +142,7 @@ msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" #: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651 #: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726 #: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:923 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 #: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 #: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 @@ -136,13 +153,13 @@ msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 #: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325 -#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384 -#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975 -#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552 -#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 #: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 #: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 @@ -153,214 +170,237 @@ msgstr "抱æ‰ï¼Œè«‹é‡è©¦ã€‚" #: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 #: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 #: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 -#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1127 msgid "unable to allocate memory" msgstr "無法分é…記憶體" -#: gram.y:613 +#: gram.y:617 msgid "a digest requires a path name" msgstr "摘è¦éœ€è¦è·¯å¾‘å稱" -#: gram.y:643 +#: gram.y:639 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "\"CWD\" 的值開é å¿…é ˆæ˜¯ '/'ã€'~' 或 '*'" -#: gram.y:655 +#: gram.y:651 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "\"CHROOT\" 的值開é å¿…é ˆæ˜¯ '/'ã€'~' 或 '*'" -#: gram.y:786 +#: gram.y:782 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "語法錯誤,ä¿ç•™å— %s 被用作別åå稱" -#: gram.y:809 +#: gram.y:805 msgid "invalid notbefore value" msgstr "notbefore 的值無效" -#: gram.y:818 +#: gram.y:814 msgid "invalid notafter value" msgstr "notafter 的值無效" -#: gram.y:828 plugins/sudoers/policy.c:339 +#: gram.y:824 plugins/sudoers/policy.c:345 msgid "timeout value too large" msgstr "timeout 值éŽé•·" -#: gram.y:830 plugins/sudoers/policy.c:341 +#: gram.y:826 plugins/sudoers/policy.c:347 msgid "invalid timeout value" msgstr "timeout 值無效" -#: gram.y:1185 +#: gram.y:1193 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1229 +#: gram.y:1237 #, c-format msgid "Alias \"%s\" already defined" msgstr "別å「%sã€å·²å®šç¾©éŽ" -#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260 -#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795 -#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053 +#: gram.y:1658 gram.y:1708 lib/eventlog/eventlog.c:308 +#: lib/eventlog/eventlog.c:783 lib/eventlog/eventlog.c:858 +#: lib/eventlog/eventlog.c:861 lib/eventlog/eventlog.c:1146 #: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329 #: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503 #: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111 #: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133 #: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76 -#: lib/iolog/iolog_loginfo.c:210 logsrvd/sendlog.c:500 logsrvd/sendlog.c:1343 -#: logsrvd/sendlog.c:1350 logsrvd/sendlog.c:1545 logsrvd/tls_init.c:221 -#: logsrvd/tls_init.c:242 logsrvd/tls_init.c:252 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:505 -#: plugins/sudoers/auth/pam.c:692 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176 -#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299 -#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560 -#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646 -#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187 -#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75 -#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193 -#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299 -#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420 -#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439 -#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614 -#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933 -#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:187 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609 -#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214 -#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248 -#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 -#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 -#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100 -#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285 -#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532 -#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 -#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235 -#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152 -#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 -#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 -#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 -#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 -#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 -#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483 -#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625 -#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708 -#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753 -#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149 -#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167 -#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324 -#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341 -#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380 -#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438 -#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456 -#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195 -#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344 -#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583 -#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:853 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:953 -#: plugins/sudoers/pwutil.c:1010 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299 -#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374 -#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425 -#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922 -#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:580 plugins/sudoers/timestamp.c:424 -#: plugins/sudoers/timestamp.c:468 plugins/sudoers/timestamp.c:980 -#: plugins/sudoers/timestamp.c:1118 plugins/sudoers/toke_util.c:77 -#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130 -#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143 -#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327 -#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609 -#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928 -#: toke.l:1057 toke.l:1109 toke.l:1117 +#: lib/iolog/iolog_loginfo.c:210 logsrvd/iolog_writer.c:85 +#: logsrvd/iolog_writer.c:90 logsrvd/iolog_writer.c:124 +#: logsrvd/iolog_writer.c:162 logsrvd/iolog_writer.c:171 +#: logsrvd/iolog_writer.c:189 logsrvd/iolog_writer.c:211 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:251 +#: logsrvd/iolog_writer.c:260 logsrvd/iolog_writer.c:276 +#: logsrvd/iolog_writer.c:285 logsrvd/iolog_writer.c:300 +#: logsrvd/iolog_writer.c:313 logsrvd/iolog_writer.c:326 +#: logsrvd/iolog_writer.c:339 logsrvd/iolog_writer.c:354 +#: logsrvd/iolog_writer.c:393 logsrvd/iolog_writer.c:399 +#: logsrvd/iolog_writer.c:406 logsrvd/iolog_writer.c:412 +#: logsrvd/iolog_writer.c:596 logsrvd/logsrv_util.c:62 logsrvd/logsrvd.c:302 +#: logsrvd/logsrvd.c:311 logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1402 +#: logsrvd/logsrvd.c:1408 logsrvd/logsrvd_conf.c:1361 +#: logsrvd/logsrvd_journal.c:71 logsrvd/logsrvd_journal.c:115 +#: logsrvd/logsrvd_journal.c:204 logsrvd/logsrvd_journal.c:234 +#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:426 logsrvd/logsrvd_local.c:173 +#: logsrvd/logsrvd_local.c:236 logsrvd/logsrvd_local.c:317 +#: logsrvd/logsrvd_local.c:323 logsrvd/logsrvd_local.c:342 +#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:185 +#: logsrvd/logsrvd_queue.c:262 logsrvd/sendlog.c:302 logsrvd/sendlog.c:501 +#: logsrvd/sendlog.c:1353 logsrvd/sendlog.c:1360 logsrvd/sendlog.c:1563 +#: logsrvd/tls_init.c:218 logsrvd/tls_init.c:239 logsrvd/tls_init.c:249 +#: plugins/sudoers/audit.c:114 plugins/sudoers/audit.c:271 +#: plugins/sudoers/auth/pam.c:505 plugins/sudoers/auth/pam.c:691 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:95 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761 +#: plugins/sudoers/cvtsudoers.c:768 plugins/sudoers/cvtsudoers.c:1183 +#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289 +#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 +#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 +#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 +#: plugins/sudoers/cvtsudoers_ldif.c:424 plugins/sudoers/cvtsudoers_ldif.c:432 +#: plugins/sudoers/cvtsudoers_ldif.c:443 plugins/sudoers/cvtsudoers_ldif.c:450 +#: plugins/sudoers/cvtsudoers_ldif.c:463 plugins/sudoers/cvtsudoers_ldif.c:471 +#: plugins/sudoers/cvtsudoers_ldif.c:618 plugins/sudoers/defaults.c:652 +#: plugins/sudoers/defaults.c:947 plugins/sudoers/defaults.c:1122 +#: plugins/sudoers/editor.c:190 plugins/sudoers/env.c:262 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:68 +#: plugins/sudoers/iolog.c:606 plugins/sudoers/iolog.c:623 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:292 +#: plugins/sudoers/ldap_util.c:299 plugins/sudoers/ldap_util.c:615 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:108 +#: plugins/sudoers/log_client.c:217 plugins/sudoers/log_client.c:238 +#: plugins/sudoers/log_client.c:251 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:699 plugins/sudoers/log_client.c:720 +#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:1656 +#: plugins/sudoers/log_client.c:1980 plugins/sudoers/log_client.c:2037 +#: plugins/sudoers/logging.c:101 plugins/sudoers/logging.c:180 +#: plugins/sudoers/logging.c:181 plugins/sudoers/logging.c:464 +#: plugins/sudoers/logging.c:484 plugins/sudoers/logging.c:627 +#: plugins/sudoers/match_command.c:296 plugins/sudoers/match_command.c:496 +#: plugins/sudoers/match_command.c:545 plugins/sudoers/match_command.c:618 +#: plugins/sudoers/match_command.c:665 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:200 plugins/sudoers/parse.c:217 +#: plugins/sudoers/parse.c:237 plugins/sudoers/parse.c:254 +#: plugins/sudoers/parse.c:277 plugins/sudoers/parse.c:288 +#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 +#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 +#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 +#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 +#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 +#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 +#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596 +#: plugins/sudoers/parse_ldif.c:625 plugins/sudoers/parse_ldif.c:650 +#: plugins/sudoers/parse_ldif.c:708 plugins/sudoers/parse_ldif.c:725 +#: plugins/sudoers/parse_ldif.c:753 plugins/sudoers/parse_ldif.c:760 +#: plugins/sudoers/policy.c:152 plugins/sudoers/policy.c:161 +#: plugins/sudoers/policy.c:170 plugins/sudoers/policy.c:197 +#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:345 +#: plugins/sudoers/policy.c:347 plugins/sudoers/policy.c:377 +#: plugins/sudoers/policy.c:386 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:444 plugins/sudoers/policy.c:453 +#: plugins/sudoers/policy.c:462 plugins/sudoers/policy.c:556 +#: plugins/sudoers/policy.c:923 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:195 plugins/sudoers/pwutil.c:266 +#: plugins/sudoers/pwutil.c:344 plugins/sudoers/pwutil.c:518 +#: plugins/sudoers/pwutil.c:583 plugins/sudoers/pwutil.c:655 +#: plugins/sudoers/pwutil.c:853 plugins/sudoers/pwutil.c:909 +#: plugins/sudoers/pwutil.c:953 plugins/sudoers/pwutil.c:1010 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53 +#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 +#: plugins/sudoers/sudoers.c:335 plugins/sudoers/sudoers.c:361 +#: plugins/sudoers/sudoers.c:429 plugins/sudoers/sudoers.c:438 +#: plugins/sudoers/sudoers.c:479 plugins/sudoers/sudoers.c:833 +#: plugins/sudoers/sudoers.c:971 plugins/sudoers/sudoers.c:1030 +#: plugins/sudoers/sudoers.c:1296 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1280 +#: plugins/sudoers/sudoreplay.c:1490 plugins/sudoers/sudoreplay.c:1494 +#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:580 +#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 +#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105 +#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:154 +#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433 +#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926 +#: plugins/sudoers/visudo.c:999 toke.l:938 toke.l:1067 toke.l:1119 toke.l:1127 #, c-format msgid "%s: %s" msgstr "%s:%s" -#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509 +#: lib/eventlog/eventlog.c:313 lib/iolog/iolog_json.c:509 #: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514 #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326 +#: plugins/sudoers/cvtsudoers_ldif.c:575 plugins/sudoers/env.c:326 #: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517 +#: plugins/sudoers/iolog.c:628 plugins/sudoers/ldap.c:517 #: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081 #: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573 -#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738 -#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:586 +#: plugins/sudoers/policy.c:755 plugins/sudoers/policy.c:766 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:206 #, c-format msgid "internal error, %s overflow" msgstr "內部錯誤,%s 溢出" -#: lib/eventlog/eventlog.c:324 +#: lib/eventlog/eventlog.c:372 #, c-format msgid "unable to dup stdin: %m" msgstr "無法 dup stdin:%m" -#: lib/eventlog/eventlog.c:366 +#: lib/eventlog/eventlog.c:414 #, c-format msgid "unable to execute %s: %m" msgstr "無法執行 %s:%m" -#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:455 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "無法執行 fork" -#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469 +#: lib/eventlog/eventlog.c:463 lib/eventlog/eventlog.c:517 #, c-format msgid "unable to fork: %m" msgstr "無法執行 fork:%m" -#: lib/eventlog/eventlog.c:459 +#: lib/eventlog/eventlog.c:507 #, c-format msgid "unable to open pipe: %m" msgstr "無法開啟管線:%m" -#: lib/eventlog/eventlog.c:882 +#: lib/eventlog/eventlog.c:979 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:911 +#: lib/eventlog/eventlog.c:1008 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (指令繼續執行) %s" @@ -474,351 +514,585 @@ msgstr "%s:缺少 runas 群組 欄ä½" msgid "%s exists but is not a directory (0%o)" msgstr "%s å˜åœ¨ï¼Œä½†éžç›®éŒ„ (0%o)" -#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72 -#: plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:77 +#: logsrvd/iolog_writer.c:788 plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "無法建立目錄 %s" -#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726 +#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:726 #: plugins/sudoers/visudo.c:737 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "無法將 %s 的模å¼è®Šæ›´ç‚º 0%o" -#: lib/iolog/iolog_timing.c:255 +#: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" msgstr "讀å–計時檔案時發生錯誤:%s" -#: lib/iolog/iolog_timing.c:262 +#: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" msgstr "無效的計時檔案行號:%s" -#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 +#: logsrvd/iolog_writer.c:131 plugins/sudoers/logging.c:803 +#: plugins/sudoers/policy.c:536 +msgid "unable to generate UUID" +msgstr "無法產生 UUID" + +#: logsrvd/iolog_writer.c:158 logsrvd/iolog_writer.c:176 +#: logsrvd/iolog_writer.c:185 logsrvd/iolog_writer.c:203 +#: logsrvd/iolog_writer.c:216 logsrvd/iolog_writer.c:229 +#: logsrvd/iolog_writer.c:240 logsrvd/iolog_writer.c:247 +#: logsrvd/iolog_writer.c:265 logsrvd/iolog_writer.c:272 +#: logsrvd/iolog_writer.c:290 logsrvd/iolog_writer.c:305 +#: logsrvd/iolog_writer.c:318 logsrvd/iolog_writer.c:331 +#: logsrvd/iolog_writer.c:344 logsrvd/iolog_writer.c:359 +#, c-format +msgid "%s: protocol error: wrong type for %s" +msgstr "%s:通訊å”定有誤:%s 類型有錯" + +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:375 +#: logsrvd/iolog_writer.c:380 logsrvd/iolog_writer.c:385 +#, c-format +msgid "%s: protocol error: %s missing from AcceptMessage" +msgstr "%s:通訊å”定有誤:AcceptMessage 缺少 %s" + +#: logsrvd/iolog_writer.c:446 +#, c-format +msgid "%s: unable to format session id" +msgstr "%sï¼šç„¡æ³•æ ¼å¼åŒ–工作階段 ID" + +#: logsrvd/iolog_writer.c:460 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:503 +#: logsrvd/iolog_writer.c:517 logsrvd/iolog_writer.c:531 +#, c-format +msgid "%s: %s is not set" +msgstr "%s:%s 未è¨å®š" + +#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#, c-format +msgid "unable to expand iolog path %s" +msgstr "無法展開 iolog 路徑 %s" + +#: logsrvd/iolog_writer.c:592 +#, c-format +msgid "unable to create iolog path %s" +msgstr "無法建立 iolog 路徑 %s" + +#: logsrvd/iolog_writer.c:622 +#, c-format +msgid "invalid iofd %d" +msgstr "無效的 iofd %d" + +#: logsrvd/iolog_writer.c:642 +#, c-format +msgid "error closing iofd %d: %s" +msgstr "關閉 iofd %d 時發生錯誤:%s" + +#: logsrvd/iolog_writer.c:758 +#, c-format +msgid "invalid I/O log %s: %s referenced but not present" +msgstr "無效的 I/O log %s:%s 有åƒè€ƒï¼Œä½†æœªå‘ˆç¾" + +#: logsrvd/iolog_writer.c:770 logsrvd/logsrvd_journal.c:378 +#, c-format +msgid "%s: unable to find resume point [%lld, %ld]" +msgstr "%s:找ä¸åˆ°ç¹¼çºŒé»ž [%lld, %ld]" + +#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:421 +#: logsrvd/logsrvd_queue.c:111 logsrvd/tls_init.c:293 +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618 +#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249 +#: plugins/sudoers/cvtsudoers_json.c:877 plugins/sudoers/cvtsudoers_ldif.c:692 +#: plugins/sudoers/sudoers.c:1083 plugins/sudoers/sudoreplay.c:1456 +#: plugins/sudoers/timestamp.c:433 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:913 +#, c-format +msgid "unable to open %s" +msgstr "無法開啟 %s" + +#: logsrvd/iolog_writer.c:804 logsrvd/logsrv_util.c:98 +#: logsrvd/logsrv_util.c:105 plugins/sudoers/sudoreplay.c:362 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "unable to open %s/%s" msgstr "無法開啟 %s/%s" -#: logsrvd/logsrv_util.c:133 +#: logsrvd/iolog_writer.c:817 +#, c-format +msgid "unable to copy %s/%s to %s/%s: %s" +msgstr "無法複製 %s/%s 至 %s/%s:%s" + +#: logsrvd/iolog_writer.c:846 logsrvd/logsrvd_journal.c:186 +#, c-format +msgid "unable to rename %s to %s" +msgstr "無法é‡æ–°å‘½å %s 至 %s" + +#: logsrvd/logsrv_util.c:132 #, c-format msgid "missing I/O log file %s/%s" msgstr "缺少 I/O 記錄檔 %s/%s" -#: logsrvd/logsrv_util.c:140 +#: logsrvd/logsrv_util.c:139 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s:無法往å‰æœå°‹ %zu" -#: logsrvd/logsrv_util.c:150 -#, c-format -msgid "unable to find resume point [%lld, %ld] in %s/%s" -msgstr "%3$s/%4$s ä¸æ‰¾ä¸åˆ°ç¹¼çºŒé»ž [%1$lld, %2$ld]" +#: logsrvd/logsrv_util.c:149 +#, c-format +msgid "%s/%s: unable to find resume point [%lld, %ld]" +msgstr "%s/%s:找ä¸åˆ°ç¹¼çºŒé»ž [%lld, %ld]" + +#: logsrvd/logsrvd.c:272 logsrvd/logsrvd_queue.c:131 +msgid "unable to connect to relay" +msgstr "無法連線至轉é€é»ž" + +#: logsrvd/logsrvd.c:331 logsrvd/logsrvd_relay.c:838 +#, c-format +msgid "server message too large: %zu" +msgstr "伺æœå™¨è¨Šæ¯éŽé•·ï¼š%zu" + +#: logsrvd/logsrvd.c:423 logsrvd/logsrvd.c:540 logsrvd/logsrvd.c:619 +#: logsrvd/logsrvd.c:843 logsrvd/logsrvd.c:857 logsrvd/logsrvd.c:1016 +#: logsrvd/logsrvd.c:1140 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 +#: logsrvd/logsrvd.c:1425 logsrvd/logsrvd.c:1548 logsrvd/logsrvd.c:1732 +#: logsrvd/logsrvd_journal.c:485 logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_queue.c:160 logsrvd/logsrvd_relay.c:173 +#: logsrvd/logsrvd_relay.c:250 logsrvd/logsrvd_relay.c:254 +#: logsrvd/logsrvd_relay.c:390 logsrvd/logsrvd_relay.c:582 +#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:1124 +#: logsrvd/sendlog.c:1156 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:214 plugins/sudoers/audit.c:281 +#: plugins/sudoers/iolog.c:966 plugins/sudoers/iolog.c:1099 +#: plugins/sudoers/iolog.c:1197 plugins/sudoers/log_client.c:112 +#: plugins/sudoers/log_client.c:328 plugins/sudoers/log_client.c:344 +#: plugins/sudoers/log_client.c:391 plugins/sudoers/log_client.c:595 +#: plugins/sudoers/log_client.c:602 plugins/sudoers/log_client.c:1127 +#: plugins/sudoers/log_client.c:1409 plugins/sudoers/log_client.c:1450 +#: plugins/sudoers/log_client.c:1458 plugins/sudoers/log_client.c:1612 +#: plugins/sudoers/log_client.c:1728 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/log_client.c:2053 plugins/sudoers/logging.c:139 +#: plugins/sudoers/logging.c:195 plugins/sudoers/sudoreplay.c:522 +#: plugins/sudoers/sudoreplay.c:569 plugins/sudoers/sudoreplay.c:811 +#: plugins/sudoers/sudoreplay.c:923 plugins/sudoers/sudoreplay.c:1014 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1043 plugins/sudoers/sudoreplay.c:1050 +#: plugins/sudoers/sudoreplay.c:1057 plugins/sudoers/sudoreplay.c:1184 +msgid "unable to add event to queue" +msgstr "ç„¡æ³•å°‡äº‹ä»¶é™„åŠ åˆ°ä½‡åˆ—" -#: logsrvd/logsrvd.c:434 logsrvd/logsrvd.c:473 logsrvd/logsrvd.c:507 -#: logsrvd/logsrvd.c:557 logsrvd/logsrvd.c:632 logsrvd/logsrvd.c:664 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:564 logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 #: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:726 logsrvd/logsrvd_relay.c:511 #: logsrvd/logsrvd_relay.c:544 +#, c-format +msgid "unexpected state %d for %s" +msgstr "%2$s 發生éžé 期狀態 %1$d" + +#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:517 +#: logsrvd/logsrvd.c:565 logsrvd/logsrvd.c:637 logsrvd/logsrvd.c:667 +#: logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:727 logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:546 msgid "state machine error" msgstr "狀態機器發生錯誤" -#: logsrvd/logsrvd.c:443 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:455 msgid "invalid AcceptMessage" msgstr "無效的 AcceptMessage" -#: logsrvd/logsrvd.c:482 +#: logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:492 msgid "invalid RejectMessage" msgstr "無效的 RejectMessage" -#: logsrvd/logsrvd.c:593 +#: logsrvd/logsrvd.c:599 logsrvd/logsrvd.c:600 msgid "invalid AlertMessage" msgstr "無效的 AlertMessage" -#: logsrvd/logsrvd.c:638 logsrvd/logsrvd.c:670 logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:641 logsrvd/logsrvd.c:671 logsrvd/logsrvd.c:701 +#, c-format +msgid "%s: unexpected IoBuffer" +msgstr "%s:éžé 期的 IoBuffer" + +#: logsrvd/logsrvd.c:642 logsrvd/logsrvd.c:672 logsrvd/logsrvd.c:702 msgid "protocol error" msgstr "通訊å”定錯誤" -#: logsrvd/logsrvd.c:797 +#: logsrvd/logsrvd.c:797 logsrvd/logsrvd_journal.c:358 +#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:677 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "從 %3$s 收到的 %2$s ä¸ï¼Œç™¼ç¾éžé 期的 type_case 值 %1$d" + +#: logsrvd/logsrvd.c:799 msgid "unrecognized ClientMessage type" msgstr "無法è˜åˆ¥çš„ ClientMessage é¡žåž‹" -#: logsrvd/logsrvd.c:1082 logsrvd/logsrvd_journal.c:238 +#: logsrvd/logsrvd.c:889 +#, c-format +msgid "timed out writing to client %s" +msgstr "寫入 %s 用戶端ç‰å¾…逾時" + +#: logsrvd/logsrvd.c:894 logsrvd/logsrvd_relay.c:910 +#, c-format +msgid "missing write buffer for client %s" +msgstr "缺少 %s 用戶端的寫入緩è¡å€" + +#: logsrvd/logsrvd.c:987 +#, c-format +msgid "timed out reading from client %s" +msgstr "從 %s 用戶端讀å–ç‰å¾…逾時" + +#: logsrvd/logsrvd.c:1028 logsrvd/logsrvd_relay.c:774 +#, c-format +msgid "EOF from %s without proper TLS shutdown" +msgstr "從 %s 收到 EOF,但其未æ£ç¢ºé—œé–‰ TLS。" + +#: logsrvd/logsrvd.c:1071 logsrvd/logsrvd_relay.c:206 logsrvd/sendlog.c:290 +#: plugins/sudoers/log_client.c:705 +#, c-format +msgid "client message too large: %zu" +msgstr "用戶端訊æ¯éŽé•·ï¼š%zu" + +#: logsrvd/logsrvd.c:1072 logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd_journal.c:248 msgid "client message too large" msgstr "用戶端訊æ¯éŽé•·" -#: logsrvd/logsrvd.c:1102 +#: logsrvd/logsrvd.c:1090 logsrvd/logsrvd.c:1091 msgid "invalid ClientMessage" msgstr "無效的 ClientMessage" -#: logsrvd/logsrvd.c:1408 +#: logsrvd/logsrvd.c:1388 msgid "unable to get remote IP addr" msgstr "無法å–å¾—é 端 IP 地å€" -#: logsrvd/logsrvd.c:1436 logsrvd/tls_client.c:203 -#: plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1417 logsrvd/tls_client.c:201 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "無法將使用者資料連çµè‡³ SSL 物件:%s" -#: logsrvd/logsrvd.c:1444 logsrvd/logsrvd.c:1570 logsrvd/logsrvd.c:1755 -#: logsrvd/sendlog.c:1146 logsrvd/tls_client.c:138 logsrvd/tls_client.c:154 -#: logsrvd/tls_client.c:216 plugins/sudoers/iolog.c:969 -#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200 -#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 -#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 -#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 -#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 -#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 -#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023 -#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 -#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 -#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 -#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 -#: plugins/sudoers/sudoreplay.c:1163 -msgid "unable to add event to queue" -msgstr "ç„¡æ³•å°‡äº‹ä»¶é™„åŠ åˆ°ä½‡åˆ—" - -#: logsrvd/logsrvd.c:1620 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1598 logsrvd/logsrvd.c:1951 msgid "unable to setup listen socket" msgstr "無法è¨å®šç›£è½ socket 通訊端" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1715 +#, c-format +msgid "unexpected signal %d" +msgstr "發生éžé 期信號 %d" + +#: logsrvd/logsrvd.c:1853 msgid "sudo log server" msgstr "sudo 記錄伺æœå™¨" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:122 +#: logsrvd/logsrvd.c:1855 logsrvd/sendlog.c:122 msgid "Options:" msgstr "é¸é …:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1857 msgid "path to configuration file" msgstr "è¨å®šæª”路徑" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1859 logsrvd/sendlog.c:124 msgid "display help message and exit" msgstr "顯示說明訊æ¯å¾ŒçµæŸ" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1861 msgid "do not fork, run in the foreground" msgstr "ä¸è¦ fork,在å‰æ™¯åŸ·è¡Œ" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1863 msgid "percent chance connections will drop" msgstr "拋棄連線的機率百分比" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:152 +#: logsrvd/logsrvd.c:1865 logsrvd/sendlog.c:154 msgid "display version information and exit" msgstr "顯示版本資訊後çµæŸ" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1518 +#: logsrvd/logsrvd.c:1915 logsrvd/sendlog.c:1532 msgid "Protobuf-C version 1.3 or higher required" msgstr "éœ€è¦ Protobuf-C 版本 1.3 或更高版本" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1931 #, c-format msgid "invalid random drop value: %s" msgstr "隨機丟棄值無效:%s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1568 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: logsrvd/logsrvd.c:1934 logsrvd/sendlog.c:1586 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:301 #: plugins/sudoers/visudo.c:175 #, c-format msgid "%s version %s\n" msgstr "%s 版本 %s\n" -#: logsrvd/logsrvd_conf.c:446 +#: logsrvd/logsrvd_conf.c:391 plugins/sudoers/check.c:336 +#: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:115 +#: plugins/sudoers/policy.c:1159 plugins/sudoers/sudoers.c:486 +#: plugins/sudoers/sudoers.c:1338 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/testsudoers.c:382 +#, c-format +msgid "unknown user %s" +msgstr "未知使用者 %s" + +#: logsrvd/logsrvd_conf.c:408 plugins/sudoers/iolog.c:140 +#: plugins/sudoers/sudoers.c:491 plugins/sudoers/sudoers.c:1372 +#: plugins/sudoers/testsudoers.c:406 +#, c-format +msgid "unknown group %s" +msgstr "未知群組 %s" + +#: logsrvd/logsrvd_conf.c:426 +#, c-format +msgid "unable to parse iolog mode %s" +msgstr "ç„¡æ³•è§£æž iolog æ¨¡å¼ %s" + +#: logsrvd/logsrvd_conf.c:443 logsrvd/logsrvd_conf.c:1172 +#, c-format +msgid "invalid value for %s: %s" +msgstr "%s 的值無效:%s" + +#: logsrvd/logsrvd_conf.c:482 msgid "TLS not supported" msgstr "ä¸æ”¯æ´ TLS" -#: logsrvd/logsrvd_conf.c:468 +#: logsrvd/logsrvd_conf.c:504 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:541 logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:577 logsrvd/logsrvd_conf.c:971 #, c-format msgid "%s: not a fully qualified path" msgstr "%s:路徑ä¸å®Œå…¨åˆæ³•" -#: logsrvd/logsrvd_conf.c:1035 +#: logsrvd/logsrvd_conf.c:889 logsrvd/logsrvd_conf.c:905 +#: logsrvd/logsrvd_conf.c:1587 +#, c-format +msgid "unknown syslog facility %s" +msgstr "未知的 syslog è£ç½® %s" + +#: logsrvd/logsrvd_conf.c:921 logsrvd/logsrvd_conf.c:937 +#: logsrvd/logsrvd_conf.c:953 logsrvd/logsrvd_conf.c:1591 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1599 +#, c-format +msgid "unknown syslog priority %s" +msgstr "未知 syslog 優先級 %s" + +#: logsrvd/logsrvd_conf.c:1133 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d ä¸å°ç¨±çš„ '[': %s" -#: logsrvd/logsrvd_conf.c:1046 +#: logsrvd/logsrvd_conf.c:1144 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d 無效的è¨å®šæª”å€æ®µï¼š%s" -#: logsrvd/logsrvd_conf.c:1054 +#: logsrvd/logsrvd_conf.c:1152 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d 無效的è¨å®šæª”行:%s" -#: logsrvd/logsrvd_conf.c:1060 +#: logsrvd/logsrvd_conf.c:1158 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d 應有å€æ®µå稱:%s" -#: logsrvd/logsrvd_conf.c:1074 -#, c-format -msgid "invalid value for %s: %s" -msgstr "%s 的值無效:%s" - -#: logsrvd/logsrvd_conf.c:1082 -#, c-format -msgid "%s:%d unknown key: %s" -msgstr "%s:%d 未知éµï¼š%s" - -#: logsrvd/logsrvd_conf.c:1294 +#: logsrvd/logsrvd_conf.c:1180 #, c-format -msgid "unknown syslog facility %s" -msgstr "未知的 syslog è£ç½® %s" +msgid "%s:%d [%s] illegal key: %s" +msgstr "%s:%d [%s] 本è¨å®šéµç„¡æ•ˆï¼š%s" -#: logsrvd/logsrvd_conf.c:1298 logsrvd/logsrvd_conf.c:1302 -#: logsrvd/logsrvd_conf.c:1306 +#: logsrvd/logsrvd_conf.c:1210 plugins/sudoers/logging.c:856 #, c-format -msgid "unknown syslog priority %s" -msgstr "未知 syslog 優先級 %s" +msgid "unable to open log file %s" +msgstr "無法開啟記錄檔案 %s" -#: logsrvd/logsrvd_conf.c:1374 +#: logsrvd/logsrvd_conf.c:1667 msgid "unable to initialize server TLS context" msgstr "無法åˆå§‹åŒ–伺æœå™¨ TLS 上下文" -#: logsrvd/logsrvd_conf.c:1394 +#: logsrvd/logsrvd_conf.c:1687 msgid "unable to initialize relay TLS context" msgstr "無法åˆå§‹åŒ–è½‰é€ TLS 上下文" -#: logsrvd/logsrvd_journal.c:126 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_journal.c:373 +#: logsrvd/logsrvd_journal.c:137 logsrvd/logsrvd_journal.c:417 +#: logsrvd/logsrvd_journal.c:422 msgid "unable to create journal file" msgstr "無法建立日誌檔案" -#: logsrvd/logsrvd_journal.c:134 +#: logsrvd/logsrvd_journal.c:141 logsrvd/logsrvd_queue.c:105 +#: plugins/sudoers/visudo.c:971 +#, c-format +msgid "unable to lock %s" +msgstr "無法鎖定 %s" + +#: logsrvd/logsrvd_journal.c:144 msgid "unable to lock journal file" msgstr "無法鎖定日誌檔案" -#: logsrvd/logsrvd_journal.c:163 logsrvd/logsrvd_journal.c:406 -#: logsrvd/logsrvd_journal.c:411 +#: logsrvd/logsrvd_journal.c:152 +msgid "unable to open journal file" +msgstr "無法開啟日誌檔案" + +#: logsrvd/logsrvd_journal.c:173 logsrvd/logsrvd_journal.c:453 +#: logsrvd/logsrvd_journal.c:458 msgid "unable to write journal file" msgstr "無法寫入日誌檔案" -#: logsrvd/logsrvd_journal.c:171 logsrvd/logsrvd_journal.c:178 +#: logsrvd/logsrvd_journal.c:181 logsrvd/logsrvd_journal.c:188 msgid "unable to rename journal file" msgstr "無法é‡æ–°å‘½å日誌檔案" -#: logsrvd/logsrvd_journal.c:228 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:235 logsrvd/logsrvd_journal.c:236 +#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:271 msgid "unexpected EOF reading journal file" msgstr "讀å–日誌檔案時é‡åˆ°éžé 期的çµæŸå—å…ƒ (EOF)" -#: logsrvd/logsrvd_journal.c:230 logsrvd/logsrvd_journal.c:260 +#: logsrvd/logsrvd_journal.c:239 logsrvd/logsrvd_journal.c:240 +#: logsrvd/logsrvd_journal.c:274 logsrvd/logsrvd_journal.c:275 msgid "error reading journal file" msgstr "讀å–日誌檔案時發生錯誤" -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:325 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:377 msgid "invalid journal file, unable to restart" msgstr "日誌檔案無效,無法é‡æ–°é–‹å§‹" -#: logsrvd/logsrvd_local.c:149 +#: logsrvd/logsrvd_journal.c:436 +#, c-format +msgid "unable to seek to [%lld, %ld] in journal file %s" +msgstr "無法æœå°‹è‡³ %3$s 檔案的 [%1$lld, %2$ld] ä½ç½®" + +#: logsrvd/logsrvd_local.c:152 msgid "error parsing AcceptMessage" msgstr "è§£æž AcceptMessage 時發生錯誤" -#: logsrvd/logsrvd_local.c:156 +#: logsrvd/logsrvd_local.c:163 msgid "error creating I/O log" msgstr "建立 I/O 日誌時發生錯誤" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:186 msgid "error logging accept event" msgstr "記錄接å—事件時發生錯誤" -#: logsrvd/logsrvd_local.c:196 +#: logsrvd/logsrvd_local.c:225 msgid "error parsing RejectMessage" msgstr "è§£æž RejectMessage 時發生錯誤" -#: logsrvd/logsrvd_local.c:202 +#: logsrvd/logsrvd_local.c:249 msgid "error logging reject event" msgstr "記錄拒絕事件時發生錯誤" -#: logsrvd/logsrvd_local.c:276 +#: logsrvd/logsrvd_local.c:284 +msgid "error logging exit event" +msgstr "記錄離開 (exit) 事件時發生錯誤" + +#: logsrvd/logsrvd_local.c:343 logsrvd/logsrvd_local.c:344 msgid "log is already complete, cannot be restarted" msgstr "記錄已完æˆï¼Œç„¡æ³•é‡æ–°é–‹å§‹" -#: logsrvd/logsrvd_local.c:307 +#: logsrvd/logsrvd_local.c:374 msgid "unable to restart log" msgstr "無法é‡æ–°å•Ÿå‹•è¨˜éŒ„" -#: logsrvd/logsrvd_local.c:322 +#: logsrvd/logsrvd_local.c:390 msgid "error parsing AlertMessage" msgstr "è§£æž AlertMessage 時發生錯誤" -#: logsrvd/logsrvd_local.c:330 +#: logsrvd/logsrvd_local.c:400 msgid "error logging alert event" msgstr "記錄æ醒事件時發生錯誤" -#: logsrvd/logsrvd_local.c:397 +#: logsrvd/logsrvd_local.c:435 logsrvd/logsrvd_local.c:488 +#: logsrvd/logsrvd_local.c:523 +#, c-format +msgid "unable to format timing buffer, length %d" +msgstr "ç„¡æ³•æ ¼å¼åŒ–計時緩è¡å€ï¼Œé•·åº¦ %d" + +#: logsrvd/logsrvd_local.c:442 logsrvd/logsrvd_local.c:450 +#: logsrvd/logsrvd_local.c:495 logsrvd/logsrvd_local.c:530 +#: plugins/sudoers/sudoreplay.c:351 +#, c-format +msgid "%s/%s: %s" +msgstr "%s/%s: %s" + +#: logsrvd/logsrvd_local.c:470 msgid "error writing IoBuffer" msgstr "寫入 IoBuffer 時發生錯誤" -#: logsrvd/logsrvd_local.c:434 +#: logsrvd/logsrvd_local.c:505 msgid "error writing ChangeWindowSize" msgstr "寫入 ChangeWindowSize 時發生錯誤" -#: logsrvd/logsrvd_local.c:474 +#: logsrvd/logsrvd_local.c:540 msgid "error writing CommandSuspend" msgstr "寫入 CommandSuspend 時發生錯誤" -#: logsrvd/logsrvd_relay.c:434 +#: logsrvd/logsrvd_relay.c:436 msgid "TLS handshake with relay host failed" msgstr "無法與轉é€ä¸»æ©Ÿé€²è¡Œ TLS 交æ¡" -#: logsrvd/logsrvd_relay.c:462 +#: logsrvd/logsrvd_relay.c:464 msgid "unable to connect to relay host" msgstr "無法連線至轉é€ä¸»æ©Ÿ" -#: logsrvd/logsrvd_relay.c:519 logsrvd/sendlog.c:951 -#: plugins/sudoers/log_client.c:1466 +#: logsrvd/logsrvd_relay.c:519 +#, c-format +msgid "%s: invalid ServerHello, missing server_id" +msgstr "%s:無效的 ServerHello,缺少 server_id" + +#: logsrvd/logsrvd_relay.c:521 logsrvd/sendlog.c:961 +#: plugins/sudoers/log_client.c:1493 msgid "invalid ServerHello" msgstr "無效的 ServerHello" -#: logsrvd/logsrvd_relay.c:677 +#: logsrvd/logsrvd_relay.c:680 msgid "unrecognized ServerMessage type" msgstr "未知 ServerMessage é¡žåž‹" #: logsrvd/logsrvd_relay.c:709 +#, c-format +msgid "timed out reading from relay %s (%s)" +msgstr "從轉é€é»ž %s 讀å–ç‰å¾…逾時 (%s)" + +#: logsrvd/logsrvd_relay.c:711 msgid "timeout reading from relay" msgstr "從轉é€é»žè®€å–時ç‰å¾…逾時" -#: logsrvd/logsrvd_relay.c:761 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "轉é€é»žä¸»æ©Ÿå稱與憑è‰ä¸åŒ" -#: logsrvd/logsrvd_relay.c:765 logsrvd/logsrvd_relay.c:786 -#: logsrvd/logsrvd_relay.c:794 +#: logsrvd/logsrvd_relay.c:766 logsrvd/logsrvd_relay.c:779 +#: logsrvd/logsrvd_relay.c:785 msgid "error reading from relay" msgstr "從轉é€é»žè®€å–時發生錯誤" -#: logsrvd/logsrvd_relay.c:817 +#: logsrvd/logsrvd_relay.c:806 msgid "unable to read from relay" msgstr "無法從轉é€é»žè®€å–" -#: logsrvd/logsrvd_relay.c:831 logsrvd/logsrvd_relay.c:951 +#: logsrvd/logsrvd_relay.c:821 logsrvd/logsrvd_relay.c:939 msgid "relay server closed connection" msgstr "轉é€ä¼ºæœå™¨å·²ç¶“關閉連線" -#: logsrvd/logsrvd_relay.c:850 +#: logsrvd/logsrvd_relay.c:839 msgid "server message too large" msgstr "伺æœå™¨è¨Šæ¯éŽé•·" -#: logsrvd/logsrvd_relay.c:915 +#: logsrvd/logsrvd_relay.c:903 +#, c-format +msgid "timed out writing to relay %s (%s)" +msgstr "寫入轉é€é»ž %s ç‰å¾…逾時 (%s)" + +#: logsrvd/logsrvd_relay.c:905 msgid "timeout writing to relay" msgstr "寫入至轉é€é»žæ™‚ç‰å¾…逾時" -#: logsrvd/logsrvd_relay.c:973 logsrvd/logsrvd_relay.c:981 -#: logsrvd/logsrvd_relay.c:993 +#: logsrvd/logsrvd_relay.c:958 logsrvd/logsrvd_relay.c:964 +#: logsrvd/logsrvd_relay.c:974 msgid "error writing to relay" msgstr "寫入至轉é€é»žæ™‚發生錯誤" @@ -867,177 +1141,163 @@ msgid "reject the command with the given reason" msgstr "以指定ç†ç”±æ‹’絕命令" #: logsrvd/sendlog.c:150 +msgid "stop transfer after reaching this time" +msgstr "超éŽæŒ‡å®šæ™‚間時åœæ¢å‚³è¼¸" + +#: logsrvd/sendlog.c:152 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "é€éŽå¹³è¡Œå‚³é€é¸å– I/O 記錄 n æ¬¡ä¾†æ¸¬è©¦ç¨½æ ¸ä¼ºæœå™¨" -#: logsrvd/sendlog.c:175 plugins/sudoers/log_client.c:432 +#: logsrvd/sendlog.c:177 plugins/sudoers/log_client.c:437 #, c-format msgid "unable to look up %s:%s: %s" msgstr "無法查看 %s:%s: %s" -#: logsrvd/sendlog.c:213 +#: logsrvd/sendlog.c:215 msgid "unable to get server IP addr" msgstr "無法å–得伺æœå™¨ IP 地å€" -#: logsrvd/sendlog.c:267 plugins/sudoers/sudoreplay.c:851 +#: logsrvd/sendlog.c:269 plugins/sudoers/sudoreplay.c:871 #, c-format msgid "unable to read %s/%s: %s" msgstr "ç„¡æ³•è®€å– %s/%s: %s" -#: logsrvd/sendlog.c:288 plugins/sudoers/log_client.c:692 -#, c-format -msgid "client message too large: %zu" -msgstr "用戶端訊æ¯éŽé•·ï¼š%zu" - -#: logsrvd/sendlog.c:830 +#: logsrvd/sendlog.c:831 #, c-format msgid "%s: write buffer already in use" msgstr "%s:寫入緩è¡å€æ£è¢«ä½¿ç”¨" -#: logsrvd/sendlog.c:882 plugins/sudoers/iolog.c:893 -#: plugins/sudoers/iolog.c:962 +#: logsrvd/sendlog.c:892 plugins/sudoers/iolog.c:890 +#: plugins/sudoers/iolog.c:959 #, c-format msgid "unexpected I/O event %d" msgstr "ä¸æ‡‰æœ‰çš„ I/O 事件 %d" -#: logsrvd/sendlog.c:928 logsrvd/sendlog.c:945 logsrvd/sendlog.c:979 -#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 -#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 +#: logsrvd/sendlog.c:938 logsrvd/sendlog.c:955 logsrvd/sendlog.c:989 +#: plugins/sudoers/log_client.c:1142 plugins/sudoers/log_client.c:1419 +#: plugins/sudoers/log_client.c:1487 plugins/sudoers/log_client.c:1526 #, c-format msgid "%s: unexpected state %d" msgstr "%s:ä¸æ‡‰æœ‰çš„狀態 %d" -#: logsrvd/sendlog.c:1015 plugins/sudoers/log_client.c:1540 +#: logsrvd/sendlog.c:1025 plugins/sudoers/log_client.c:1570 #, c-format msgid "error message received from server: %s" msgstr "自伺æœå™¨æŽ¥æ”¶åˆ°éŒ¯èª¤è¨Šæ¯ï¼š%s" -#: logsrvd/sendlog.c:1028 plugins/sudoers/log_client.c:1553 +#: logsrvd/sendlog.c:1038 plugins/sudoers/log_client.c:1583 #, c-format msgid "abort message received from server: %s" msgstr "自伺æœå™¨æŽ¥æ”¶åˆ°ä¸æ¢è¨Šæ¯ï¼š%s" -#: logsrvd/sendlog.c:1047 plugins/sudoers/log_client.c:1572 -msgid "unable to unpack ServerMessage" -msgstr "無法解開 ServerMessage" - -#: logsrvd/sendlog.c:1087 plugins/sudoers/log_client.c:1603 +#: logsrvd/sendlog.c:1097 plugins/sudoers/log_client.c:1633 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s:ä¸æ‡‰æœ‰çš„ type_case 值 %d" -#: logsrvd/sendlog.c:1116 +#: logsrvd/sendlog.c:1126 msgid "timeout reading from server" msgstr "從伺æœå™¨è®€å–逾時" -#: logsrvd/sendlog.c:1195 +#: logsrvd/sendlog.c:1205 msgid "premature EOF" msgstr "檔案éŽæ—©çµæŸ" -#: logsrvd/sendlog.c:1208 plugins/sudoers/log_client.c:1761 +#: logsrvd/sendlog.c:1218 plugins/sudoers/log_client.c:1791 #, c-format msgid "server message too large: %u" msgstr "伺æœå™¨è¨Šæ¯éŽé•·ï¼š%u" -#: logsrvd/sendlog.c:1259 +#: logsrvd/sendlog.c:1269 msgid "timeout writing to server" msgstr "寫入至伺æœå™¨é€¾æ™‚" -#: logsrvd/sendlog.c:1591 +#: logsrvd/sendlog.c:1609 msgid "both restart point and iolog ID must be specified" msgstr "å¿…é ˆæŒ‡å®šé‡æ–°å•Ÿå‹•é»ž (restart point) å’Œ iolog ID" -#: logsrvd/sendlog.c:1595 +#: logsrvd/sendlog.c:1613 msgid "a restart point may not be set when no I/O is sent" msgstr "æœªå‚³é€ I/O 時,ä¸æ‡‰è¨å®šé‡æ–°é–‹å§‹é»ž" -#: logsrvd/sendlog.c:1671 +#: logsrvd/sendlog.c:1689 #, c-format msgid "exited prematurely with state %d" msgstr "éŽæ—©çµæŸï¼Œç‹€æ…‹ç¢¼ %d" -#: logsrvd/sendlog.c:1672 +#: logsrvd/sendlog.c:1690 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "已傳é€è€—用時間至伺æœå™¨ [%lld, %ld]" -#: logsrvd/sendlog.c:1674 +#: logsrvd/sendlog.c:1692 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "自伺æœå™¨æŽ¥æ”¶åˆ°æ交點 (commit point) [%lld, %ld]" -#: logsrvd/tls_client.c:113 plugins/sudoers/log_client.c:296 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:300 msgid "TLS handshake timeout occurred" msgstr "é‡åˆ° TLS 交æ¡é€¾æ™‚" -#: logsrvd/tls_client.c:133 logsrvd/tls_client.c:149 -#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:322 plugins/sudoers/log_client.c:338 msgid "unable to set event" msgstr "無法è¨å®šäº‹ä»¶" -#: logsrvd/tls_client.c:159 logsrvd/tls_client.c:163 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "TLS 連線失敗:%s" -#: logsrvd/tls_client.c:197 +#: logsrvd/tls_client.c:195 #, c-format msgid "unable to allocate ssl object: %s" msgstr "無法é…ç½® SSL 物件:%s" -#: logsrvd/tls_client.c:210 +#: logsrvd/tls_client.c:208 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "無法將 socket 通訊端連çµè‡³ SSL 物件:%s" -#: logsrvd/tls_client.c:238 +#: logsrvd/tls_client.c:236 msgid "unable to initialize TLS context" msgstr "無法åˆå§‹åŒ– TLS 上下文" -#: logsrvd/tls_init.c:129 logsrvd/tls_init.c:137 +#: logsrvd/tls_init.c:126 logsrvd/tls_init.c:134 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "無法將 TLS 1.2 åŠ å¯†å¥—ä»¶è¨ç‚º %s:%s" -#: logsrvd/tls_init.c:157 logsrvd/tls_init.c:165 +#: logsrvd/tls_init.c:154 logsrvd/tls_init.c:162 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "無法將 TLS 1.3 åŠ å¯†å¥—ä»¶è¨ç‚º %s:%s" -#: logsrvd/tls_init.c:200 +#: logsrvd/tls_init.c:197 #, c-format msgid "unable to create TLS context: %s" msgstr "無法建立 TLS 情境:%s" -#: logsrvd/tls_init.c:206 +#: logsrvd/tls_init.c:203 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "無法將最低通訊å”定版本è¨ç‚º TLS 1.2:%s" -#: logsrvd/tls_init.c:282 +#: logsrvd/tls_init.c:279 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "無法è¨å®šè¿ªè²-赫爾曼åƒæ•¸ï¼š%s" -#: logsrvd/tls_init.c:291 +#: logsrvd/tls_init.c:288 #, c-format msgid "unable to read diffie-hellman parameters: %s" msgstr "ç„¡æ³•è®€å– Diffie-Hellman åƒæ•¸ï¼š%s" -#: logsrvd/tls_init.c:296 plugins/sudoers/check.c:274 -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:639 -#: plugins/sudoers/cvtsudoers.c:1249 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1028 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:913 -#, c-format -msgid "unable to open %s" -msgstr "無法開啟 %s" - -#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398 -#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 -#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 -#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120 +#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:422 +#: plugins/sudoers/log_client.c:975 plugins/sudoers/log_client.c:1024 +#: plugins/sudoers/log_client.c:1073 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/logging.c:554 plugins/sudoers/logging.c:648 +#: plugins/sudoers/logging.c:810 plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "無法å–得一日時間" @@ -1277,20 +1537,12 @@ msgstr "" " #3) 權力越大則責任越大。\n" "\n" -#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 -#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851 +#: plugins/sudoers/check.c:331 plugins/sudoers/check.c:341 +#: plugins/sudoers/sudoers.c:876 plugins/sudoers/sudoers.c:897 #: plugins/sudoers/tsdump.c:119 #, c-format -msgid "unknown uid: %u" -msgstr "未知 UID:%u" - -#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123 -#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283 -#: plugins/sudoers/testsudoers.c:215 plugins/sudoers/testsudoers.c:382 -#, c-format -msgid "unknown user: %s" -msgstr "未知使用者:%s" +msgid "unknown uid %u" +msgstr "未知 uid %u" #: plugins/sudoers/check_aliases.c:56 #, c-format @@ -1347,9 +1599,10 @@ msgstr "ä¸æ”¯æ´çš„è¼¸å‡ºæ ¼å¼ %s" msgid "%s: input and output files must be different" msgstr "%s:輸入åŠè¼¸å‡ºæª”æ¡ˆå¿…é ˆä¸ä¸€è‡´" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177 -#: plugins/sudoers/testsudoers.c:254 plugins/sudoers/visudo.c:247 -#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:159 +#: plugins/sudoers/sudoers.c:205 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:247 plugins/sudoers/visudo.c:597 +#: plugins/sudoers/visudo.c:917 msgid "unable to initialize sudoers default values" msgstr "無法åˆå§‹åŒ– sudoers é è¨å€¼" @@ -1360,8 +1613,8 @@ msgstr "%s: %s: %s: %s" #: plugins/sudoers/cvtsudoers.c:475 #, c-format -msgid "%s: unknown key word: %s" -msgstr "%s:關éµè©žæœªçŸ¥ï¼š%s" +msgid "%s: unknown key word %s" +msgstr "%s:未知關éµå— %s" #: plugins/sudoers/cvtsudoers.c:521 #, c-format @@ -1393,7 +1646,7 @@ msgstr "å› æŽ¥è¿‘è¡Œ %2$d çš„ %1$s å—串而導致解æžéŒ¯èª¤\n" msgid "parse error in %s\n" msgstr "å› %s 導致解æžéŒ¯èª¤\n" -#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124 +#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1145 #: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 #, c-format msgid "unable to write to %s" @@ -1449,7 +1702,7 @@ msgstr "" " -V, --version 顯示版本訊æ¯å¾Œé€€å‡º" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:713 +#: plugins/sudoers/cvtsudoers_json.c:718 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "é è¨é …目「%sã€æœªçŸ¥" @@ -1466,12 +1719,12 @@ msgstr "無法å–å¾— GMT 時間" msgid "unable to format timestamp" msgstr "ç„¡æ³•æ ¼å¼åŒ–時間戳" -#: plugins/sudoers/cvtsudoers_ldif.c:640 +#: plugins/sudoers/cvtsudoers_ldif.c:644 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "éŽå¤š sudoers é …ï¼Œæœ€å¤§å€¼ç‚º %u" -#: plugins/sudoers/cvtsudoers_ldif.c:683 +#: plugins/sudoers/cvtsudoers_ldif.c:687 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "未è¨å®š SUDOERS_BASE 環境變數,且亦未指定 -b é¸é …。" @@ -2063,6 +2316,26 @@ msgstr "啟用 SELinux RBAC 支æ´" msgid "Path to the file that is created the first time sudo is run: %s" msgstr "sudo 第一次執行時建立的檔案路徑:%s" +#: plugins/sudoers/def_data.c:582 +msgid "Intercept further commands and apply sudoers restrictions to them" +msgstr "攔截之後的命令,並å°é€™äº›å‘½ä»¤å¥—用 sudoers é™åˆ¶" + +#: plugins/sudoers/def_data.c:586 +msgid "Log any child processes run by the command" +msgstr "記錄本命令執行的所有å處ç†ç¨‹åº" + +#: plugins/sudoers/def_data.c:590 +msgid "Log the exit status of commands" +msgstr "記錄命令的離開狀態碼" + +#: plugins/sudoers/def_data.c:594 +msgid "Subsequent commands in an intercepted session must be authenticated" +msgstr "被攔截工作階段ä¸çš„後續命令需è¦é€²è¡Œèº«ä»½é©—è‰" + +#: plugins/sudoers/def_data.c:598 +msgid "Allow an intercepted command to run set setuid or setgid programs" +msgstr "å…許被攔截的命令執行è¨å®š setuid 或 setgid 的程å¼" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -2083,52 +2356,62 @@ msgstr "%s:%d:%d: 沒有指定「%sã€çš„值" msgid "%s: no value specified for \"%s\"" msgstr "%s:沒有給「%sã€æŒ‡å®šå€¼" -#: plugins/sudoers/defaults.c:275 +#: plugins/sudoers/defaults.c:250 +#, c-format +msgid "%s:%d:%d: invalid operator \"%c=\" for \"%s\"" +msgstr "%1$s:%2$d:%3$d:「%5$sã€çš„é‹ç®—å「%4$c=ã€ç„¡æ•ˆ" + +#: plugins/sudoers/defaults.c:253 +#, c-format +msgid "%s: invalid operator \"%c=\" for \"%s\"" +msgstr "%1$s:「%3$sã€çš„é‹ç®—å「%2$c=ã€ç„¡æ•ˆ" + +#: plugins/sudoers/defaults.c:289 #, c-format msgid "%s:%d:%d: option \"%s\" does not take a value" msgstr "%s:%d:%d: 「%sã€é¸é …ä¸å¸¶å€¼" -#: plugins/sudoers/defaults.c:278 +#: plugins/sudoers/defaults.c:292 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s:「%sã€é¸é …ä¸å¸¶å€¼" -#: plugins/sudoers/defaults.c:303 +#: plugins/sudoers/defaults.c:317 #, c-format msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:%2$d:%3$d: é¸é …「%5$sã€çš„é è¨ (Defaults) é¡žåž‹ 0x%4$x 無效" -#: plugins/sudoers/defaults.c:306 +#: plugins/sudoers/defaults.c:320 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s:é¸é …「%3$sã€çš„é è¨é¡žåž‹ 0x%2$x 無效" -#: plugins/sudoers/defaults.c:316 +#: plugins/sudoers/defaults.c:330 #, c-format msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" msgstr "%s:%d:%d: 「%sã€å€¼å°ã€Œ%sã€é¸é …無效" -#: plugins/sudoers/defaults.c:319 +#: plugins/sudoers/defaults.c:333 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s:值「%sã€å°é¸é …「%sã€ç„¡æ•ˆ" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1054 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s:%d:%d: \"%s\" 的值開é å¿…é ˆæ˜¯ '/'ã€'~' 或 '*'" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1058 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: \"%s\" 的值開é å¿…é ˆæ˜¯ '/'ã€'~' 或 '*'" -#: plugins/sudoers/defaults.c:1055 +#: plugins/sudoers/defaults.c:1069 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "%s:%d:%d: \"%s\" 的值開é å¿…é ˆæ˜¯ '/'" -#: plugins/sudoers/defaults.c:1059 +#: plugins/sudoers/defaults.c:1073 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s:「%sã€çš„å€¼å¿…é ˆä»¥ã€Œ/ã€é–‹é " @@ -2146,12 +2429,12 @@ msgstr "無法é‡å»ºç’°å¢ƒ" msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "å°ä¸èµ·ï¼Œæ‚¨æ²’有權é™è¨å®šä»¥ä¸‹ç’°å¢ƒè®Šæ•¸ï¼š%s" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:108 #, c-format msgid "parse error in %s near line %d" msgstr "解æžæŽ¥è¿‘第 %2$d 行的 %1$s 時發生錯誤" -#: plugins/sudoers/file.c:110 +#: plugins/sudoers/file.c:111 #, c-format msgid "parse error in %s" msgstr "è§£æž %s ä¸çš„內容時發生錯誤" @@ -2191,56 +2474,51 @@ msgstr "無法在 %s ä¸æ‰¾åˆ°ç¬¦è™Ÿã€Œgroup_pluginã€" msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s:ä¸ç›¸å®¹çš„群組外掛程å¼ä¸»è¦ç‰ˆæœ¬è™Ÿç¢¼ %d,版本應該為 %d" -#: plugins/sudoers/interfaces.c:80 plugins/sudoers/interfaces.c:97 +#: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 #, c-format msgid "unable to parse IP address \"%s\"" msgstr "ç„¡æ³•è§£æž IP ä½å€åˆ—表「%sã€" -#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102 +#: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 #, c-format msgid "unable to parse netmask \"%s\"" msgstr "無法解æžç¶²è·¯é®ç½©ã€Œ%sã€" -#: plugins/sudoers/interfaces.c:130 +#: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" msgstr "本機 IP ä½å€å’Œç¶²è·¯é®ç½©é…å°ï¼š\n" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437 -#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:406 -#, c-format -msgid "unknown group: %s" -msgstr "未知群組:%s" - -#: plugins/sudoers/iolog.c:635 +#: plugins/sudoers/iolog.c:632 msgid "unable to update sequence file" msgstr "無法更新åºåˆ—檔" -#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854 -#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014 -#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142 -#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248 +#: plugins/sudoers/iolog.c:663 plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:1004 plugins/sudoers/iolog.c:1011 +#: plugins/sudoers/iolog.c:1132 plugins/sudoers/iolog.c:1139 +#: plugins/sudoers/iolog.c:1238 plugins/sudoers/iolog.c:1245 #, c-format msgid "unable to write to I/O log file: %s" msgstr "無法寫入 I/O 記錄檔案:%s" -#: plugins/sudoers/iolog.c:674 +#: plugins/sudoers/iolog.c:671 #, c-format msgid "unable to create %s/%s" msgstr "無法建立 %s/%s" -#: plugins/sudoers/iolog.c:899 +#: plugins/sudoers/iolog.c:896 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s:內部錯誤,未開啟事件 %d çš„ I/O 記錄檔案" -#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120 -#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:849 +#: plugins/sudoers/iolog.c:989 plugins/sudoers/iolog.c:1117 +#: plugins/sudoers/iolog.c:1222 plugins/sudoers/timestamp.c:849 #: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:487 #: plugins/sudoers/visudo.c:493 msgid "unable to read the clock" msgstr "無法讀å–時é˜" -#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199 +#: plugins/sudoers/iolog.c:1214 plugins/sudoers/log_client.c:1217 +#: plugins/sudoers/log_client.c:1227 plugins/sudoers/log_client.c:1231 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s:內部錯誤,訊號 %d 無效" @@ -2287,15 +2565,15 @@ msgstr "ä¸æ”¯æ´çš„ LDAP URI 類型:%s" msgid "unable to mix ldap and ldaps URIs" msgstr "ç„¡æ³•æ··åˆ ldap å’Œ ldaps URI" -#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536 -#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553 -#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571 -#: plugins/sudoers/ldap_util.c:579 +#: plugins/sudoers/ldap_util.c:496 plugins/sudoers/ldap_util.c:503 +#: plugins/sudoers/ldap_util.c:511 plugins/sudoers/ldap_util.c:520 +#: plugins/sudoers/ldap_util.c:528 plugins/sudoers/ldap_util.c:538 +#: plugins/sudoers/ldap_util.c:546 #, c-format msgid "duplicate sudoOption: %s%s%s" msgstr "sudoOption 有é‡è¤‡ï¼š%s%s%s" -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600 +#: plugins/sudoers/ldap_util.c:565 plugins/sudoers/ldap_util.c:567 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "ç„¡æ³•è½‰æ› sudoOption: %s%s%s" @@ -2308,107 +2586,111 @@ msgstr "ç„¡æ³•é–‹å•Ÿç¨½æ ¸ç³»çµ±" msgid "unable to send audit message" msgstr "無法傳é€ç¨½æ ¸è¨Šæ¯" -#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/log_client.c:116 plugins/sudoers/log_client.c:396 +#: plugins/sudoers/log_client.c:1464 plugins/sudoers/log_client.c:2061 msgid "error in event loop" msgstr "事件循環ä¸ç™¼ç”ŸéŒ¯èª¤" -#: plugins/sudoers/log_client.c:193 +#: plugins/sudoers/log_client.c:196 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "建立新 SSL_CTX 物件失敗:%s" -#: plugins/sudoers/log_client.c:216 +#: plugins/sudoers/log_client.c:219 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "無法載入 %s 憑è‰æŽˆæ¬Šå–®ä½çµ„åˆ" -#: plugins/sudoers/log_client.c:236 +#: plugins/sudoers/log_client.c:239 #, c-format msgid "unable to load certificate %s" msgstr "無法載入 %s 憑è‰" -#: plugins/sudoers/log_client.c:249 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load private key %s" msgstr "無法載入 %s ç§é‘°" -#: plugins/sudoers/log_client.c:258 +#: plugins/sudoers/log_client.c:261 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "無法é…ç½® SSL 物件:%s" -#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 +#: plugins/sudoers/log_client.c:349 plugins/sudoers/log_client.c:354 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "TLS 連線至 %s:%s 失敗:%s" -#: plugins/sudoers/log_client.c:519 +#: plugins/sudoers/log_client.c:527 msgid "TLS initialization was unsuccessful" msgstr "TLS åˆå§‹åŒ–失敗" -#: plugins/sudoers/log_client.c:528 +#: plugins/sudoers/log_client.c:537 msgid "TLS handshake was unsuccessful" msgstr "TLS 交æ¡å¤±æ•—" -#: plugins/sudoers/log_client.c:1208 +#: plugins/sudoers/log_client.c:1235 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s:內部錯誤,退出狀態碼 %d 無效" -#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748 +#: plugins/sudoers/log_client.c:1602 +msgid "unable to unpack ServerMessage" +msgstr "無法解開 ServerMessage" + +#: plugins/sudoers/log_client.c:1754 plugins/sudoers/log_client.c:1778 msgid "lost connection to log server" msgstr "失去å°è¨˜éŒ„伺æœå™¨çš„連線" -#: plugins/sudoers/log_client.c:1825 +#: plugins/sudoers/log_client.c:1855 msgid "missing write buffer" msgstr "缺少寫入緩è¡å€" -#: plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2002 msgid "unable to connect to log server" msgstr "無法連線到記錄伺æœå™¨" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:283 msgid "user NOT in sudoers" msgstr "使用者ä¸åœ¨ sudoers ä¸" -#: plugins/sudoers/logging.c:246 +#: plugins/sudoers/logging.c:285 msgid "user NOT authorized on host" msgstr "使用者未å–å¾—æ¤ä¸»æ©Ÿä¸Šçš„授權" -#: plugins/sudoers/logging.c:248 +#: plugins/sudoers/logging.c:287 msgid "command not allowed" msgstr "ä¸å…許使用指令" -#: plugins/sudoers/logging.c:269 +#: plugins/sudoers/logging.c:308 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s ä¸åœ¨ sudoers 檔案ä¸ã€‚æ¤äº‹ä»¶å°‡æœƒå›žå ±ã€‚\n" -#: plugins/sudoers/logging.c:272 +#: plugins/sudoers/logging.c:311 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s 沒有權é™åœ¨ %s 上執行 sudo。æ¤äº‹ä»¶å°‡æœƒå›žå ±ã€‚\n" -#: plugins/sudoers/logging.c:276 +#: plugins/sudoers/logging.c:315 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "å°ä¸èµ·ï¼Œä½¿ç”¨è€… %s ä¸èƒ½åœ¨ %s 上執行 sudo。\n" -#: plugins/sudoers/logging.c:279 +#: plugins/sudoers/logging.c:318 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "å°ä¸èµ·ï¼Œä½¿ç”¨è€… %1$s ä¸å…許以 %8$s 上的 %5$s%6$s%7$s 身份執行「%2$s%3$s%4$sã€\n" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575 -#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579 -#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723 -#: plugins/sudoers/sudoers.c:725 +#: plugins/sudoers/logging.c:355 plugins/sudoers/sudoers.c:629 +#: plugins/sudoers/sudoers.c:631 plugins/sudoers/sudoers.c:633 +#: plugins/sudoers/sudoers.c:635 plugins/sudoers/sudoers.c:776 +#: plugins/sudoers/sudoers.c:778 #, c-format msgid "%s: command not found" msgstr "%s:找ä¸åˆ°æŒ‡ä»¤" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571 +#: plugins/sudoers/logging.c:357 plugins/sudoers/sudoers.c:625 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2417,26 +2699,21 @@ msgstr "" "忽略在「.ã€ä¸æ‰¾åˆ°çš„「%sã€\n" "請使用「sudo ./%sã€ï¼Œè‹¥é€™æ˜¯æ‚¨æƒ³åŸ·è¡Œçš„「%sã€ã€‚" -#: plugins/sudoers/logging.c:337 +#: plugins/sudoers/logging.c:376 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u 次密碼錯誤嘗試" -#: plugins/sudoers/logging.c:393 +#: plugins/sudoers/logging.c:432 msgid "authentication failure" msgstr "èªè‰å¤±æ•—" -#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +#: plugins/sudoers/logging.c:472 plugins/sudoers/logging.c:492 msgid "a password is required" msgstr "需è¦å¯†ç¢¼" -#: plugins/sudoers/logging.c:739 -#, c-format -msgid "unable to open log file: %s" -msgstr "無法開啟記錄檔案:%s" - -#: plugins/sudoers/logging.c:772 +#: plugins/sudoers/logging.c:889 #, c-format msgid "unable to write log file: %s" msgstr "無法寫入記錄檔案:%s" @@ -2446,7 +2723,7 @@ msgstr "無法寫入記錄檔案:%s" msgid "digest for %s (%s) is not in %s form" msgstr "%s(%s) 的摘è¦çš„å½¢å¼ä¸æ˜¯ %s" -#: plugins/sudoers/parse.c:530 +#: plugins/sudoers/parse.c:537 #, c-format msgid "" "\n" @@ -2455,7 +2732,7 @@ msgstr "" "\n" "LDAP 角色:%s\n" -#: plugins/sudoers/parse.c:533 +#: plugins/sudoers/parse.c:540 msgid "" "\n" "Sudoers entry:\n" @@ -2463,38 +2740,38 @@ msgstr "" "\n" "Sudoers æ¢ç›®ï¼š\n" -#: plugins/sudoers/parse.c:535 +#: plugins/sudoers/parse.c:542 msgid " RunAsUsers: " msgstr " RunAs 使用者:" -#: plugins/sudoers/parse.c:550 +#: plugins/sudoers/parse.c:557 msgid " RunAsGroups: " msgstr " RunAs 群組:" -#: plugins/sudoers/parse.c:560 +#: plugins/sudoers/parse.c:567 msgid " Options: " msgstr " é¸é …:" -#: plugins/sudoers/parse.c:614 +#: plugins/sudoers/parse.c:623 msgid " Commands:\n" msgstr " 指令:\n" -#: plugins/sudoers/parse.c:805 +#: plugins/sudoers/parse.c:814 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "比較 %s (%s 上) çš„é è¨æ¢ç›®ï¼š\n" -#: plugins/sudoers/parse.c:823 +#: plugins/sudoers/parse.c:832 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%s RunAs 和指令指定的é è¨å€¼ï¼š\n" -#: plugins/sudoers/parse.c:841 +#: plugins/sudoers/parse.c:850 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "使用者 %s å¯ä»¥åœ¨ %s 上執行以下指令:\n" -#: plugins/sudoers/parse.c:856 +#: plugins/sudoers/parse.c:865 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "使用者 %s 沒有權é™åœ¨ %s 上執行 sudo。\n" @@ -2509,64 +2786,64 @@ msgstr "將忽略ä¸å®Œæ•´çš„ sudoRole:cn:%s" msgid "invalid LDIF attribute: %s" msgstr "LDIF 屬性無效:%s" -#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "sudo å‰ç«¯è¨å®šçš„ %.*s 無效" -#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:320 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "無法解æžç¶²è·¯ä½å€åˆ—表" -#: plugins/sudoers/policy.c:465 +#: plugins/sudoers/policy.c:471 msgid "user name not set by sudo front-end" msgstr "sudo å‰ç«¯æœªè¨å®šä½¿ç”¨è€…å稱" -#: plugins/sudoers/policy.c:469 +#: plugins/sudoers/policy.c:475 msgid "user-ID not set by sudo front-end" msgstr "sudo å‰ç«¯æœªè¨å®šä½¿ç”¨è€… ID (user-ID)" -#: plugins/sudoers/policy.c:473 +#: plugins/sudoers/policy.c:479 msgid "group-ID not set by sudo front-end" msgstr "sudo å‰ç«¯æœªè¨å®šç¾¤çµ„ ID (group-ID)" -#: plugins/sudoers/policy.c:477 +#: plugins/sudoers/policy.c:483 msgid "host name not set by sudo front-end" msgstr "sudo å‰ç«¯æœªè¨å®šä¸»æ©Ÿå稱" -#: plugins/sudoers/policy.c:660 +#: plugins/sudoers/policy.c:685 #, c-format msgid "invalid working directory: %s" msgstr "無效的工作目錄:%s" -#: plugins/sudoers/policy.c:828 +#: plugins/sudoers/policy.c:861 #, c-format msgid "invalid chroot directory: %s" msgstr "無效的 chroot 目錄:%s" -#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229 +#: plugins/sudoers/policy.c:996 plugins/sudoers/visudo.c:229 #: plugins/sudoers/visudo.c:851 #, c-format msgid "unable to execute %s" msgstr "無法執行 %s" -#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067 -#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1066 plugins/sudoers/policy.c:1103 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/policy.c:1151 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s:來自 sudo å‰ç«¯çš„無效 mode 旗標:0x%x" -#: plugins/sudoers/policy.c:1146 +#: plugins/sudoers/policy.c:1182 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers ç–略外掛程å¼ç‰ˆæœ¬ %s\n" -#: plugins/sudoers/policy.c:1148 +#: plugins/sudoers/policy.c:1184 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers 檔案文法版本 %d\n" -#: plugins/sudoers/policy.c:1152 +#: plugins/sudoers/policy.c:1188 #, c-format msgid "" "\n" @@ -2575,27 +2852,27 @@ msgstr "" "\n" "Sudoers 路徑:%s\n" -#: plugins/sudoers/policy.c:1155 +#: plugins/sudoers/policy.c:1191 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 路徑:%s\n" -#: plugins/sudoers/policy.c:1157 +#: plugins/sudoers/policy.c:1193 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 路徑:%s\n" -#: plugins/sudoers/policy.c:1158 +#: plugins/sudoers/policy.c:1194 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 路徑:%s\n" -#: plugins/sudoers/policy.c:1191 +#: plugins/sudoers/policy.c:1227 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "無法註冊類型為 %d 的觸發器 (版本 %d.%d)" -#: plugins/sudoers/policy.c:1209 +#: plugins/sudoers/policy.c:1245 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "無法å–消註冊類型為 %d 的觸發器 (版本 %d.%d)" @@ -2664,48 +2941,48 @@ msgstr "ç„¡æ³•è§£æž %s 的群組" msgid "unable to parse gids for %s" msgstr "ç„¡æ³•è§£æž %s 的群組 ID" -#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441 -#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150 -#: plugins/sudoers/set_perms.c:1444 +#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:445 +#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 +#: plugins/sudoers/set_perms.c:1460 msgid "perm stack overflow" msgstr "權é™å †ç–Šæº¢ä½" -#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372 -#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1074 -#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377 -#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542 +#: plugins/sudoers/set_perms.c:125 plugins/sudoers/set_perms.c:376 +#: plugins/sudoers/set_perms.c:456 plugins/sudoers/set_perms.c:719 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1086 +#: plugins/sudoers/set_perms.c:1173 plugins/sudoers/set_perms.c:1393 +#: plugins/sudoers/set_perms.c:1471 plugins/sudoers/set_perms.c:1562 msgid "perm stack underflow" msgstr "權é™å †ç–Šåå‘溢ä½" -#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495 -#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485 +#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 +#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 msgid "unable to change to root gid" msgstr "無法切æ›ç‚º root 群組 ID" -#: plugins/sudoers/set_perms.c:272 plugins/sudoers/set_perms.c:592 -#: plugins/sudoers/set_perms.c:983 plugins/sudoers/set_perms.c:1288 +#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 +#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 msgid "unable to change to runas gid" msgstr "無法切æ›ç‚º runas 群組 ID" -#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:597 -#: plugins/sudoers/set_perms.c:988 plugins/sudoers/set_perms.c:1293 +#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 +#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 msgid "unable to set runas group vector" msgstr "無法è¨å®š runas 群組集åˆ" -#: plugins/sudoers/set_perms.c:288 plugins/sudoers/set_perms.c:608 -#: plugins/sudoers/set_perms.c:997 plugins/sudoers/set_perms.c:1302 +#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 +#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 msgid "unable to change to runas uid" msgstr "無法切æ›æˆ runas 使用者 ID" -#: plugins/sudoers/set_perms.c:306 plugins/sudoers/set_perms.c:626 -#: plugins/sudoers/set_perms.c:1013 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 +#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 msgid "unable to change to sudoers gid" msgstr "無法切æ›ç‚º sudoers 群組 ID" -#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 -#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 +#: plugins/sudoers/set_perms.c:363 plugins/sudoers/set_perms.c:706 +#: plugins/sudoers/set_perms.c:1073 plugins/sudoers/set_perms.c:1380 +#: plugins/sudoers/set_perms.c:1549 msgid "too many processes" msgstr "行程éŽå¤š" @@ -2734,252 +3011,254 @@ msgstr "無法åˆå§‹åŒ– SSS 來æºã€‚是å¦å·²åœ¨æ‚¨çš„é›»è…¦ä¸Šå®‰è£ SSSD?" msgid "unable to find symbol \"%s\" in %s" msgstr "無法在 %2$s ä¸æ‰¾åˆ°ç¬¦è™Ÿã€Œ%1$sã€" -#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985 +#: plugins/sudoers/sudoers.c:166 plugins/sudoers/sudoers.c:174 +#: plugins/sudoers/sudoers.c:228 plugins/sudoers/sudoers.c:249 +#: plugins/sudoers/sudoers.c:1040 msgid "problem with defaults entries" msgstr "é è¨æ¢ç›®æœ‰å•é¡Œ" -#: plugins/sudoers/sudoers.c:217 +#: plugins/sudoers/sudoers.c:253 msgid "no valid sudoers sources found, quitting" msgstr "未找到有效的 sudoers 來æºï¼Œé€€å‡º" -#: plugins/sudoers/sudoers.c:291 +#: plugins/sudoers/sudoers.c:327 #, c-format msgid "user not allowed to change root directory to %s" msgstr "ä¸å…許使用者切æ›æ ¹ç›®éŒ„至 %s" -#: plugins/sudoers/sudoers.c:293 +#: plugins/sudoers/sudoers.c:329 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "ä¸å…許您將 -R é¸é …與 %s 一起使用" -#: plugins/sudoers/sudoers.c:318 +#: plugins/sudoers/sudoers.c:354 #, c-format msgid "user not allowed to change directory to %s" msgstr "ä¸å…許使用者切æ›è‡³ %s 目錄" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:355 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "ä¸å…許您將 -D é¸é …與 %s 一起使用" -#: plugins/sudoers/sudoers.c:345 +#: plugins/sudoers/sudoers.c:382 msgid "no command specified" msgstr "未指定命令" -#: plugins/sudoers/sudoers.c:355 +#: plugins/sudoers/sudoers.c:407 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers 指定 root ä¸å…許執行 sudo" -#: plugins/sudoers/sudoers.c:403 +#: plugins/sudoers/sudoers.c:457 msgid "user not allowed to override closefrom limit" msgstr "使用者ä¸å…許覆蓋 closefrom é™åˆ¶" -#: plugins/sudoers/sudoers.c:404 +#: plugins/sudoers/sudoers.c:458 msgid "you are not permitted to use the -C option" msgstr "您沒有權é™ä½¿ç”¨ -C é¸é …" -#: plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:518 #, c-format msgid "timestamp owner (%s): No such user" msgstr "時間戳所有者 (%s):無æ¤ä½¿ç”¨è€…" -#: plugins/sudoers/sudoers.c:479 +#: plugins/sudoers/sudoers.c:533 msgid "no tty" msgstr "找ä¸åˆ°çµ‚端" -#: plugins/sudoers/sudoers.c:480 +#: plugins/sudoers/sudoers.c:534 msgid "sorry, you must have a tty to run sudo" msgstr "抱æ‰ï¼Œæ‚¨å¿…é ˆå…ˆè¦æœ‰çµ‚端æ‰èƒ½åŸ·è¡Œ sudo" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:541 #, c-format msgid "invalid shell for user %s: %s" msgstr "%s 使用者的 Shell 無效:%s" -#: plugins/sudoers/sudoers.c:570 +#: plugins/sudoers/sudoers.c:624 msgid "command in current directory" msgstr "ç›®å‰ç›®éŒ„ä¸çš„指令" -#: plugins/sudoers/sudoers.c:589 +#: plugins/sudoers/sudoers.c:643 msgid "user not allowed to set a command timeout" msgstr "使用者ä¸å…許è¨å®šå‘½ä»¤é€¾æ™‚" -#: plugins/sudoers/sudoers.c:591 +#: plugins/sudoers/sudoers.c:645 msgid "sorry, you are not allowed set a command timeout" msgstr "抱æ‰ï¼Œæ‚¨æ²’有權é™è¨å®šé€¾æ™‚時間" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:653 msgid "user not allowed to preserve the environment" msgstr "使用者ä¸å…許ä¿ç•™ç’°å¢ƒ" -#: plugins/sudoers/sudoers.c:601 +#: plugins/sudoers/sudoers.c:655 msgid "sorry, you are not allowed to preserve the environment" msgstr "抱æ‰ï¼Œæ‚¨æ²’有權é™ä¿ç•™ç’°å¢ƒ" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:989 msgid "command too long" msgstr "指令éŽé•·" -#: plugins/sudoers/sudoers.c:973 +#: plugins/sudoers/sudoers.c:1028 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit ä¸ç”¨ä»¥ sudo 執行" -#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547 +#: plugins/sudoers/sudoers.c:1087 plugins/sudoers/sudoreplay.c:1568 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "ç„¡æ³•è®€å– %s" -#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426 +#: plugins/sudoers/sudoers.c:1112 plugins/sudoers/visudo.c:426 #: plugins/sudoers/visudo.c:720 #, c-format msgid "unable to stat %s" msgstr "無法 stat %s" -#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009 +#: plugins/sudoers/sudoers.c:1116 plugins/sudoers/visudo.c:1009 #, c-format msgid "%s is not a regular file" msgstr "%s ä¸æ˜¯ä¸€èˆ¬æª”案" -#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138 +#: plugins/sudoers/sudoers.c:1120 plugins/sudoers/timestamp.c:252 toke.l:1148 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s 由使用者 ID %u 所有,應為 %u" -#: plugins/sudoers/sudoers.c:1069 toke.l:1143 +#: plugins/sudoers/sudoers.c:1124 toke.l:1153 #, c-format msgid "%s is world writable" msgstr "%s å…許任何人寫入" -#: plugins/sudoers/sudoers.c:1073 toke.l:1146 +#: plugins/sudoers/sudoers.c:1128 toke.l:1156 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s 屬於群組 ID %u,應為 %u" -#: plugins/sudoers/sudoers.c:1106 +#: plugins/sudoers/sudoers.c:1161 #, c-format msgid "only root can use \"-c %s\"" msgstr "åªæœ‰ root æ‰èƒ½ä½¿ç”¨ã€Œ-c %sã€" -#: plugins/sudoers/sudoers.c:1125 +#: plugins/sudoers/sudoers.c:1180 #, c-format -msgid "unknown login class: %s" -msgstr "未知的登入類別:%s" +msgid "unknown login class %s" +msgstr "未知登入類別 %s" -#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226 +#: plugins/sudoers/sudoers.c:1266 plugins/sudoers/sudoers.c:1281 #, c-format msgid "unable to resolve host %s" msgstr "無法解æžä¸»æ©Ÿï¼š%s" -#: plugins/sudoers/sudoreplay.c:257 +#: plugins/sudoers/sudoreplay.c:259 #, c-format msgid "invalid filter option: %s" msgstr "無效的éŽæ¿¾å™¨é¸é …:%s" -#: plugins/sudoers/sudoreplay.c:273 +#: plugins/sudoers/sudoreplay.c:275 #, c-format msgid "invalid max wait: %s" msgstr "無效的最大ç‰å¾…時間:%s" -#: plugins/sudoers/sudoreplay.c:296 +#: plugins/sudoers/sudoreplay.c:298 #, c-format msgid "invalid speed factor: %s" msgstr "ç„¡æ•ˆçš„é€Ÿåº¦å› æ•¸ï¼š%s" -#: plugins/sudoers/sudoreplay.c:332 +#: plugins/sudoers/sudoreplay.c:333 +#, c-format +msgid "invalid time offset %s" +msgstr "時間å移值 %s 無效" + +#: plugins/sudoers/sudoreplay.c:342 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:337 +#: plugins/sudoers/sudoreplay.c:347 #, c-format msgid "%s/timing: %s" msgstr "%s/計時:%s" -#: plugins/sudoers/sudoreplay.c:341 -#, c-format -msgid "%s/%s: %s" -msgstr "%s/%s: %s" - -#: plugins/sudoers/sudoreplay.c:365 +#: plugins/sudoers/sudoreplay.c:375 #, c-format msgid "Replaying sudo session: %s" msgstr "é‡æ’ sudo 工作階段:%s" -#: plugins/sudoers/sudoreplay.c:627 +#: plugins/sudoers/sudoreplay.c:637 msgid "unable to set tty to raw mode" msgstr "無法將終端è¨ç‚ºåŽŸå§‹ (RAW) 模å¼" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:688 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "è¦å‘Šï¼šæ‚¨çš„終端尺寸太å°ï¼Œä¸èƒ½æ£å¸¸åœ°é‡æ’記錄。\n" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:689 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "記錄的幾何尺寸為 %dx%d,但您終端的幾何尺寸為 %dx%d。" -#: plugins/sudoers/sudoreplay.c:707 +#: plugins/sudoers/sudoreplay.c:717 msgid "Replay finished, press any key to restore the terminal." msgstr "é‡æ’完æˆï¼Œè«‹æŒ‰ä»»æ„éµè¿”回終端。" -#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 +#: plugins/sudoers/sudoreplay.c:1218 plugins/sudoers/sudoreplay.c:1248 #, c-format msgid "ambiguous expression \"%s\"" msgstr "ä¸æ˜Žç¢ºçš„表é”å¼ã€Œ%sã€" -#: plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1270 msgid "unmatched ')' in expression" msgstr "表é”å¼ä¸çš„「)ã€ä¸å°ç¨±" -#: plugins/sudoers/sudoreplay.c:1253 +#: plugins/sudoers/sudoreplay.c:1274 #, c-format msgid "unknown search term \"%s\"" msgstr "未知的æœå°‹è©žå½™ã€Œ%sã€" -#: plugins/sudoers/sudoreplay.c:1268 +#: plugins/sudoers/sudoreplay.c:1289 #, c-format msgid "%s requires an argument" msgstr "%s 需è¦åƒæ•¸" -#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 +#: plugins/sudoers/sudoreplay.c:1292 plugins/sudoers/sudoreplay.c:1544 #, c-format msgid "invalid regular expression: %s" msgstr "無效的æ£è¦è¡¨ç¤ºå¼ï¼š%s" -#: plugins/sudoers/sudoreplay.c:1276 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "無法解æžæ—¥æœŸã€Œ%sã€" -#: plugins/sudoers/sudoreplay.c:1285 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "表é”å¼ä¸çš„「(ã€ä¸å°ç¨±" -#: plugins/sudoers/sudoreplay.c:1287 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "無效的çµå°¾å—元「orã€" -#: plugins/sudoers/sudoreplay.c:1289 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "無效的çµå°¾å—元「!ã€" -#: plugins/sudoers/sudoreplay.c:1347 +#: plugins/sudoers/sudoreplay.c:1368 #, c-format msgid "unknown search type %d" msgstr "未知的æœå°‹é¡žåž‹ %d" -#: plugins/sudoers/sudoreplay.c:1614 +#: plugins/sudoers/sudoreplay.c:1635 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "用法:%s [-hnRS] [-d 目錄] [-m 數值] [-s 數值] ID\n" -#: plugins/sudoers/sudoreplay.c:1617 +#: plugins/sudoers/sudoreplay.c:1638 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "用法:%s [-h] [-d 目錄] -l [æœå°‹è¡¨é”å¼]\n" -#: plugins/sudoers/sudoreplay.c:1626 +#: plugins/sudoers/sudoreplay.c:1647 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2988,7 +3267,7 @@ msgstr "" "%s - é‡æ’ sudo 工作階段記錄\n" "\n" -#: plugins/sudoers/sudoreplay.c:1628 +#: plugins/sudoers/sudoreplay.c:1649 msgid "" "\n" "Options:\n" @@ -3200,21 +3479,16 @@ msgstr "%s:解æžæ£ç¢º\n" msgid "%s busy, try again later" msgstr "%s 忙碌ä¸ï¼Œè«‹ç¨å¾Œé‡è©¦" -#: plugins/sudoers/visudo.c:971 -#, c-format -msgid "unable to lock %s" -msgstr "無法鎖定 %s" - #: plugins/sudoers/visudo.c:972 msgid "Edit anyway? [y/N]" msgstr "ä»ç„¶ç·¨è¼¯ï¼Ÿ[y/N]" -#: plugins/sudoers/visudo.c:1067 +#: plugins/sudoers/visudo.c:1068 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "è¦å‘Šï¼š%s:%d:%d: %s「%sã€æœªä½¿ç”¨" -#: plugins/sudoers/visudo.c:1183 +#: plugins/sudoers/visudo.c:1184 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3223,7 +3497,7 @@ msgstr "" "%s - 安全地編輯 sudoers 檔案\n" "\n" -#: plugins/sudoers/visudo.c:1185 +#: plugins/sudoers/visudo.c:1186 msgid "" "\n" "Options:\n" @@ -3247,11 +3521,11 @@ msgstr "" msgid "empty string" msgstr "å—串空白" -#: toke.l:199 toke.l:503 +#: toke.l:199 toke.l:513 msgid "empty group" msgstr "group 空白" -#: toke.l:209 toke.l:501 +#: toke.l:209 toke.l:511 msgid "empty netgroup" msgstr "netgroup 空白" @@ -3259,18 +3533,21 @@ msgstr "netgroup 空白" msgid "invalid line continuation" msgstr "無效的行接續符號" -#: toke.l:540 toke.l:552 +#: toke.l:550 toke.l:562 msgid "invalid IPv6 address" msgstr "無效的 IPv6 地å€" -#: toke.l:779 +#: toke.l:789 msgid "unexpected line break in string" msgstr "å—串ä¸æœ‰éžé 期的斷行å—å…ƒ" -#: toke.l:1109 +#: toke.l:1119 msgid "too many levels of includes" msgstr "include 嵌套層數éŽå¤š" +#~ msgid "%s:%d unknown key: %s" +#~ msgstr "%s:%d 未知éµï¼š%s" + #~ msgid "unable to get TLS server method: %s" #~ msgstr "無法å–å¾— TLS 伺æœå™¨æ–¹æ³•ï¼š%s" diff --git a/plugins/sudoers/policy.c b/plugins/sudoers/policy.c index e42fb932d..eb1ce43b7 100644 --- a/plugins/sudoers/policy.c +++ b/plugins/sudoers/policy.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2010-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -38,6 +38,8 @@ #include "sudoers_version.h" #include "interfaces.h" +static char **command_info; + /* * Command execution args to be filled in: argv, envp and command info. */ @@ -59,7 +61,7 @@ static bool session_opened; extern sudo_dso_public struct policy_plugin sudoers_policy; #ifdef HAVE_BSD_AUTH_H -extern char *login_style; +char *login_style; #endif /* HAVE_BSD_AUTH_H */ static int @@ -81,7 +83,7 @@ parse_bool(const char *line, int varlen, int *flags, int fval) } } -#define RUN_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_IMPLIED_SHELL|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_PRESERVE_GROUPS|MODE_SHELL|MODE_RUN) +#define RUN_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_IMPLIED_SHELL|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_PRESERVE_GROUPS|MODE_SHELL|MODE_RUN|MODE_POLICY_INTERCEPTED) #define EDIT_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_EDIT) #define LIST_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_LIST|MODE_CHECK) #define VALIDATE_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_VALIDATE) @@ -92,11 +94,12 @@ parse_bool(const char *line, int varlen, int *flags, int fval) * Fills in struct sudo_user and other common sudoers state. */ int -sudoers_policy_deserialize_info(void *v) +sudoers_policy_deserialize_info(void *v, struct defaults_list *defaults) { struct sudoers_open_info *info = v; const char *p, *errstr, *groups = NULL; const char *remhost = NULL; + unsigned char uuid[16]; char * const *cur; int flags = 0; debug_decl(sudoers_policy_deserialize_info, SUDOERS_DEBUG_PLUGIN); @@ -183,6 +186,7 @@ sudoers_policy_deserialize_info(void *v) } /* Parse command line settings. */ + sudo_mode = 0; user_closefrom = -1; for (cur = info->settings; *cur != NULL; cur++) { if (MATCHES(*cur, "closefrom=")) { @@ -220,7 +224,8 @@ sudoers_policy_deserialize_info(void *v) if (MATCHES(*cur, "prompt=")) { /* Allow epmpty prompt. */ user_prompt = *cur + sizeof("prompt=") - 1; - def_passprompt_override = true; + if (!append_default("passprompt_override", "true", true, NULL, defaults)) + goto oom; continue; } if (MATCHES(*cur, "set_home=")) { @@ -280,7 +285,8 @@ sudoers_policy_deserialize_info(void *v) if (MATCHES(*cur, "login_class=")) { CHECK(*cur, "login_class="); login_class = *cur + sizeof("login_class=") - 1; - def_use_loginclass = true; + if (!append_default("use_loginclass", "true", true, NULL, defaults)) + goto oom; continue; } #ifdef HAVE_SELINUX @@ -303,7 +309,7 @@ sudoers_policy_deserialize_info(void *v) #endif /* HAVE_SELINUX */ #ifdef HAVE_BSD_AUTH_H if (MATCHES(*cur, "bsdauth_type=")) { - CHECK(*cur, "login_style="); + CHECK(*cur, "bsdauth_type="); login_style = *cur + sizeof("bsdauth_type=") - 1; continue; } @@ -524,6 +530,13 @@ sudoers_policy_deserialize_info(void *v) /* Some systems support fexecve() which we use for digest matches. */ cmnd_fd = -1; + /* Create a UUID to store in the event log. */ + sudo_uuid_create(uuid); + if (sudo_uuid_to_string(uuid, sudo_user.uuid_str, sizeof(sudo_user.uuid_str)) == NULL) { + sudo_warnx("%s", U_("unable to generate UUID")); + goto bad; + } + #ifdef NO_ROOT_MAILER eventlog_set_mailuid(user_uid); #endif @@ -595,15 +608,23 @@ sudoers_policy_store_result(bool accepted, char *argv[], char *envp[], mode_t cmnd_umask, char *iolog_path, void *v) { struct sudoers_exec_args *exec_args = v; - char **command_info; int info_len = 0; debug_decl(sudoers_policy_store_result, SUDOERS_DEBUG_PLUGIN); if (exec_args == NULL) debug_return_bool(true); /* nothing to do */ + /* Free old data, if any. */ + if (command_info != NULL) { + char **cur; + sudoers_gc_remove(GC_VECTOR, command_info); + for (cur = command_info; *cur != NULL; cur++) + free(*cur); + free(command_info); + } + /* Increase the length of command_info as needed, it is *not* checked. */ - command_info = calloc(55, sizeof(char *)); + command_info = calloc(57, sizeof(char *)); if (command_info == NULL) goto oom; @@ -612,6 +633,10 @@ sudoers_policy_store_result(bool accepted, char *argv[], char *envp[], if (command_info[info_len++] == NULL) goto oom; } + if (def_log_subcmds) { + if ((command_info[info_len++] = strdup("log_subcmds=true")) == NULL) + goto oom; + } if (def_log_input || def_log_output) { if (iolog_path) command_info[info_len++] = iolog_path; /* now owned */ @@ -757,6 +782,10 @@ sudoers_policy_store_result(bool accepted, char *argv[], char *envp[], if ((command_info[info_len++] = strdup("ignore_iolog_errors=true")) == NULL) goto oom; } + if (def_intercept) { + if ((command_info[info_len++] = strdup("intercept=true")) == NULL) + goto oom; + } if (def_noexec) { if ((command_info[info_len++] = strdup("noexec=true")) == NULL) goto oom; @@ -949,6 +978,7 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation, if (sudo_version >= SUDO_API_MKVERSION(1, 15)) *errstr = audit_msg; } + debug_return_int(ret); } @@ -961,10 +991,11 @@ sudoers_policy_close(int exit_status, int error_code) /* Close the session we opened in sudoers_policy_init_session(). */ (void)sudo_auth_end_session(runas_pw); - /* We do not currently log the exit status. */ if (error_code) { errno = error_code; sudo_warn(U_("unable to execute %s"), safe_cmnd); + } else { + log_exit_status(exit_status); } } @@ -977,12 +1008,13 @@ sudoers_policy_close(int exit_status, int error_code) /* Free sudoers sources, sudo_user and passwd/group caches. */ sudoers_cleanup(); + /* command_info is freed by the g/c code. */ + command_info = NULL; + /* Free error message passed back to front-end, if any. */ free(audit_msg); audit_msg = NULL; - /* XXX - leaks NewArgv */ - /* sudoers_debug_deregister() calls sudo_debug_exit() for us. */ sudoers_debug_deregister(); } @@ -1044,8 +1076,8 @@ sudoers_policy_check(int argc, char * const argv[], char *env_add[], #ifndef NO_LEAKS if (ret == true && sudo_version >= SUDO_API_MKVERSION(1, 3)) { /* Unset close function if we don't need it to avoid extra process. */ - if (!def_log_input && !def_log_output && !def_use_pty && - !sudo_auth_needs_end_session()) + if (!def_log_input && !def_log_output && !def_log_exit_status && + !def_use_pty && !sudo_auth_needs_end_session()) sudoers_policy.close = NULL; } #endif @@ -1124,7 +1156,7 @@ sudoers_policy_list(int argc, char * const argv[], int verbose, if (list_user) { list_pw = sudo_getpwnam(list_user); if (list_pw == NULL) { - sudo_warnx(U_("unknown user: %s"), list_user); + sudo_warnx(U_("unknown user %s"), list_user); debug_return_int(-1); } } diff --git a/plugins/sudoers/prompt.c b/plugins/sudoers/prompt.c index 0632b3467..bd00c4ed8 100644 --- a/plugins/sudoers/prompt.c +++ b/plugins/sudoers/prompt.c @@ -45,12 +45,12 @@ expand_prompt(const char *old_prompt, const char *auth_user) size_t len, n; int subst; const char *p; - char *np, *new_prompt, *endp; + char *np, *new_prompt; debug_decl(expand_prompt, SUDOERS_DEBUG_AUTH); /* How much space do we need to malloc for the prompt? */ subst = 0; - for (p = old_prompt, len = strlen(old_prompt); *p; p++) { + for (p = old_prompt, len = strlen(old_prompt); *p != '\0'; p++) { if (p[0] =='%') { switch (p[1]) { case 'h': @@ -95,44 +95,48 @@ expand_prompt(const char *old_prompt, const char *auth_user) } if (subst) { - endp = new_prompt + len; - for (p = old_prompt, np = new_prompt; *p; p++) { + for (p = old_prompt, np = new_prompt; *p != '\0'; p++) { if (p[0] =='%') { switch (p[1]) { case 'h': p++; - n = strlcpy(np, user_shost, np - endp); - if (n >= (size_t)(np - endp)) + n = strlcpy(np, user_shost, len); + if (n >= len) goto oflow; np += n; + len -= n; continue; case 'H': p++; - n = strlcpy(np, user_host, np - endp); - if (n >= (size_t)(np - endp)) + n = strlcpy(np, user_host, len); + if (n >= len) goto oflow; np += n; + len -= n; continue; case 'p': p++; - n = strlcpy(np, auth_user, np - endp); - if (n >= (size_t)(np - endp)) - goto oflow; + n = strlcpy(np, auth_user, len); + if (n >= len) + goto oflow; np += n; + len -= n; continue; case 'u': p++; - n = strlcpy(np, user_name, np - endp); - if (n >= (size_t)(np - endp)) + n = strlcpy(np, user_name, len); + if (n >= len) goto oflow; np += n; + len -= n; continue; case 'U': p++; - n = strlcpy(np, runas_pw->pw_name, np - endp); - if (n >= (size_t)(np - endp)) + n = strlcpy(np, runas_pw->pw_name, len); + if (n >= len) goto oflow; np += n; + len -= n; continue; case '%': /* convert %% -> % */ @@ -143,10 +147,13 @@ expand_prompt(const char *old_prompt, const char *auth_user) break; } } - *np++ = *p; - if (np >= endp) + if (len < 2) /* len includes NUL */ goto oflow; + *np++ = *p; + len--; } + if (len != 1) + goto oflow; *np = '\0'; } else { /* Nothing to expand. */ diff --git a/plugins/sudoers/regress/fuzz/fuzz_policy.c b/plugins/sudoers/regress/fuzz/fuzz_policy.c index ff44bfc26..15f745b27 100644 --- a/plugins/sudoers/regress/fuzz/fuzz_policy.c +++ b/plugins/sudoers/regress/fuzz/fuzz_policy.c @@ -383,17 +383,16 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) sudoers_policy.show_version(true); break; case PASS_CHECK_LOG_LOCAL: { - struct list_members savedlist; - /* sudo command w/ local I/O logging (MODE_RUN) */ - memcpy(&savedlist, &def_log_servers, sizeof(savedlist)); - SLIST_INIT(&def_log_servers); + sudoers_policy.check_policy(argv.len, argv.entries, + env_add.entries, &command_info, &argv_out, &user_env_out, + &errstr); + /* call check_policy() again to check for leaks. */ sudoers_policy.check_policy(argv.len, argv.entries, env_add.entries, &command_info, &argv_out, &user_env_out, &errstr); /* sudo_auth_begin_session() is stubbed out below. */ sudoers_policy.init_session(NULL, NULL, NULL); - memcpy(&def_log_servers, &savedlist, sizeof(savedlist)); break; } case PASS_CHECK_LOG_REMOTE: @@ -401,6 +400,10 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) sudoers_policy.check_policy(argv.len, argv.entries, env_add.entries, &command_info, &argv_out, &user_env_out, &errstr); + /* call check_policy() again to check for leaks. */ + sudoers_policy.check_policy(argv.len, argv.entries, + env_add.entries, &command_info, &argv_out, &user_env_out, + &errstr); /* sudo_auth_begin_session() is stubbed out below. */ sudoers_policy.init_session(NULL, NULL, NULL); break; @@ -417,29 +420,44 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) sudoers_policy.check_policy(argv.len, argv.entries, env_add.entries, &command_info, &argv_out, &user_env_out, &errstr); + /* call check_policy() again to check for leaks. */ + sudoers_policy.check_policy(argv.len, argv.entries, + env_add.entries, &command_info, &argv_out, &user_env_out, + &errstr); /* sudo_auth_begin_session() is stubbed out below. */ sudoers_policy.init_session(NULL, NULL, NULL); break; case PASS_LIST: /* sudo -l (MODE_LIST) */ sudoers_policy.list(0, NULL, false, NULL, &errstr); + /* call list() again to check for leaks. */ + sudoers_policy.list(0, NULL, false, NULL, &errstr); break; case PASS_LIST_OTHER: /* sudo -l -U root (MODE_LIST) */ sudoers_policy.list(0, NULL, false, "root", &errstr); + /* call list() again to check for leaks. */ + sudoers_policy.list(0, NULL, false, "root", &errstr); break; case PASS_LIST_CHECK: /* sudo -l command (MODE_CHECK) */ sudoers_policy.list(argv.len, argv.entries, false, NULL, &errstr); + /* call list() again to check for leaks. */ + sudoers_policy.list(argv.len, argv.entries, false, NULL, + &errstr); break; case PASS_VALIDATE: /* sudo -v (MODE_VALIDATE) */ sudoers_policy.validate(&errstr); + /* call validate() again to check for leaks. */ + sudoers_policy.validate(&errstr); break; case PASS_INVALIDATE: /* sudo -k */ sudoers_policy.invalidate(false); + /* call invalidate() again to check for leaks. */ + sudoers_policy.invalidate(false); break; } } @@ -608,11 +626,13 @@ sudo_file_getdefs(struct sudo_nss *nss) set_default("iolog_mode", "0640", true, "sudoers", 1, 1, false); set_default("iolog_user", NULL, false, "sudoers", 1, 1, false); set_default("iolog_group", NULL, false, "sudoers", 1, 1, false); - set_default("log_servers", "localhost", true, "sudoers", 1, 1, false); - set_default("log_server_timeout", "30", true, "sudoers", 1, 1, false); - set_default("log_server_cabundle", "/etc/ssl/cacert.pem", true, "sudoers", 1, 1, false); - set_default("log_server_peer_cert", "/etc/ssl/localhost.crt", true, "sudoers", 1, 1, false); - set_default("log_server_peer_key", "/etc/ssl/private/localhost.key", true, "sudoers", 1, 1, false); + if (pass != PASS_CHECK_LOG_LOCAL) { + set_default("log_servers", "localhost", true, "sudoers", 1, 1, false); + set_default("log_server_timeout", "30", true, "sudoers", 1, 1, false); + set_default("log_server_cabundle", "/etc/ssl/cacert.pem", true, "sudoers", 1, 1, false); + set_default("log_server_peer_cert", "/etc/ssl/localhost.crt", true, "sudoers", 1, 1, false); + set_default("log_server_peer_key", "/etc/ssl/private/localhost.key", true, "sudoers", 1, 1, false); + } return 0; } @@ -712,6 +732,13 @@ log_failure(int status, int flags) } /* STUB */ +bool +log_exit_status(int exit_status) +{ + return true; +} + +/* STUB */ int audit_failure(char *const argv[], char const *const fmt, ...) { diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers.c b/plugins/sudoers/regress/fuzz/fuzz_sudoers.c index 19eb4ed61..a9e34ee1c 100644 --- a/plugins/sudoers/regress/fuzz/fuzz_sudoers.c +++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers.c @@ -48,6 +48,7 @@ struct sudo_user sudo_user; struct passwd *list_pw; sudo_conv_t sudo_conv = fuzz_conversation; bool sudoers_recovery = true; +int sudo_mode; FILE * open_sudoers(const char *file, bool doedit, bool *keepopen) @@ -304,7 +305,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) sudo_pw_delref(sudo_user.pw); sudo_user.pw = sudo_getpwnam(user_name); if (sudo_user.pw == NULL) { - fprintf(stderr, "unknown user: %s\n", user_name); + fprintf(stderr, "unknown user %s\n", user_name); continue; } @@ -321,7 +322,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) runas_pw = sudo_getpwnam("root"); } if (runas_pw == NULL) { - fprintf(stderr, "unknown run user: %s\n", + fprintf(stderr, "unknown run user %s\n", sudo_user.runas_user); continue; } @@ -334,7 +335,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) SET(sudo_user.flags, RUNAS_GROUP_SPECIFIED); runas_gr = sudo_getgrnam(sudo_user.runas_group); if (runas_gr == NULL) { - fprintf(stderr, "unknown run group: %s\n", + fprintf(stderr, "unknown run group %s\n", sudo_user.runas_group); continue; } diff --git a/plugins/sudoers/set_perms.c b/plugins/sudoers/set_perms.c index 31e5f6614..77ce395d0 100644 --- a/plugins/sudoers/set_perms.c +++ b/plugins/sudoers/set_perms.c @@ -80,7 +80,7 @@ rewind_perms(void) { debug_decl(rewind_perms, SUDOERS_DEBUG_PERMS); - if (perm_stack_depth != 0) { + if (perm_stack_depth > 0) { while (perm_stack_depth > 1) { if (!restore_perms()) debug_return_bool(false); @@ -116,8 +116,11 @@ set_perms(int perm) goto bad; } - state = &perm_stack[perm_stack_depth]; - if (perm != PERM_INITIAL) { + if (perm == PERM_INITIAL) { + if (perm_stack_depth > 1) + rewind_perms(); + perm_stack_depth = 0; + } else { if (perm_stack_depth == 0) { errstr = N_("perm stack underflow"); errno = EINVAL; @@ -125,6 +128,7 @@ set_perms(int perm) } ostate = &perm_stack[perm_stack_depth - 1]; } + state = &perm_stack[perm_stack_depth]; switch (perm) { case PERM_INITIAL: @@ -443,8 +447,11 @@ set_perms(int perm) goto bad; } - state = &perm_stack[perm_stack_depth]; - if (perm != PERM_INITIAL) { + if (perm == PERM_INITIAL) { + if (perm_stack_depth > 1) + rewind_perms(); + perm_stack_depth = 0; + } else { if (perm_stack_depth == 0) { errstr = N_("perm stack underflow"); errno = EINVAL; @@ -452,6 +459,7 @@ set_perms(int perm) } ostate = &perm_stack[perm_stack_depth - 1]; } + state = &perm_stack[perm_stack_depth]; switch (perm) { case PERM_INITIAL: @@ -846,8 +854,11 @@ set_perms(int perm) goto bad; } - state = &perm_stack[perm_stack_depth]; - if (perm != PERM_INITIAL) { + if (perm == PERM_INITIAL) { + if (perm_stack_depth > 1) + rewind_perms(); + perm_stack_depth = 0; + } else { if (perm_stack_depth == 0) { errstr = N_("perm stack underflow"); errno = EINVAL; @@ -855,6 +866,7 @@ set_perms(int perm) } ostate = &perm_stack[perm_stack_depth - 1]; } + state = &perm_stack[perm_stack_depth]; switch (perm) { case PERM_INITIAL: @@ -1152,8 +1164,11 @@ set_perms(int perm) goto bad; } - state = &perm_stack[perm_stack_depth]; - if (perm != PERM_INITIAL) { + if (perm == PERM_INITIAL) { + if (perm_stack_depth > 1) + rewind_perms(); + perm_stack_depth = 0; + } else { if (perm_stack_depth == 0) { errstr = N_("perm stack underflow"); errno = EINVAL; @@ -1161,6 +1176,7 @@ set_perms(int perm) } ostate = &perm_stack[perm_stack_depth - 1]; } + state = &perm_stack[perm_stack_depth]; /* * Since we only have setuid() and seteuid() and semantics @@ -1446,8 +1462,11 @@ set_perms(int perm) goto bad; } - state = &perm_stack[perm_stack_depth]; - if (perm != PERM_INITIAL) { + if (perm == PERM_INITIAL) { + if (perm_stack_depth > 1) + rewind_perms(); + perm_stack_depth = 0; + } else { if (perm_stack_depth == 0) { errstr = N_("perm stack underflow"); errno = EINVAL; @@ -1455,6 +1474,7 @@ set_perms(int perm) } ostate = &perm_stack[perm_stack_depth - 1]; } + state = &perm_stack[perm_stack_depth]; switch (perm) { case PERM_INITIAL: diff --git a/plugins/sudoers/sssd.c b/plugins/sudoers/sssd.c index 02ec865ae..e396d8466 100644 --- a/plugins/sudoers/sssd.c +++ b/plugins/sudoers/sssd.c @@ -460,7 +460,7 @@ sudo_sss_parse_options(struct sudo_sss_handle *handle, struct sss_sudo_rule *rul int op; op = sudo_ldap_parse_option(val_array[i], &var, &val); - if (!sudo_ldap_add_default(var, val, op, source, defs)) + if (!append_default(var, val, op, source, defs)) goto oom; } ret = true; diff --git a/plugins/sudoers/sudo_ldap.h b/plugins/sudoers/sudo_ldap.h index c42853570..1c0035dbe 100644 --- a/plugins/sudoers/sudo_ldap.h +++ b/plugins/sudoers/sudo_ldap.h @@ -24,7 +24,6 @@ typedef char * (*sudo_ldap_iter_t)(void **); /* ldap_util.c */ bool sudo_ldap_is_negated(char **valp); -bool sudo_ldap_add_default(const char *var, const char *val, int op, char *source, struct defaults_list *defs); int sudo_ldap_parse_option(char *optstr, char **varp, char **valp); struct privilege *sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers, void *runasgroups, void *cmnds, void *opts, const char *notbefore, const char *notafter, bool warnings, bool store_options, sudo_ldap_iter_t iter); struct member *sudo_ldap_new_member_all(void); diff --git a/plugins/sudoers/sudoers.c b/plugins/sudoers/sudoers.c index 9b812746f..4fa323975 100644 --- a/plugins/sudoers/sudoers.c +++ b/plugins/sudoers/sudoers.c @@ -85,9 +85,6 @@ struct sudo_user sudo_user; struct passwd *list_pw; uid_t timestamp_uid; gid_t timestamp_gid; -#ifdef HAVE_BSD_AUTH_H -char *login_style; -#endif /* HAVE_BSD_AUTH_H */ bool force_umask; int sudo_mode; @@ -96,6 +93,7 @@ static struct sudo_nss_list *snl; static bool unknown_runas_uid; static bool unknown_runas_gid; static int cmnd_status = -1; +static struct defaults_list initial_defaults = TAILQ_HEAD_INITIALIZER(initial_defaults); #ifdef __linux__ static struct rlimit nproclimit; @@ -151,6 +149,36 @@ restore_nproc(void) #endif /* __linux__ */ } +static bool +sudoers_reinit_defaults(void) +{ + struct sudo_nss *nss, *nss_next; + debug_decl(sudoers_reinit_defaults, SUDOERS_DEBUG_PLUGIN); + + if (!init_defaults()) { + sudo_warnx("%s", U_("unable to initialize sudoers default values")); + debug_return_bool(false); + } + + if (!update_defaults(NULL, &initial_defaults, + SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS, false)) { + log_warningx(SLOG_SEND_MAIL|SLOG_NO_STDERR, + N_("problem with defaults entries")); + debug_return_bool(false); + } + + TAILQ_FOREACH_SAFE(nss, snl, entries, nss_next) { + if (nss->getdefs(nss) == -1 || !update_defaults(nss->parse_tree, NULL, + SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS, false)) { + log_warningx(SLOG_SEND_MAIL|SLOG_NO_STDERR, + N_("problem with defaults entries")); + /* not a fatal error */ + } + } + + debug_return_int(true); +} + int sudoers_init(void *info, char * const envp[]) { @@ -179,7 +207,7 @@ sudoers_init(void *info, char * const envp[]) } /* Parse info from front-end. */ - sudo_mode = sudoers_policy_deserialize_info(info); + sudo_mode = sudoers_policy_deserialize_info(info, &initial_defaults); if (ISSET(sudo_mode, MODE_ERROR)) debug_return_int(-1); @@ -193,6 +221,14 @@ sudoers_init(void *info, char * const envp[]) if (!set_perms(PERM_ROOT)) debug_return_int(-1); + /* Update defaults set by front-end. */ + if (!update_defaults(NULL, &initial_defaults, + SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS, false)) { + log_warningx(SLOG_SEND_MAIL|SLOG_NO_STDERR, + N_("problem with defaults entries")); + debug_return_int(-1); + } + /* * Open and parse sudoers, set global defaults. * Uses the C locale unless another is specified in sudoers. @@ -329,13 +365,14 @@ check_user_runcwd(void) debug_return_bool(true); } +static bool need_reinit; + int sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], bool verbose, void *closure) { char *iolog_path = NULL; mode_t cmnd_umask = ACCESSPERMS; - struct sudo_nss *nss; int oldlocale, validated, ret = -1; debug_decl(sudoers_policy_main, SUDOERS_DEBUG_PLUGIN); @@ -346,6 +383,21 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], debug_return_int(-1); } + /* Was previous command was intercepted? */ + if (def_intercept) + SET(sudo_mode, MODE_POLICY_INTERCEPTED); + + /* Only certain mode flags are legal for intercepted commands. */ + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) + sudo_mode &= MODE_INTERCEPT_MASK; + + /* Re-initialize defaults if we are called multiple times. */ + if (need_reinit) { + if (!sudoers_reinit_defaults()) + debug_return_int(-1); + } + need_reinit = true; + unlimit_nproc(); /* Is root even allowed to run sudo? */ @@ -364,10 +416,13 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], sudo_user.env_vars = env_add; /* - * Make a local copy of argc/argv, with special handling - * for the '-i' option. + * Make a local copy of argc/argv, with special handling for the + * '-i' option. We also allocate an extra slot for bash's --login. */ - /* Must leave an extra slot before NewArgv for bash's --login */ + if (NewArgv != NULL) { + sudoers_gc_remove(GC_PTR, NewArgv); + free(NewArgv); + } NewArgc = argc; NewArgv = reallocarray(NULL, NewArgc + 2, sizeof(char *)); if (NewArgv == NULL) { @@ -375,7 +430,6 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], goto done; } sudoers_gc_add(GC_PTR, NewArgv); - NewArgv++; /* reserve an extra slot for --login */ memcpy(NewArgv, argv, argc * sizeof(char *)); NewArgv[NewArgc] = NULL; if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) { @@ -429,12 +483,12 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], /* Defer uid/gid checks until after defaults have been updated. */ if (unknown_runas_uid && !def_runas_allow_unknown_id) { - log_warningx(SLOG_AUDIT, N_("unknown user: %s"), runas_pw->pw_name); + log_warningx(SLOG_AUDIT, N_("unknown user %s"), runas_pw->pw_name); goto done; } if (runas_gr != NULL) { if (unknown_runas_gid && !def_runas_allow_unknown_id) { - log_warningx(SLOG_AUDIT, N_("unknown group: %s"), + log_warningx(SLOG_AUDIT, N_("unknown group %s"), runas_gr->gr_name); goto done; } @@ -670,11 +724,10 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], */ if (NewArgc > 1 && strcmp(NewArgv[0], "-bash") == 0 && strcmp(NewArgv[1], "-c") == 0) { - /* Use the extra slot before NewArgv so we can store --login. */ - NewArgv--; - NewArgc++; - NewArgv[0] = NewArgv[1]; + /* We allocated extra space for the --login above. */ + memmove(&NewArgv[2], &NewArgv[1], sizeof(char *) * (NewArgc - 1)); NewArgv[1] = "--login"; + NewArgc++; } #if defined(_AIX) || (defined(__linux__) && !defined(HAVE_PAM)) @@ -726,7 +779,9 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], env_editor ? env_editor : def_editor); goto bad; } - sudoers_gc_add(GC_EDIT_ARGS, edit_argv); + /* find_editor() already g/c'd edit_argv[] */ + sudoers_gc_remove(GC_PTR, NewArgv); + free(NewArgv); NewArgv = edit_argv; NewArgc = edit_argc; @@ -740,11 +795,6 @@ bad: ret = false; done: - /* Cleanup sudoers sources */ - TAILQ_FOREACH(nss, snl, entries) { - nss->close(nss); - } - snl = NULL; if (def_group_plugin) group_plugin_unload(); init_parser(NULL, false, false); @@ -764,10 +814,6 @@ done: restore_nproc(); - /* Destroy the password and group caches and free the contents. */ - sudo_freepwcache(); - sudo_freegrcache(); - sudo_warn_set_locale_func(NULL); debug_return_int(ret); @@ -827,7 +873,7 @@ init_vars(char * const envp[]) * YP/NIS/NIS+/LDAP/etc daemon has died. */ if (sudo_mode == MODE_KILL || sudo_mode == MODE_INVALIDATE) { - sudo_warnx(U_("unknown uid: %u"), (unsigned int) user_uid); + sudo_warnx(U_("unknown uid %u"), (unsigned int) user_uid); debug_return_bool(false); } @@ -848,7 +894,7 @@ init_vars(char * const envp[]) /* It is now safe to use log_warningx() and set_perms() */ if (unknown_user) { - log_warningx(SLOG_SEND_MAIL, N_("unknown uid: %u"), + log_warningx(SLOG_SEND_MAIL, N_("unknown uid %u"), (unsigned int) user_uid); debug_return_bool(false); } @@ -884,6 +930,8 @@ set_cmnd_path(const char *runchroot) int ret; debug_decl(set_cmnd_path, SUDOERS_DEBUG_PLUGIN); + free(user_cmnd); + user_cmnd = NULL; if (def_secure_path && !user_is_exempt()) path = def_secure_path; if (!set_perms(PERM_RUNAS)) @@ -917,12 +965,17 @@ set_cmnd(void) debug_decl(set_cmnd, SUDOERS_DEBUG_PLUGIN); /* Allocate user_stat for find_path() and match functions. */ + free(user_stat); user_stat = calloc(1, sizeof(struct stat)); if (user_stat == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(NOT_FOUND_ERROR); } + /* Re-initialize for when we are called multiple times. */ + free(safe_cmnd); + safe_cmnd = NULL; + if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { if (!ISSET(sudo_mode, MODE_EDIT)) { const char *runchroot = user_runchroot; @@ -941,6 +994,8 @@ set_cmnd(void) } /* set user_args */ + free(user_args); + user_args = NULL; if (NewArgc > 1) { if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && ISSET(sudo_mode, MODE_RUN)) { @@ -1122,7 +1177,7 @@ set_loginclass(struct passwd *pw) * class themselves. We do this because if login.conf gets * corrupted we want the admin to be able to use sudo to fix it. */ - log_warningx(errflags, N_("unknown login class: %s"), login_class); + log_warningx(errflags, N_("unknown login class %s"), login_class); def_use_loginclass = false; if (login_class) ret = false; @@ -1280,7 +1335,7 @@ set_runaspw(const char *user, bool quiet) if (pw == NULL) { if ((pw = sudo_getpwnam(user)) == NULL) { if (!quiet) - log_warningx(SLOG_AUDIT, N_("unknown user: %s"), user); + log_warningx(SLOG_AUDIT, N_("unknown user %s"), user); debug_return_bool(false); } } @@ -1314,7 +1369,7 @@ set_runasgr(const char *group, bool quiet) if (gr == NULL) { if ((gr = sudo_getgrnam(group)) == NULL) { if (!quiet) - log_warningx(SLOG_AUDIT, N_("unknown group: %s"), group); + log_warningx(SLOG_AUDIT, N_("unknown group %s"), group); debug_return_bool(false); } } @@ -1600,11 +1655,13 @@ set_callbacks(void) /* * Cleanup hook for sudo_fatal()/sudo_fatalx() + * Also called at policy close time. */ void sudoers_cleanup(void) { struct sudo_nss *nss; + struct defaults *def; debug_decl(sudoers_cleanup, SUDOERS_DEBUG_PLUGIN); if (snl != NULL) { @@ -1614,12 +1671,25 @@ sudoers_cleanup(void) snl = NULL; init_parser(NULL, false, false); } + while ((def = TAILQ_FIRST(&initial_defaults)) != NULL) { + TAILQ_REMOVE(&initial_defaults, def, entries); + free(def->var); + free(def->val); + free(def); + } + need_reinit = false; if (def_group_plugin) group_plugin_unload(); sudo_user_free(); sudo_freepwcache(); sudo_freegrcache(); + /* Clear globals */ + list_pw = NULL; + NewArgv = NULL; + NewArgc = 0; + prev_user = NULL; + debug_return; } diff --git a/plugins/sudoers/sudoers.h b/plugins/sudoers/sudoers.h index 150954180..f13d84d17 100644 --- a/plugins/sudoers/sudoers.h +++ b/plugins/sudoers/sudoers.h @@ -130,6 +130,7 @@ struct sudo_user { uid_t uid; uid_t gid; pid_t sid; + char uuid_str[37]; }; /* @@ -193,6 +194,10 @@ struct sudo_user { #define MODE_PRESERVE_ENV 0x00400000 #define MODE_NONINTERACTIVE 0x00800000 #define MODE_IGNORE_TICKET 0x01000000 +#define MODE_POLICY_INTERCEPTED 0x02000000 + +/* Mode bits allowed for intercepted commands. */ +#define MODE_INTERCEPT_MASK (MODE_RUN|MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_POLICY_INTERCEPTED) /* * Used with set_perms() @@ -425,7 +430,7 @@ bool sudoers_debug_register(const char *plugin_path, struct sudo_conf_debug_file void sudoers_debug_deregister(void); /* policy.c */ -int sudoers_policy_deserialize_info(void *v); +int sudoers_policy_deserialize_info(void *v, struct defaults_list *defaults); bool sudoers_policy_store_result(bool accepted, char *argv[], char *envp[], mode_t cmnd_umask, char *iolog_path, void *v); extern const char *path_ldap_conf; extern const char *path_ldap_secret; @@ -449,7 +454,6 @@ bool expand_tilde(char **path, const char *user); enum sudoers_gc_types { GC_UNKNOWN, GC_VECTOR, - GC_EDIT_ARGS, GC_PTR }; bool sudoers_gc_add(enum sudoers_gc_types type, void *ptr); diff --git a/plugins/sudoers/sudoers_debug.c b/plugins/sudoers/sudoers_debug.c index 6b03f68a8..471ea8c9b 100644 --- a/plugins/sudoers/sudoers_debug.c +++ b/plugins/sudoers/sudoers_debug.c @@ -90,7 +90,7 @@ sudoers_debug_register(const char *program, if (debug_files != NULL && !TAILQ_EMPTY(debug_files)) { if (program != NULL) { instance = sudo_debug_register(program, sudoers_subsystem_names, - sudoers_subsystem_ids, debug_files); + sudoers_subsystem_ids, debug_files, -1); } TAILQ_FOREACH_SAFE(debug_file, debug_files, entries, debug_next) { TAILQ_REMOVE(debug_files, debug_file, entries); diff --git a/plugins/sudoers/sudoreplay.c b/plugins/sudoers/sudoreplay.c index 3d9495458..f32d44eb5 100644 --- a/plugins/sudoers/sudoreplay.c +++ b/plugins/sudoers/sudoreplay.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -82,6 +82,7 @@ struct replay_closure { struct sudo_event *sigquit_ev; struct sudo_event *sigterm_ev; struct sudo_event *sigtstp_ev; + struct timespec *offset; struct timespec *max_delay; struct timing_closure timing; int iolog_dir_fd; @@ -176,8 +177,8 @@ static int parse_expr(struct search_node_list *, char **, bool); static void read_keyboard(int fd, int what, void *v); static void help(void) __attribute__((__noreturn__)); static int replay_session(int iolog_dir_fd, const char *iolog_dir, - struct timespec *max_wait, const char *decimal, bool interactive, - bool suspend_wait); + struct timespec *offset, struct timespec *max_wait, const char *decimal, + bool interactive, bool suspend_wait); static void sudoreplay_cleanup(void); static void usage(int); static void write_output(int fd, int what, void *v); @@ -195,7 +196,7 @@ static void setup_terminal(struct eventlog *evlog, bool interactive, bool resize isalnum((unsigned char)(s)[3]) && isalnum((unsigned char)(s)[4]) && \ (s)[5] == '/' && \ isalnum((unsigned char)(s)[6]) && isalnum((unsigned char)(s)[7]) && \ - (s)[8] == '\0') + (s)[6] == '\0') sudo_dso_public int main(int argc, char *argv[]); @@ -207,6 +208,7 @@ main(int argc, char *argv[]) bool interactive = true, suspend_wait = false, resize = true; const char *decimal, *id, *user = NULL, *pattern = NULL, *tty = NULL; char *cp, *ep, iolog_dir[PATH_MAX]; + struct timespec offset = { 0, 0}; struct eventlog *evlog; struct timespec max_delay_storage, *max_delay = NULL; double dval; @@ -232,7 +234,7 @@ main(int argc, char *argv[]) if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) exit(EXIT_FAILURE); sudo_debug_register(getprogname(), NULL, NULL, - sudo_conf_debug_files(getprogname())); + sudo_conf_debug_files(getprogname()), -1); while ((ch = getopt_long(argc, argv, short_opts, long_opts, NULL)) != -1) { switch (ch) { @@ -323,8 +325,16 @@ main(int argc, char *argv[]) iolog_files[IOFD_TTYOUT].enabled = true; } - /* 6 digit ID in base 36, e.g. 01G712AB or free-form name */ + /* Check for offset in @sec.nsec form at the end of the id. */ id = argv[0]; + if ((cp = strchr(id, '@')) != NULL) { + ep = iolog_parse_delay(cp + 1, &offset, decimal); + if (ep == NULL || *ep != '\0') + sudo_fatalx(U_("invalid time offset %s"), cp + 1); + *cp = '\0'; + } + + /* 6 digit ID in base 36, e.g. 01G712AB or free-form name */ if (VALID_ID(id)) { len = snprintf(iolog_dir, sizeof(iolog_dir), "%s/%.2s/%.2s/%.2s", session_dir, id, &id[2], &id[4]); @@ -376,8 +386,8 @@ main(int argc, char *argv[]) evlog = NULL; /* Replay session corresponding to iolog_files[]. */ - exitcode = replay_session(iolog_dir_fd, iolog_dir, max_delay, decimal, - interactive, suspend_wait); + exitcode = replay_session(iolog_dir_fd, iolog_dir, &offset, max_delay, + decimal, interactive, suspend_wait); restore_terminal_size(); sudo_term_restore(ttyfd, true); @@ -774,6 +784,16 @@ get_timing_record(struct replay_closure *closure) closure->iobuf.toread = timing->u.nbytes; } + if (sudo_timespecisset(closure->offset)) { + if (sudo_timespeccmp(&timing->delay, closure->offset, >)) { + sudo_timespecsub(&timing->delay, closure->offset, &timing->delay); + sudo_timespecclear(closure->offset); + } else { + sudo_timespecsub(closure->offset, &timing->delay, closure->offset); + sudo_timespecclear(&timing->delay); + } + } + if (nodelay) { /* Already waited, fire immediately. */ timing->delay.tv_sec = 0; @@ -957,8 +977,8 @@ signal_cb(int signo, int what, void *v) static struct replay_closure * replay_closure_alloc(int iolog_dir_fd, const char *iolog_dir, - struct timespec *max_delay, const char *decimal, bool interactive, - bool suspend_wait) + struct timespec *offset, struct timespec *max_delay, const char *decimal, + bool interactive, bool suspend_wait) { struct replay_closure *closure; debug_decl(replay_closure_alloc, SUDO_DEBUG_UTIL); @@ -969,6 +989,7 @@ replay_closure_alloc(int iolog_dir_fd, const char *iolog_dir, closure->iolog_dir_fd = iolog_dir_fd; closure->iolog_dir = iolog_dir; closure->interactive = interactive; + closure->offset = offset; closure->suspend_wait = suspend_wait; closure->max_delay = max_delay; closure->timing.decimal = decimal; @@ -1042,7 +1063,7 @@ bad: } static int -replay_session(int iolog_dir_fd, const char *iolog_dir, +replay_session(int iolog_dir_fd, const char *iolog_dir, struct timespec *offset, struct timespec *max_delay, const char *decimal, bool interactive, bool suspend_wait) { @@ -1051,8 +1072,8 @@ replay_session(int iolog_dir_fd, const char *iolog_dir, debug_decl(replay_session, SUDO_DEBUG_UTIL); /* Allocate the delay closure and read the first timing record. */ - closure = replay_closure_alloc(iolog_dir_fd, iolog_dir, max_delay, decimal, - interactive, suspend_wait); + closure = replay_closure_alloc(iolog_dir_fd, iolog_dir, offset, max_delay, + decimal, interactive, suspend_wait); if (get_timing_record(closure) != 0) { ret = 1; goto done; diff --git a/plugins/sudoers/testsudoers.c b/plugins/sudoers/testsudoers.c index 4b0a87f80..cd4250705 100644 --- a/plugins/sudoers/testsudoers.c +++ b/plugins/sudoers/testsudoers.c @@ -212,7 +212,7 @@ main(int argc, char *argv[]) argc -= 2; } if ((sudo_user.pw = sudo_getpwnam(user_name)) == NULL) - sudo_fatalx(U_("unknown user: %s"), user_name); + sudo_fatalx(U_("unknown user %s"), user_name); if (user_host == NULL) { if ((user_host = sudo_gethostname()) == NULL) @@ -379,7 +379,7 @@ set_runaspw(const char *user) } if (pw == NULL) { if ((pw = sudo_getpwnam(user)) == NULL) - sudo_fatalx(U_("unknown user: %s"), user); + sudo_fatalx(U_("unknown user %s"), user); } if (runas_pw != NULL) sudo_pw_delref(runas_pw); @@ -403,7 +403,7 @@ set_runasgr(const char *group) } if (gr == NULL) { if ((gr = sudo_getgrnam(group)) == NULL) - sudo_fatalx(U_("unknown group: %s"), group); + sudo_fatalx(U_("unknown group %s"), group); } if (runas_gr != NULL) sudo_gr_delref(runas_gr); diff --git a/plugins/sudoers/toke.c b/plugins/sudoers/toke.c index d87935090..961c35bf3 100644 --- a/plugins/sudoers/toke.c +++ b/plugins/sudoers/toke.c @@ -393,8 +393,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 81 -#define YY_END_OF_BUFFER 82 +#define YY_NUM_RULES 83 +#define YY_END_OF_BUFFER 84 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -402,132 +402,138 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1126] = +static yyconst flex_int16_t yy_accept[1184] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 67, - 77, 76, 80, 75, 66, 79, 40, 70, 71, 40, - 72, 67, 67, 67, 67, 74, 73, 80, 67, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 80, 67, 67, 77, 79, 57, 57, 57, - 57, 57, 2, 80, 1, 67, 57, 57, 57, 67, - 17, 16, 16, 17, 16, 16, 80, 79, 80, 3, - 9, 8, 9, 4, 9, 5, 80, 13, 13, 13, - 11, 12, 80, 19, 19, 18, 18, 18, 19, 18, - - 18, 18, 18, 19, 19, 19, 19, 19, 19, 18, - 19, 19, 68, 68, 69, 68, 64, 64, 64, 64, - 64, 64, 64, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 80, 64, 64, 67, 0, 77, 76, - 75, 79, 79, 0, 0, 67, 42, 0, 40, 0, - 41, 0, 65, 65, 0, 67, 67, 0, 67, 67, - 67, 67, 0, 45, 67, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 0, 78, 67, 67, 67, 67, 77, 0, - 0, 0, 0, 0, 79, 67, 67, 67, 67, 67, - - 2, 1, 0, 1, 58, 58, 0, 57, 67, 17, - 17, 15, 0, 14, 15, 0, 3, 9, 0, 6, - 7, 9, 9, 13, 0, 13, 13, 0, 10, 0, - 42, 0, 0, 41, 19, 19, 0, 19, 0, 0, - 18, 18, 18, 18, 18, 18, 19, 19, 57, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 68, 68, - 68, 64, 0, 42, 0, 41, 0, 64, 64, 0, - 64, 64, 64, 64, 64, 64, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 64, 64, 64, 64, - 79, 79, 79, 0, 42, 67, 67, 67, 67, 67, - - 0, 0, 45, 45, 67, 57, 47, 57, 51, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 67, 67, 0, - 0, 0, 0, 0, 79, 67, 67, 67, 67, 67, - 67, 0, 67, 10, 0, 0, 0, 18, 18, 18, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, + 79, 78, 82, 77, 68, 81, 42, 72, 73, 42, + 74, 69, 69, 69, 69, 76, 75, 82, 69, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 82, 69, 69, 79, 81, 59, 59, + 59, 59, 59, 2, 82, 1, 69, 59, 59, 59, + 69, 17, 16, 16, 17, 16, 16, 82, 81, 82, + 3, 9, 8, 9, 4, 9, 5, 82, 13, 13, + 13, 11, 12, 82, 19, 19, 18, 18, 18, 19, + + 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, + 19, 18, 19, 19, 70, 70, 71, 70, 66, 66, + 66, 66, 66, 66, 66, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 82, 66, 66, 69, + 0, 79, 78, 77, 81, 81, 0, 0, 69, 44, + 0, 42, 0, 43, 0, 67, 67, 0, 69, 69, + 0, 69, 69, 69, 69, 0, 47, 69, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 0, 80, 69, 69, + 69, 69, 79, 0, 0, 0, 0, 0, 81, 69, + + 69, 69, 69, 69, 2, 1, 0, 1, 60, 60, + 0, 59, 69, 17, 17, 15, 0, 14, 15, 0, + 3, 9, 0, 6, 7, 9, 9, 13, 0, 13, + 13, 0, 10, 0, 44, 0, 0, 43, 19, 19, + 0, 19, 0, 0, 18, 18, 18, 18, 18, 18, + 19, 19, 59, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 70, 70, 70, 66, 0, 44, 0, + 43, 0, 66, 66, 0, 66, 66, 66, 66, 66, + 66, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 66, 66, 66, 66, 81, 81, 81, 0, + + 44, 69, 69, 69, 69, 69, 0, 0, 47, 47, + 69, 59, 49, 59, 53, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 69, 69, 0, 0, 0, + 0, 0, 81, 69, 69, 69, 69, 69, 69, 0, + 69, 10, 0, 0, 0, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 0, 64, 64, 64, 64, - 64, 57, 47, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 64, 64, 79, 79, 79, - 67, 67, 67, 67, 67, 67, 0, 46, 46, 46, - - 0, 0, 45, 45, 45, 45, 45, 45, 45, 67, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 53, 57, 57, - 54, 67, 67, 67, 67, 0, 0, 0, 0, 0, - 0, 79, 67, 67, 67, 67, 0, 0, 0, 0, - 0, 18, 18, 19, 19, 57, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 64, - 64, 64, 64, 64, 64, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 64, 64, - 64, 64, 67, 67, 67, 0, 0, 46, 46, 46, - - 0, 45, 45, 0, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 67, 57, 0, 29, 57, - 57, 57, 57, 0, 36, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 55, 57, 57, 67, 67, 67, - 67, 67, 0, 0, 0, 79, 67, 67, 67, 0, - 0, 0, 18, 18, 19, 57, 57, 19, 19, 19, + 19, 19, 19, 19, 19, 0, 66, 66, 66, 66, + 66, 59, 49, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 66, 66, 81, + + 81, 81, 69, 69, 69, 69, 69, 69, 0, 48, + 48, 48, 0, 0, 47, 47, 47, 47, 47, 47, + 47, 69, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 55, 59, 59, 56, 69, 69, 69, 69, 0, + 0, 0, 0, 0, 0, 81, 69, 69, 69, 69, + 0, 0, 0, 0, 0, 18, 18, 19, 19, 19, + 59, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 66, 66, 66, 66, 66, + 66, 59, 59, 59, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 66, 66, 66, 66, + 69, 69, 69, 0, 0, 48, 48, 48, 0, 47, + 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 69, 59, 0, 29, 59, 59, 59, + 59, 59, 0, 38, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 57, 59, 59, 69, 69, 69, + 69, 69, 0, 0, 0, 81, 69, 69, 69, 0, + 0, 0, 18, 18, 19, 19, 59, 59, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 64, 64, 64, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 64, 64, 64, 64, 64, 67, - 67, 67, 67, 67, 0, 46, 0, 45, 45, 45, - - 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 67, 52, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 59, 60, 61, 62, 67, 0, 0, - 79, 67, 67, 67, 0, 0, 0, 0, 0, 19, - 57, 57, 19, 19, 57, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 64, 64, 64, 64, 64, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 59, 60, 61, 62, 64, 43, 43, 43, 0, - 0, 45, 45, 45, 45, 45, 45, 45, 0, 0, - - 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 67, 0, 38, - 57, 57, 57, 0, 28, 57, 57, 57, 0, 37, - 57, 57, 57, 57, 0, 27, 0, 30, 48, 67, - 0, 0, 79, 67, 67, 67, 43, 43, 43, 57, - 57, 19, 57, 57, 19, 19, 19, 43, 43, 43, - 57, 57, 57, 57, 57, 57, 57, 64, 67, 43, - 43, 43, 43, 0, 45, 0, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 0, 0, 0, + 19, 19, 66, 66, 66, 59, 59, 59, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 59, 66, 66, + 66, 66, 66, 69, 69, 69, 69, 69, 0, 48, + 0, 47, 47, 47, 0, 0, 0, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 69, 54, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, + 62, 63, 64, 69, 0, 0, 81, 69, 69, 69, + 0, 0, 0, 0, 0, 19, 19, 59, 59, 19, + 19, 19, 59, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 66, 66, 66, 66, 66, 59, 59, + + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 61, 62, 63, 64, 66, 45, 45, 45, 0, + 0, 47, 47, 47, 47, 47, 47, 47, 0, 0, + 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 69, 0, 40, + 59, 59, 59, 59, 0, 28, 59, 59, 59, 59, + 0, 39, 59, 59, 59, 59, 0, 27, 0, 32, + 50, 69, 0, 0, 81, 69, 69, 69, 45, 45, + 45, 19, 59, 59, 19, 19, 59, 59, 19, 19, + 19, 45, 45, 45, 59, 59, 59, 59, 59, 59, + + 59, 59, 59, 66, 69, 45, 45, 45, 45, 0, + 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 20, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 52, 59, 65, 0, 0, 81, 69, 24, 60, 0, + 45, 45, 45, 45, 19, 59, 59, 19, 19, 59, + 59, 19, 19, 19, 66, 45, 45, 45, 45, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 65, 46, + 46, 46, 46, 47, 0, 0, 0, 47, 47, 47, + + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, + 47, 47, 47, 69, 59, 59, 59, 59, 0, 41, + 59, 59, 59, 0, 26, 0, 33, 51, 0, 24, + 22, 81, 25, 0, 69, 46, 46, 46, 46, 19, + 59, 59, 19, 59, 59, 46, 46, 46, 46, 59, + 59, 59, 59, 59, 59, 69, 69, 46, 46, 46, + 46, 0, 0, 0, 0, 0, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 69, 0, 30, 58, + + 0, 36, 59, 59, 59, 59, 25, 22, 22, 22, + 22, 81, 24, 0, 0, 0, 0, 0, 24, 0, + 0, 0, 46, 46, 46, 46, 59, 19, 59, 59, + 66, 66, 46, 46, 46, 46, 59, 59, 59, 59, + 69, 69, 69, 0, 0, 0, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 21, 0, 34, 59, 59, 59, + 22, 81, 0, 24, 0, 0, 0, 19, 59, 59, + 66, 66, 66, 59, 59, 59, 69, 69, 69, 69, + 69, 0, 0, 0, 0, 0, 47, 47, 47, 47, + + 47, 47, 47, 47, 0, 31, 0, 37, 59, 23, + 0, 0, 0, 0, 0, 59, 66, 66, 66, 66, + 66, 59, 69, 69, 69, 47, 47, 47, 47, 47, + 47, 0, 35, 23, 23, 23, 23, 0, 0, 0, + 66, 66, 66, 69, 69, 69, 69, 69, 47, 47, + 47, 47, 47, 23, 0, 0, 0, 0, 0, 66, + 66, 66, 66, 66, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 20, 57, 57, 57, 57, 57, 57, - 57, 57, 50, 57, 63, 0, 0, 79, 67, 24, - 58, 0, 43, 43, 43, 43, 57, 57, 19, 57, - 57, 19, 19, 19, 64, 43, 43, 43, 43, 57, - 57, 57, 57, 57, 57, 57, 63, 44, 44, 44, - 44, 45, 0, 0, 0, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 0, 0, - 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, - 45, 67, 57, 57, 57, 0, 39, 57, 57, 0, - 26, 0, 31, 49, 0, 24, 22, 79, 25, 0, - - 67, 44, 44, 44, 44, 57, 57, 57, 57, 44, - 44, 44, 44, 57, 57, 57, 57, 67, 67, 44, - 44, 44, 44, 0, 0, 0, 0, 0, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 67, 56, - 0, 34, 57, 57, 57, 25, 22, 22, 22, 22, - 79, 24, 0, 0, 0, 0, 0, 24, 0, 0, - 0, 44, 44, 44, 44, 57, 57, 57, 64, 64, - 44, 44, 44, 44, 57, 57, 57, 67, 67, 67, - 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 21, 0, 32, 57, 57, 22, 79, 0, 24, - 0, 0, 0, 57, 57, 64, 64, 64, 57, 57, - 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, - 45, 45, 45, 45, 45, 45, 45, 45, 0, 35, - 57, 23, 0, 0, 0, 0, 0, 57, 64, 64, - 64, 64, 64, 57, 67, 67, 67, 45, 45, 45, - 45, 45, 45, 0, 33, 23, 23, 23, 23, 0, - 0, 0, 64, 64, 64, 67, 67, 67, 67, 67, - 45, 45, 45, 45, 45, 23, 0, 0, 0, 0, - - 0, 64, 64, 64, 64, 64, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 0 + 45, 45, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -574,1205 +580,1214 @@ static yyconst flex_int32_t yy_meta[75] = 20, 20, 20, 20 } ; -static yyconst flex_int16_t yy_base[1228] = +static yyconst flex_int16_t yy_base[1286] = { 0, 0, 73, 123, 194, 81, 97, 265, 338, 411, 466, - 128, 137, 522, 0, 157, 172, 596, 0, 6501, 6444, - 74, 8253, 6486, 6460, 8253, 668, 72, 8253, 8253, 6408, - 8253, 174, 680, 195, 95, 6434, 8253, 8253, 29, 743, - 6419, 54, 35, 77, 799, 52, 6428, 6381, 44, 6378, - 6386, 50, 861, 226, 127, 225, 890, 216, 105, 6344, - 76, 6341, 192, 266, 145, 359, 6365, 6364, 6376, 132, - 0, 8253, 6405, 6400, 8253, 0, 427, 954, 230, 0, - 6344, 8253, 116, 8253, 169, 8253, 275, 6342, 202, 182, - 8253, 293, 246, 434, 982, 1026, 284, 294, 1084, 1134, - - 6332, 148, 106, 1190, 6328, 6329, 6293, 6303, 6298, 329, - 0, 294, 6278, 227, 8253, 372, 6269, 333, 6268, 447, - 1237, 360, 465, 1300, 6268, 315, 111, 1356, 6250, 6261, - 6237, 6238, 6208, 1418, 485, 387, 6188, 719, 358, 8253, - 6235, 259, 8253, 6238, 655, 824, 6183, 858, 436, 892, - 6179, 919, 929, 6177, 1448, 981, 1463, 6202, 6213, 996, - 1006, 495, 6187, 343, 100, 1526, 1582, 6172, 6160, 6159, - 6157, 6150, 6147, 6151, 6126, 895, 6106, 6100, 6087, 6072, - 6077, 6073, 492, 8253, 184, 717, 307, 392, 1241, 6051, - 6046, 6025, 6017, 6016, 836, 676, 194, 207, 368, 414, - - 949, 727, 1104, 749, 1224, 5999, 1644, 1241, 833, 0, - 6045, 960, 6048, 8253, 8253, 1381, 0, 5994, 1300, 8253, - 8253, 5985, 1134, 5984, 6029, 941, 366, 966, 752, 6009, - 846, 879, 1431, 5954, 1653, 0, 1502, 1710, 1662, 1445, - 1751, 5992, 1602, 1674, 1218, 1801, 1857, 5944, 0, 5935, - 5928, 5918, 5915, 1687, 5905, 5897, 5873, 5846, 5839, 985, - 665, 5831, 1787, 5814, 1892, 5806, 1919, 1750, 5805, 1949, - 1726, 1964, 5843, 1916, 1946, 1612, 2027, 2083, 5816, 5805, - 5782, 5778, 5775, 1966, 5738, 5736, 390, 1500, 365, 897, - 457, 474, 496, 2103, 2128, 2140, 2180, 2220, 2258, 5760, - - 5736, 2303, 717, 2349, 928, 2412, 2468, 5718, 0, 5728, - 5719, 5720, 5690, 5703, 5683, 5660, 5659, 5667, 5662, 5656, - 286, 5633, 5618, 5630, 5628, 5620, 5617, 1389, 154, 370, - 5580, 5570, 5558, 5560, 1392, 335, 1077, 5556, 798, 654, - 782, 2180, 393, 1228, 2152, 2194, 2206, 2513, 5596, 2558, - 0, 5576, 5567, 5545, 5547, 5533, 5526, 5517, 5496, 5493, - 5467, 5454, 5448, 1410, 5409, 2259, 2605, 2645, 2685, 2725, - 5443, 2770, 0, 5424, 5415, 5389, 5387, 5375, 5359, 5344, - 5356, 5342, 5337, 5324, 5335, 1657, 940, 8253, 826, 949, - 2278, 1085, 2817, 2857, 1889, 464, 5336, 5321, 2230, 1095, - - 5320, 5297, 1265, 2323, 2897, 2369, 1684, 2943, 2490, 1331, - 3006, 900, 1659, 1105, 471, 1643, 1710, 1192, 1106, 801, - 657, 1238, 1007, 827, 1274, 867, 1445, 5284, 1013, 1240, - 5281, 1420, 1395, 1226, 905, 5252, 5237, 5228, 5212, 5226, - 5202, 1490, 1189, 1709, 1094, 1419, 2533, 5211, 2580, 2617, - 2115, 3062, 3107, 1726, 5166, 1266, 1727, 5144, 5137, 5140, - 5130, 5108, 5106, 5102, 5099, 3152, 1491, 1514, 1739, 2627, - 1379, 3199, 3239, 2658, 1583, 5103, 2005, 5055, 1621, 2006, - 5040, 5033, 5023, 5020, 5011, 5008, 4996, 5003, 1776, 1620, - 1749, 1624, 3279, 3319, 3359, 4952, 4950, 2665, 4921, 4912, - - 4911, 4910, 1619, 2696, 1977, 2706, 2000, 3399, 0, 2747, - 3446, 2790, 2288, 3492, 2829, 1384, 1487, 2261, 8253, 982, - 1690, 1383, 723, 2350, 8253, 1867, 1262, 1658, 1761, 1609, - 1491, 1714, 1706, 1917, 4909, 1900, 1631, 1891, 1832, 1940, - 2137, 1747, 4861, 4819, 4820, 2110, 1949, 1963, 1921, 2841, - 2869, 2881, 4826, 4797, 4772, 4772, 4751, 4766, 4757, 4731, - 4732, 4723, 4722, 4711, 4679, 2015, 2166, 2248, 276, 2214, - 3539, 3579, 3619, 4598, 4591, 4582, 4591, 4580, 4523, 4499, - 4492, 4480, 4450, 4410, 2358, 2156, 2542, 2359, 2127, 2917, - 1958, 3659, 3699, 2803, 4432, 4417, 4416, 4371, 3737, 2003, - - 2965, 3084, 3129, 2244, 2388, 2594, 3172, 2979, 3784, 0, - 3211, 3831, 3222, 2379, 3877, 3251, 2297, 4355, 2560, 2085, - 1858, 2304, 2561, 1930, 2479, 2771, 1191, 1762, 2390, 2375, - 2772, 2773, 2469, 4289, 4282, 4281, 4261, 2204, 4249, 4225, - 2693, 2716, 2514, 2943, 3261, 4274, 3291, 3303, 2929, 2992, - 4223, 4219, 3331, 4222, 2314, 3348, 4170, 4174, 3359, 3360, - 2399, 2500, 2589, 2635, 2714, 3373, 2168, 3924, 3964, 3350, - 3362, 4130, 4103, 3401, 4080, 2523, 3402, 4069, 4052, 3447, - 3448, 4026, 4025, 3977, 3878, 3036, 4003, 4042, 4081, 3904, - 3900, 3896, 3419, 4121, 3466, 3094, 4166, 3514, 3549, 3871, - - 3561, 3591, 3184, 2645, 2881, 3334, 3528, 3601, 3631, 4213, - 0, 3633, 4260, 3644, 3139, 4306, 3671, 2136, 3449, 8253, - 4369, 3096, 2377, 3493, 8253, 1488, 2654, 3307, 3494, 8253, - 2573, 2959, 2695, 2906, 3495, 8253, 3671, 8253, 3842, 2683, - 3758, 3743, 2867, 1330, 1986, 2684, 3683, 3710, 3721, 3743, - 3705, 4430, 3672, 3638, 2875, 1030, 3564, 4487, 4526, 4565, - 4621, 2824, 2213, 2652, 3579, 2876, 1562, 2939, 3758, 2763, - 4678, 4717, 3769, 3568, 3565, 3807, 2818, 3851, 3222, 4757, - 0, 3899, 4770, 3934, 3390, 4815, 3946, 3976, 3988, 4015, - 3303, 3514, 3913, 4027, 4027, 4054, 4862, 0, 4056, 4909, - - 4067, 3817, 4093, 2957, 4972, 2263, 1881, 3880, 3205, 2307, - 4122, 4123, 3497, 3165, 3488, 3444, 3384, 3288, 2604, 3602, - 3396, 4141, 3430, 4187, 4234, 4112, 3355, 3305, 5045, 3287, - 3219, 3878, 3879, 0, 4280, 3236, 5102, 5141, 4291, 5197, - 2392, 4214, 2967, 3159, 4215, 4216, 3127, 5255, 5295, 5335, - 5375, 3135, 4329, 4499, 4511, 3109, 3280, 3373, 4536, 3562, - 5415, 0, 4548, 5428, 4575, 4339, 5473, 4587, 4688, 3102, - 4700, 4729, 4741, 3946, 3988, 4599, 2482, 2505, 5520, 0, - 4792, 3861, 3042, 4816, 2493, 4261, 8253, 2606, 3451, 4369, - 8253, 4370, 8253, 3041, 2943, 4598, 3748, 3858, 2927, 4852, - - 4863, 4890, 4931, 5114, 5126, 4817, 2837, 2770, 2752, 5532, - 5572, 5612, 5652, 5176, 2705, 2924, 3089, 5268, 3576, 5692, - 5732, 5153, 3657, 5164, 2720, 5280, 5308, 5033, 2671, 2606, - 3965, 4067, 5318, 4094, 5772, 0, 5347, 5785, 5358, 4747, - 5830, 5387, 5398, 5449, 5494, 4511, 2597, 3019, 3182, 2536, - 4818, 8253, 5476, 3132, 3185, 8253, 3350, 4375, 8253, 3354, - 4647, 5559, 5567, 5599, 5610, 5625, 4972, 5654, 5692, 5558, - 2551, 5664, 5707, 5719, 2527, 5198, 2285, 2143, 5747, 3759, - 5877, 5917, 5759, 3806, 5521, 2120, 3497, 5957, 5997, 6037, - 5807, 5852, 5889, 2111, 2028, 4110, 4430, 5899, 4549, 6077, - - 0, 5929, 6090, 5940, 4882, 5969, 2015, 5980, 6008, 4942, - 1944, 1833, 5696, 8253, 6037, 3540, 8253, 4727, 6048, 6058, - 6112, 6137, 6149, 5926, 1783, 6161, 6201, 6241, 6190, 1709, - 6178, 3870, 6281, 6321, 6190, 6228, 1673, 6253, 6265, 6025, - 1475, 1302, 4603, 1251, 1148, 6293, 0, 3951, 6009, 8253, - 6321, 4861, 6332, 902, 6344, 6359, 6309, 6230, 6369, 4001, - 6409, 6449, 6382, 6410, 6489, 6529, 6569, 6421, 6431, 6459, - 858, 0, 694, 6293, 8253, 3656, 5478, 8253, 3709, 6471, - 6501, 6513, 6609, 6649, 6689, 6542, 4002, 6729, 6769, 6554, - 8253, 6580, 6592, 5817, 8253, 8253, 6619, 668, 6631, 6661, - - 6398, 6671, 4318, 6809, 6849, 6702, 6709, 6747, 6785, 6795, - 6823, 6833, 6859, 6869, 6907, 320, 6917, 6123, 8253, 6927, - 5862, 134, 6955, 6720, 8253, 7011, 7031, 7051, 7071, 7091, - 7111, 7131, 7151, 7171, 7191, 4157, 7211, 7231, 3749, 7251, - 7271, 7291, 7311, 7331, 7351, 7371, 7391, 7411, 7431, 7451, - 7471, 7491, 7511, 7531, 7551, 7571, 4159, 4560, 7580, 7599, - 7619, 7639, 4178, 7659, 7679, 7699, 7719, 7731, 7751, 4962, - 7771, 7791, 7811, 7831, 7851, 7871, 7891, 7911, 4562, 7920, - 4605, 4843, 5180, 7928, 7947, 5190, 5334, 5374, 5414, 7956, - 7965, 5511, 5590, 5607, 7973, 7982, 5611, 5645, 7990, 7999, - - 8018, 5683, 8030, 5731, 8040, 8048, 8057, 8076, 6074, 8088, - 8108, 5771, 8118, 8126, 8135, 8154, 8174, 8194, 5916, 8204, - 5183, 5956, 8213, 6224, 5551, 8232, 4808 + 128, 137, 522, 0, 157, 172, 596, 0, 6774, 6717, + 74, 8226, 6768, 6753, 8226, 668, 72, 8226, 8226, 6701, + 8226, 174, 680, 195, 95, 6727, 8226, 8226, 29, 743, + 6712, 54, 35, 77, 799, 6688, 52, 6699, 6685, 44, + 6674, 6680, 50, 861, 226, 127, 225, 890, 216, 105, + 6646, 76, 6643, 192, 266, 145, 359, 6668, 6667, 6679, + 132, 0, 8226, 6708, 6703, 8226, 0, 427, 954, 230, + 0, 6653, 8226, 116, 8226, 169, 8226, 275, 6651, 202, + 182, 8226, 293, 246, 434, 982, 1026, 284, 294, 1084, + + 1134, 6652, 148, 106, 1190, 6649, 6647, 6659, 6645, 6647, + 6640, 329, 0, 294, 6614, 227, 8226, 372, 6596, 333, + 6584, 447, 1237, 360, 465, 1300, 6594, 315, 111, 1356, + 6591, 6589, 6591, 6566, 6564, 6559, 1418, 485, 387, 6537, + 719, 358, 8226, 6585, 259, 8226, 6553, 655, 824, 6497, + 858, 436, 892, 6477, 919, 929, 6475, 1448, 981, 1463, + 6488, 6499, 996, 1006, 495, 6484, 343, 100, 1526, 1582, + 6449, 6432, 6441, 6439, 6432, 6414, 6408, 6401, 6395, 1086, + 6385, 6392, 6353, 6343, 6329, 6324, 492, 8226, 184, 717, + 307, 392, 1241, 6289, 6294, 6283, 6258, 6248, 836, 676, + + 194, 207, 368, 414, 927, 727, 1381, 749, 1224, 6261, + 1644, 1241, 833, 0, 6309, 941, 6312, 8226, 8226, 1415, + 0, 6248, 1300, 8226, 8226, 6236, 1235, 6224, 6269, 985, + 366, 949, 752, 6273, 846, 879, 1498, 6219, 1653, 0, + 1682, 1713, 1505, 1445, 1754, 6247, 1602, 1679, 942, 1804, + 1860, 6209, 0, 6203, 6173, 6165, 6175, 6156, 1690, 6147, + 6145, 6120, 6092, 6095, 1456, 665, 6083, 1790, 6071, 1895, + 6059, 1922, 1753, 6055, 1952, 1729, 1967, 6087, 1919, 1949, + 1612, 2030, 2086, 6047, 6052, 6039, 6031, 6041, 6026, 1969, + 6017, 6007, 390, 1659, 365, 897, 457, 474, 496, 2106, + + 2131, 2143, 2183, 2223, 2261, 6039, 6026, 2306, 717, 2352, + 911, 2415, 2471, 6008, 0, 6008, 5984, 5989, 5982, 5930, + 5943, 5929, 5926, 5905, 5900, 5911, 5910, 5897, 286, 5873, + 5858, 5852, 5845, 5808, 5807, 1110, 154, 370, 5779, 5769, + 5748, 5753, 1392, 335, 1173, 5755, 798, 654, 782, 2183, + 393, 966, 2155, 2197, 2209, 2516, 5790, 2561, 0, 5757, + 5747, 5752, 5715, 5722, 5693, 5700, 5700, 5687, 5684, 5683, + 5678, 5655, 5655, 1104, 5610, 2262, 2608, 2648, 2688, 2728, + 5660, 2773, 0, 5640, 5624, 5627, 5596, 5609, 5583, 5586, + 5567, 5554, 5564, 5549, 5544, 5525, 5536, 1389, 940, 8226, + + 826, 1111, 2281, 928, 2820, 2860, 1892, 464, 5543, 5527, + 2233, 1118, 5488, 5487, 1122, 2326, 2900, 2372, 1657, 2946, + 2493, 1227, 3009, 1193, 1240, 1257, 890, 471, 1717, 1666, + 1112, 968, 1007, 801, 657, 1053, 1445, 827, 1359, 867, + 1238, 5463, 1013, 1415, 5451, 1711, 1395, 1461, 1249, 5395, + 5354, 5356, 5340, 5347, 5327, 1655, 1188, 1712, 1356, 1446, + 2536, 5373, 2583, 2620, 2118, 3065, 3110, 1690, 5343, 5340, + 1266, 2009, 5339, 5320, 5308, 5296, 5279, 5270, 5233, 5227, + 5234, 3155, 1779, 1517, 1494, 2630, 1476, 3202, 3242, 2661, + 1583, 5249, 2031, 5222, 5195, 1701, 2264, 5193, 5183, 5165, + + 5164, 5095, 5085, 5076, 5060, 5067, 1738, 1419, 1628, 1710, + 3282, 3322, 3362, 5072, 5058, 2668, 5042, 5035, 5034, 5033, + 1369, 2699, 1980, 2709, 2003, 3402, 0, 2750, 3449, 2793, + 2291, 3495, 2832, 1420, 1906, 2353, 8226, 1504, 1775, 1689, + 1863, 723, 2354, 8226, 1870, 1764, 1679, 1779, 1907, 1618, + 1985, 1949, 1979, 903, 5002, 1216, 1990, 1615, 1835, 1909, + 1094, 1924, 4974, 4932, 4932, 2113, 1899, 1968, 2130, 2844, + 2872, 2884, 4963, 4962, 4937, 4910, 4884, 4875, 4857, 4848, + 4846, 4825, 4838, 4831, 4824, 4824, 4807, 2172, 2248, 2380, + 276, 2217, 3542, 3582, 3622, 4791, 4799, 4769, 4760, 4775, + + 4754, 4752, 4731, 4744, 4720, 4715, 4694, 4665, 2138, 2159, + 2361, 2490, 2301, 2920, 2171, 3662, 3702, 2806, 4683, 4660, + 4646, 4621, 3740, 2172, 2968, 3087, 3132, 2245, 2389, 2391, + 3175, 2597, 3787, 0, 3214, 3834, 3225, 2503, 3880, 3254, + 2302, 4565, 2563, 2238, 940, 2289, 2373, 2564, 1933, 2013, + 2572, 2774, 1584, 2376, 2393, 2544, 2775, 2776, 2395, 4537, + 4519, 4518, 4515, 1164, 4501, 4491, 2696, 2719, 2604, 2945, + 3264, 4500, 3294, 3306, 2932, 3010, 4476, 4453, 4433, 3334, + 4436, 4425, 2526, 3351, 4406, 4358, 3362, 3363, 2015, 2547, + 2638, 2642, 2717, 3376, 2644, 3927, 3967, 3353, 3365, 4364, + + 4337, 4330, 3404, 4295, 4290, 2571, 3405, 4266, 4267, 3450, + 3451, 4217, 4213, 4192, 4190, 2958, 4006, 4045, 4084, 4197, + 4171, 4170, 3422, 4124, 3469, 3097, 4169, 3517, 3552, 4163, + 3564, 3594, 3187, 2247, 2884, 3337, 3531, 3604, 3634, 4216, + 0, 3636, 4263, 3647, 3142, 4309, 3674, 2684, 3452, 8226, + 4372, 2956, 1635, 4088, 3496, 8226, 2968, 2803, 1693, 2651, + 3497, 8226, 3058, 2826, 1384, 2379, 3498, 8226, 3674, 8226, + 4087, 2686, 4059, 4027, 3290, 2445, 2818, 2687, 3686, 3713, + 3724, 4038, 4033, 4014, 4007, 3987, 3976, 3929, 3899, 3859, + 3791, 4429, 4468, 4507, 4563, 2951, 3772, 3207, 3265, 2777, + + 3309, 3103, 3361, 2858, 3761, 3149, 4620, 4659, 3772, 3768, + 3742, 3810, 3376, 3854, 3518, 4699, 0, 3902, 4712, 3937, + 3820, 4757, 3949, 3979, 3991, 4018, 3306, 3333, 3916, 4030, + 4030, 4057, 4804, 0, 4059, 4851, 4070, 3864, 4096, 3356, + 4914, 2880, 3665, 2497, 4125, 2949, 2656, 3590, 4126, 4127, + 3544, 3205, 3445, 3401, 3379, 3631, 3184, 4107, 3305, 4145, + 3319, 4190, 4237, 4201, 4975, 3222, 3169, 4264, 3545, 3165, + 3137, 4265, 4266, 0, 4283, 3579, 5032, 5071, 4331, 5127, + 3092, 2927, 4311, 3627, 2970, 3072, 4468, 4469, 3041, 5185, + 5225, 5265, 5305, 3011, 4441, 4482, 4519, 2989, 3583, 3903, + + 4529, 3950, 5345, 0, 4632, 5358, 4643, 4457, 5403, 4671, + 4681, 2983, 4734, 4779, 4826, 3991, 4108, 4345, 3078, 3123, + 5450, 0, 4834, 3871, 4893, 3136, 4894, 2907, 4172, 8226, + 3247, 3308, 3546, 4354, 8226, 4373, 8226, 2900, 2843, 4530, + 3751, 4315, 2819, 4514, 5059, 5052, 5083, 5097, 5197, 5225, + 4563, 2752, 3670, 2733, 2711, 5462, 5502, 5542, 5582, 5226, + 5227, 2689, 3931, 3364, 3935, 5238, 3240, 5622, 5662, 5250, + 3399, 5276, 2662, 5288, 5317, 4884, 2609, 2587, 4070, 4113, + 5327, 4348, 5702, 0, 5380, 5715, 5423, 4744, 5760, 5474, + 5485, 5513, 5524, 4330, 2573, 3488, 1460, 4806, 8226, 2478, + + 4807, 8226, 5404, 2452, 2396, 3500, 8226, 3236, 4509, 8226, + 3767, 4176, 5569, 5577, 5609, 5620, 5635, 5127, 5664, 5797, + 5568, 2344, 5674, 5686, 5436, 2321, 4888, 2266, 2147, 2122, + 5735, 3699, 5812, 5852, 5747, 3762, 5841, 2093, 2086, 3611, + 5892, 5932, 5972, 5829, 5873, 5904, 2088, 2016, 4349, 4455, + 5839, 4543, 6012, 0, 5916, 6025, 5942, 5062, 5954, 1931, + 5983, 5994, 5216, 1899, 1834, 4891, 8226, 6062, 6063, 1785, + 8226, 4708, 6051, 6074, 6097, 6109, 6121, 6148, 4896, 1761, + 6182, 6222, 6262, 6150, 6161, 1564, 6161, 3809, 6302, 6342, + 6138, 6199, 1369, 6234, 6246, 5864, 1302, 1161, 4549, 1148, + + 1066, 6274, 0, 4632, 5405, 8226, 5406, 8226, 6162, 5354, + 6209, 1018, 6286, 6314, 6086, 5551, 6324, 3810, 6382, 6422, + 6355, 6163, 6462, 6502, 6542, 6362, 6393, 6403, 858, 0, + 694, 6164, 8226, 3886, 5618, 8226, 3907, 6434, 6446, 6474, + 6582, 6622, 6662, 6484, 3873, 6702, 6742, 6515, 8226, 6522, + 6553, 5883, 8226, 8226, 6563, 668, 6594, 6606, 6634, 6640, + 3980, 6782, 6822, 6652, 6678, 6716, 6726, 6764, 6792, 6802, + 6832, 6842, 6880, 320, 6890, 6863, 8226, 6901, 6152, 134, + 6928, 6911, 8226, 6984, 7004, 7024, 7044, 7064, 7084, 7104, + 7124, 7144, 7164, 5304, 7184, 7204, 4654, 7224, 7244, 7264, + + 7284, 7304, 7324, 7344, 7364, 7384, 7404, 7424, 7444, 7464, + 7484, 7504, 7524, 7544, 5501, 5541, 7553, 7572, 7592, 7612, + 4724, 7632, 7652, 7672, 7692, 7704, 7724, 4903, 7744, 7764, + 7784, 7804, 7824, 7844, 7864, 7884, 5600, 7893, 5617, 5621, + 5655, 7901, 7920, 5117, 5787, 5791, 5811, 7929, 7938, 5928, + 5971, 6011, 7946, 7955, 6341, 6378, 7963, 7972, 7991, 5798, + 8003, 6381, 8013, 8021, 8030, 8049, 6419, 8061, 8081, 6501, + 8091, 8099, 8108, 8127, 8147, 8167, 6538, 8177, 4345, 6541, + 8186, 6581, 3917, 8205, 3533 } ; -static yyconst flex_int16_t yy_def[1228] = +static yyconst flex_int16_t yy_def[1286] = { 0, - 1125, 1, 1, 1, 1126, 1126, 1127, 1127, 1128, 1128, - 1129, 1129, 1125, 13, 1130, 1130, 1125, 17, 1125, 1131, - 1125, 1125, 1125, 1125, 1125, 1132, 1133, 1125, 1125, 1134, - 1125, 1135, 1131, 33, 33, 1136, 1125, 1125, 1131, 1125, + 1183, 1, 1, 1, 1184, 1184, 1185, 1185, 1186, 1186, + 1187, 1187, 1183, 13, 1188, 1188, 1183, 17, 1183, 1189, + 1183, 1183, 1183, 1183, 1183, 1190, 1191, 1183, 1183, 1192, + 1183, 1193, 1189, 33, 33, 1194, 1183, 1183, 1189, 1183, 40, 40, 40, 40, 40, 45, 45, 45, 45, 45, - 45, 45, 1131, 33, 1131, 1125, 1132, 40, 40, 45, - 45, 45, 1125, 1125, 1125, 1137, 45, 45, 45, 1131, - 1138, 1125, 1125, 1138, 1125, 1138, 1125, 1132, 1125, 1139, - 1140, 1125, 1140, 1125, 1140, 1125, 1141, 1142, 1142, 1142, - 1125, 1125, 1143, 1144, 1145, 1125, 96, 96, 96, 1125, - - 100, 100, 100, 100, 104, 104, 104, 104, 104, 96, - 99, 99, 1146, 1146, 1125, 1146, 1147, 1148, 1149, 1150, - 1147, 121, 121, 1125, 124, 124, 124, 124, 128, 128, - 128, 128, 128, 1147, 121, 1147, 1131, 1131, 1125, 1125, - 1125, 1151, 1125, 1125, 1152, 1125, 1153, 1125, 1143, 1153, - 1154, 1154, 1155, 1156, 1131, 1131, 1131, 1157, 157, 157, - 157, 157, 1158, 1159, 1131, 1125, 166, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 1125, 1125, 1131, 1131, 1131, 1131, 1125, 1125, - 1125, 1125, 1125, 1125, 1151, 1131, 157, 1131, 1131, 1131, - - 1125, 1125, 1125, 1125, 1160, 1161, 1131, 167, 1131, 1162, - 1162, 1125, 1125, 1125, 1125, 1152, 1163, 1164, 1164, 1125, - 1125, 1164, 1164, 1165, 1125, 1165, 1165, 1125, 1125, 1125, - 1143, 1143, 1143, 1166, 1167, 1168, 1166, 1169, 1125, 1125, - 1168, 241, 241, 241, 241, 1125, 246, 247, 1170, 247, - 247, 247, 247, 247, 247, 247, 1168, 1168, 1171, 1171, - 1171, 1172, 1172, 1173, 1173, 1174, 1174, 1175, 1176, 1172, - 1172, 1172, 272, 272, 272, 272, 1125, 277, 278, 278, - 278, 278, 278, 278, 278, 278, 1172, 1172, 1172, 1172, - 1177, 1177, 1178, 1125, 1125, 1131, 1131, 1131, 1131, 299, - - 1179, 1125, 1180, 1125, 1131, 1125, 306, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 1131, 1131, 1125, - 1125, 1125, 1125, 1125, 1177, 1131, 1131, 299, 1131, 1131, - 1131, 1125, 1131, 1125, 1125, 1125, 1125, 1168, 348, 246, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 1168, 1168, 1125, 1172, 1172, 1172, 272, - 370, 277, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 1172, 1172, 1125, 1178, 1178, - 1131, 1131, 1131, 1131, 1131, 1131, 1181, 1182, 1182, 399, - - 1183, 1182, 1184, 304, 1125, 405, 405, 1125, 405, 1131, - 1125, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 1131, 1131, 1131, 1131, 1125, 1125, 1125, 1125, 1125, - 1125, 1185, 1131, 1131, 1131, 1131, 1125, 1125, 1125, 1125, - 1125, 348, 246, 247, 247, 1186, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 452, 466, 466, 466, 1172, - 1172, 1172, 1172, 1172, 1172, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 1172, 1172, - 1172, 1172, 1131, 1131, 1131, 1125, 1187, 1187, 498, 1187, - - 1188, 1189, 1190, 1125, 1191, 408, 1191, 1125, 508, 1191, - 1125, 511, 511, 1125, 511, 1131, 411, 1125, 1125, 411, - 411, 411, 411, 1125, 1125, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 1131, 1131, 1131, - 1131, 1131, 1125, 1125, 1125, 1185, 1131, 1131, 1131, 1125, - 1125, 1125, 452, 453, 247, 1186, 1186, 247, 247, 247, - 247, 247, 247, 247, 247, 466, 466, 466, 466, 466, - 1172, 1172, 1172, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 1172, 1172, 1172, 1172, 1172, 1131, - 1131, 1131, 1131, 1131, 1192, 1192, 1193, 1194, 1125, 1125, - - 1125, 1125, 1125, 1195, 1195, 1196, 514, 1196, 1125, 609, - 1196, 1125, 612, 612, 1125, 612, 1131, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 1131, 1131, 1131, 1131, 1131, 1125, 1125, - 1185, 1131, 1131, 1131, 1125, 1125, 1125, 1125, 1125, 247, - 1186, 1186, 247, 247, 1186, 247, 247, 247, 247, 247, - 466, 466, 466, 466, 466, 1172, 1172, 1172, 1172, 1172, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 1172, 1172, 1172, 1172, 1172, 1131, 1131, 1131, 1125, - 1197, 1198, 599, 1125, 694, 694, 1125, 694, 1125, 1125, - - 1125, 1125, 1125, 1125, 1199, 1199, 1200, 615, 1200, 1125, - 710, 1200, 1125, 713, 713, 1125, 713, 1131, 1125, 1125, - 1125, 721, 721, 1125, 1125, 721, 721, 721, 1125, 1125, - 721, 721, 721, 721, 1125, 1125, 1125, 1125, 721, 1131, - 1125, 1125, 1201, 1131, 1131, 1131, 1125, 1125, 1125, 1202, - 1202, 1125, 1202, 1202, 752, 752, 1203, 1172, 1172, 1172, - 1125, 761, 761, 761, 761, 761, 761, 1172, 1131, 1131, - 1131, 1131, 1131, 1125, 1204, 1125, 1205, 697, 1205, 1205, - 780, 1205, 1125, 783, 783, 1125, 783, 1125, 1125, 1125, - 1125, 1206, 1206, 1207, 716, 1207, 1125, 797, 1207, 1125, - - 800, 800, 800, 1131, 1125, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 1131, 1125, 1125, 1208, 1131, 1131, - 1131, 1125, 1125, 1125, 1125, 1125, 1209, 1209, 1125, 1209, - 1209, 829, 829, 1210, 1211, 1211, 1211, 1211, 1211, 1125, - 840, 840, 840, 840, 840, 840, 1211, 1131, 1131, 1131, - 1131, 1125, 1125, 1125, 1125, 1212, 1212, 1213, 786, 1213, - 1213, 861, 1213, 1125, 864, 864, 1125, 864, 1125, 1125, - 1125, 1125, 1125, 1125, 1214, 1214, 1215, 1215, 1215, 879, - 1215, 1131, 805, 805, 805, 1125, 1125, 805, 805, 1125, - 1125, 1125, 1125, 805, 1125, 1125, 1216, 1208, 1131, 1217, - - 1218, 1125, 1125, 1125, 1125, 1209, 1209, 1209, 1209, 1211, - 1211, 1211, 1211, 840, 840, 840, 840, 1131, 1131, 1131, - 1131, 1131, 1131, 1125, 1125, 1125, 1125, 1125, 1125, 1219, - 1219, 1220, 867, 1220, 1220, 935, 1220, 1125, 938, 938, - 1125, 938, 1125, 1125, 1125, 1125, 1221, 1221, 1131, 805, - 1125, 1125, 805, 805, 805, 1125, 1216, 1216, 1125, 1216, - 1208, 1217, 1217, 1217, 1217, 1125, 1217, 1218, 1218, 1125, - 1125, 1125, 1125, 1125, 1125, 1209, 1209, 1209, 1211, 1211, - 1211, 1211, 1211, 1211, 840, 840, 840, 1131, 1131, 1131, - 1125, 1125, 1125, 1125, 1222, 1222, 1223, 941, 1223, 1223, - - 1000, 1223, 1125, 1003, 1003, 1003, 1125, 1125, 1125, 1125, - 1125, 1131, 1125, 1125, 805, 805, 1125, 1208, 1125, 1125, - 1125, 1125, 1125, 1209, 1209, 1211, 1211, 1211, 840, 840, - 1131, 1131, 1131, 1131, 1131, 1125, 1125, 1125, 1125, 1125, - 1125, 1224, 1224, 1225, 1225, 1225, 1046, 1046, 1125, 1125, - 805, 1226, 1125, 1125, 1125, 1125, 1125, 1209, 1211, 1211, - 1211, 1211, 1211, 840, 1131, 1131, 1131, 1125, 1125, 1125, - 1125, 1227, 1227, 1125, 1125, 1226, 1226, 1125, 1226, 1125, - 1125, 1125, 1211, 1211, 1211, 1131, 1131, 1131, 1131, 1131, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - - 1125, 1211, 1211, 1211, 1211, 1211, 1131, 1131, 1131, 1125, - 1125, 1125, 1211, 1211, 1211, 1131, 1131, 1131, 1125, 1125, - 1125, 1211, 1211, 1211, 0, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125 + 45, 45, 45, 1189, 33, 1189, 1183, 1190, 40, 40, + 45, 45, 45, 1183, 1183, 1183, 1195, 45, 45, 45, + 1189, 1196, 1183, 1183, 1196, 1183, 1196, 1183, 1190, 1183, + 1197, 1198, 1183, 1198, 1183, 1198, 1183, 1199, 1200, 1200, + 1200, 1183, 1183, 1201, 1202, 1203, 1183, 97, 97, 97, + + 1183, 101, 101, 101, 101, 105, 105, 105, 105, 105, + 105, 97, 100, 100, 1204, 1204, 1183, 1204, 1205, 1206, + 1207, 1208, 1205, 123, 123, 1183, 126, 126, 126, 126, + 130, 130, 130, 130, 130, 130, 1205, 123, 1205, 1189, + 1189, 1183, 1183, 1183, 1209, 1183, 1183, 1210, 1183, 1211, + 1183, 1201, 1211, 1212, 1212, 1213, 1214, 1189, 1189, 1189, + 1215, 160, 160, 160, 160, 1216, 1217, 1189, 1183, 169, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 1183, 1183, 1189, 1189, + 1189, 1189, 1183, 1183, 1183, 1183, 1183, 1183, 1209, 1189, + + 160, 1189, 1189, 1189, 1183, 1183, 1183, 1183, 1218, 1219, + 1189, 170, 1189, 1220, 1220, 1183, 1183, 1183, 1183, 1210, + 1221, 1222, 1222, 1183, 1183, 1222, 1222, 1223, 1183, 1223, + 1223, 1183, 1183, 1183, 1201, 1201, 1201, 1224, 1225, 1226, + 1224, 1227, 1183, 1183, 1226, 245, 245, 245, 245, 1183, + 250, 251, 1228, 251, 251, 251, 251, 251, 251, 251, + 251, 1226, 1226, 1229, 1229, 1229, 1230, 1230, 1231, 1231, + 1232, 1232, 1233, 1234, 1230, 1230, 1230, 277, 277, 277, + 277, 1183, 282, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 1230, 1230, 1230, 1230, 1235, 1235, 1236, 1183, + + 1183, 1189, 1189, 1189, 1189, 305, 1237, 1183, 1238, 1183, + 1189, 1183, 312, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 1189, 1189, 1183, 1183, 1183, + 1183, 1183, 1235, 1189, 1189, 305, 1189, 1189, 1189, 1183, + 1189, 1183, 1183, 1183, 1183, 1226, 356, 250, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 1226, 1226, 1183, 1230, 1230, 1230, 277, + 380, 282, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 1230, 1230, 1183, + + 1236, 1236, 1189, 1189, 1189, 1189, 1189, 1189, 1239, 1240, + 1240, 411, 1241, 1240, 1242, 310, 1183, 417, 417, 1183, + 417, 1189, 1183, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 1189, 1189, 1189, 1189, 1183, + 1183, 1183, 1183, 1183, 1183, 1243, 1189, 1189, 1189, 1189, + 1183, 1183, 1183, 1183, 1183, 356, 250, 251, 251, 251, + 1244, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 466, 482, 482, 482, 1230, 1230, 1230, 1230, 1230, + 1230, 283, 283, 283, 283, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 1230, 1230, 1230, 1230, + 1189, 1189, 1189, 1183, 1245, 1245, 516, 1245, 1246, 1247, + 1248, 1183, 1249, 420, 1249, 1183, 526, 1249, 1183, 529, + 529, 1183, 529, 1189, 423, 1183, 1183, 423, 423, 423, + 423, 423, 1183, 1183, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 1189, 1189, 1189, + 1189, 1189, 1183, 1183, 1183, 1243, 1189, 1189, 1189, 1183, + 1183, 1183, 466, 467, 251, 251, 1244, 1244, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 482, 482, 482, + 482, 482, 1230, 1230, 1230, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, 1230, 1230, + 1230, 1230, 1230, 1189, 1189, 1189, 1189, 1189, 1250, 1250, + 1251, 1252, 1183, 1183, 1183, 1183, 1183, 1253, 1253, 1254, + 532, 1254, 1183, 633, 1254, 1183, 636, 636, 1183, 636, + 1189, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 1189, + 1189, 1189, 1189, 1189, 1183, 1183, 1243, 1189, 1189, 1189, + 1183, 1183, 1183, 1183, 1183, 251, 251, 1244, 1244, 251, + 251, 251, 1244, 251, 251, 251, 251, 251, 482, 482, + 482, 482, 482, 1230, 1230, 1230, 1230, 1230, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 1230, 1230, 1230, 1230, 1230, 1189, 1189, 1189, 1183, + 1255, 1256, 623, 1183, 724, 724, 1183, 724, 1183, 1183, + 1183, 1183, 1183, 1183, 1257, 1257, 1258, 639, 1258, 1183, + 740, 1258, 1183, 743, 743, 1183, 743, 1189, 1183, 1183, + 1183, 751, 751, 751, 1183, 1183, 751, 751, 751, 751, + 1183, 1183, 751, 751, 751, 751, 1183, 1183, 1183, 1183, + 751, 1189, 1183, 1183, 1259, 1189, 1189, 1189, 1183, 1183, + 1183, 251, 1260, 1260, 251, 251, 1260, 1260, 251, 251, + 1261, 1230, 1230, 1230, 1183, 795, 795, 795, 795, 795, + + 795, 795, 795, 1230, 1189, 1189, 1189, 1189, 1189, 1183, + 1262, 1183, 1263, 727, 1263, 1263, 816, 1263, 1183, 819, + 819, 1183, 819, 1183, 1183, 1183, 1183, 1264, 1264, 1265, + 746, 1265, 1183, 833, 1265, 1183, 836, 836, 836, 1189, + 1183, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 1189, 1183, 1183, 1266, 1189, 1189, 1189, 1183, + 1183, 1183, 1183, 1183, 1183, 1267, 1267, 865, 865, 1267, + 1267, 865, 865, 1268, 1269, 1269, 1269, 1269, 1269, 1183, + 880, 880, 880, 880, 880, 880, 880, 880, 1269, 1189, + 1189, 1189, 1189, 1183, 1183, 1183, 1183, 1270, 1270, 1271, + + 822, 1271, 1271, 903, 1271, 1183, 906, 906, 1183, 906, + 1183, 1183, 1183, 1183, 1183, 1183, 1272, 1272, 1273, 1273, + 1273, 921, 1273, 1189, 841, 841, 841, 841, 1183, 1183, + 841, 841, 841, 1183, 1183, 1183, 1183, 841, 1183, 1183, + 1274, 1266, 1189, 1275, 1276, 1183, 1183, 1183, 1183, 865, + 1267, 1267, 865, 1267, 1267, 1269, 1269, 1269, 1269, 880, + 880, 880, 880, 880, 880, 1189, 1189, 1189, 1189, 1189, + 1189, 1183, 1183, 1183, 1183, 1183, 1183, 1277, 1277, 1278, + 909, 1278, 1278, 983, 1278, 1183, 986, 986, 1183, 986, + 1183, 1183, 1183, 1183, 1279, 1279, 1189, 1183, 1183, 841, + + 1183, 1183, 841, 841, 841, 841, 1183, 1274, 1274, 1183, + 1274, 1266, 1275, 1275, 1275, 1275, 1183, 1275, 1276, 1276, + 1183, 1183, 1183, 1183, 1183, 1183, 1267, 865, 1267, 1267, + 1269, 1269, 1269, 1269, 1269, 1269, 880, 880, 880, 880, + 1189, 1189, 1189, 1183, 1183, 1183, 1183, 1280, 1280, 1281, + 989, 1281, 1281, 1053, 1281, 1183, 1056, 1056, 1056, 1183, + 1183, 1183, 1183, 1183, 1189, 1183, 1183, 841, 841, 841, + 1183, 1266, 1183, 1183, 1183, 1183, 1183, 865, 1267, 1267, + 1269, 1269, 1269, 880, 880, 880, 1189, 1189, 1189, 1189, + 1189, 1183, 1183, 1183, 1183, 1183, 1183, 1282, 1282, 1283, + + 1283, 1283, 1102, 1102, 1183, 1183, 1183, 1183, 841, 1284, + 1183, 1183, 1183, 1183, 1183, 1267, 1269, 1269, 1269, 1269, + 1269, 880, 1189, 1189, 1189, 1183, 1183, 1183, 1183, 1285, + 1285, 1183, 1183, 1284, 1284, 1183, 1284, 1183, 1183, 1183, + 1269, 1269, 1269, 1189, 1189, 1189, 1189, 1189, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1269, + 1269, 1269, 1269, 1269, 1189, 1189, 1189, 1183, 1183, 1183, + 1269, 1269, 1269, 1189, 1189, 1189, 1183, 1183, 1183, 1269, + 1269, 1269, 0, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183 } ; -static yyconst flex_int16_t yy_nxt[8328] = +static yyconst flex_int16_t yy_nxt[8301] = { 0, 20, 21, 22, 20, 23, 21, 24, 25, 26, 27, 28, 29, 20, 30, 31, 20, 20, 32, 33, 34, 35, 33, 33, 33, 33, 33, 33, 33, 36, 37, 38, 39, 40, 41, 42, 41, 43, 44, 45, 45, - 45, 45, 46, 47, 48, 45, 49, 50, 51, 52, - 45, 45, 45, 45, 45, 53, 20, 54, 54, 54, - 54, 54, 54, 20, 20, 20, 20, 20, 20, 20, - 20, 55, 20, 20, 56, 139, 177, 167, 56, 139, - 148, 57, 21, 72, 138, 73, 21, 74, 171, 75, - 181, 178, 173, 169, 165, 75, 167, 174, 21, 72, - - 149, 73, 21, 74, 182, 75, 170, 58, 59, 75, - 76, 75, 60, 161, 161, 161, 161, 161, 162, 167, - 61, 179, 172, 62, 63, 75, 76, 150, 63, 89, - 22, 64, 23, 89, 90, 91, 77, 65, 89, 22, - 66, 23, 89, 90, 91, 220, 204, 167, 247, 199, - 204, 251, 77, 278, 20, 138, 281, 41, 21, 22, - 38, 23, 21, 114, 115, 67, 197, 68, 305, 69, - 45, 219, 45, 21, 22, 38, 23, 21, 114, 115, - 154, 154, 138, 92, 154, 154, 184, 138, 227, 263, - 247, 187, 92, 201, 70, 63, 187, 201, 221, 63, - - 188, 250, 64, 226, 154, 209, 202, 226, 65, 138, - 137, 66, 116, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 435, 219, 20, 189, 116, 41, 155, - 189, 183, 184, 261, 213, 183, 67, 225, 68, 138, - 69, 45, 137, 45, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 148, 169, 338, 225, 167, 190, - 191, 143, 138, 292, 192, 70, 21, 22, 170, 23, - 21, 24, 193, 78, 232, 194, 223, 184, 339, 213, - 223, 203, 260, 196, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 228, 229, 664, 230, 228, 236, - - 224, 233, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 244, 244, 244, 244, 244, 245, 424, 425, - 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 21, - 22, 148, 23, 21, 24, 1125, 78, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 278, 257, 139, - 302, 232, 138, 139, 328, 206, 206, 258, 280, 206, - 206, 304, 227, 183, 184, 138, 213, 183, 274, 274, - 274, 274, 274, 274, 274, 274, 274, 274, 265, 206, - 138, 443, 184, 79, 80, 80, 80, 80, 80, 80, - - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 21, 22, 207, 23, 21, 24, 82, 78, - 263, 225, 386, 138, 83, 84, 85, 260, 212, 184, - 436, 213, 212, 214, 234, 215, 340, 234, 437, 214, - 86, 215, 263, 234, 148, 263, 234, 138, 138, 234, - 234, 289, 329, 269, 269, 215, 215, 269, 269, 143, - 290, 292, 446, 236, 1125, 234, 87, 21, 22, 138, - 23, 21, 24, 82, 78, 341, 388, 269, 292, 83, - 84, 85, 215, 275, 275, 275, 275, 275, 276, 237, - 234, 233, 158, 183, 184, 86, 213, 183, 143, 1125, - - 390, 262, 270, 273, 273, 273, 273, 273, 273, 273, - 273, 273, 273, 300, 300, 300, 300, 300, 300, 138, - 521, 87, 38, 21, 22, 38, 23, 21, 24, 38, - 38, 93, 28, 29, 38, 94, 31, 38, 38, 95, - 96, 97, 98, 96, 96, 96, 96, 96, 96, 96, - 36, 99, 38, 38, 100, 101, 101, 101, 102, 103, - 104, 104, 104, 104, 105, 106, 107, 104, 108, 104, - 109, 104, 104, 104, 104, 104, 104, 79, 38, 110, - 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, - 111, 111, 111, 112, 111, 111, 117, 21, 22, 117, - - 23, 21, 24, 38, 38, 118, 28, 29, 117, 119, - 31, 117, 117, 120, 121, 122, 123, 121, 121, 121, - 121, 121, 121, 121, 36, 37, 38, 117, 124, 125, - 125, 125, 126, 127, 128, 128, 128, 128, 129, 130, - 131, 128, 132, 128, 133, 128, 128, 128, 128, 128, - 128, 134, 117, 135, 135, 135, 135, 135, 135, 117, - 117, 117, 117, 117, 117, 117, 117, 136, 117, 117, - 143, 261, 144, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 145, 1097, 1125, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 156, 529, 157, 157, - - 157, 157, 157, 157, 157, 157, 157, 157, 158, 138, - 776, 445, 159, 159, 159, 159, 159, 159, 183, 184, - 260, 213, 183, 137, 137, 137, 137, 137, 204, 137, - 137, 138, 204, 137, 302, 138, 336, 159, 159, 159, - 159, 159, 159, 137, 337, 404, 137, 137, 137, 137, - 204, 1125, 137, 344, 204, 137, 137, 344, 137, 137, - 137, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 158, 138, 622, 137, 166, 166, 166, 166, 166, - 166, 167, 167, 167, 167, 168, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 138, 167, - - 159, 159, 159, 159, 159, 159, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 1125, 143, 1125, - 390, 167, 167, 167, 167, 167, 167, 138, 143, 528, - 292, 167, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 336, 138, 1125, 1125, 137, 137, 137, 137, - 137, 137, 183, 184, 532, 185, 186, 137, 137, 137, - 336, 137, 137, 294, 1125, 137, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 998, 148, 138, 137, - 137, 137, 143, 343, 144, 1125, 147, 147, 147, 147, - - 147, 233, 147, 147, 335, 145, 147, 1125, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 1053, 534, - 147, 147, 147, 151, 151, 151, 151, 151, 1125, 151, - 151, 315, 316, 151, 233, 154, 154, 317, 318, 154, - 154, 319, 226, 320, 321, 517, 226, 151, 151, 151, - 201, 388, 263, 390, 201, 195, 143, 387, 144, 154, - 138, 183, 184, 202, 213, 183, 542, 228, 229, 216, - 230, 228, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 154, 138, 155, 154, 259, 410, 154, 154, - 259, 154, 154, 154, 154, 263, 225, 154, 154, 296, - - 297, 298, 296, 296, 296, 296, 296, 296, 296, 492, - 1125, 236, 154, 154, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 619, 1125, 138, 239, 154, 236, - 260, 1125, 240, 236, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 158, 236, 531, 536, 242, 242, - 242, 242, 242, 242, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 833, 247, 242, 242, 242, 242, 242, 242, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - - 1125, 391, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 1125, 500, 500, 500, 236, 236, 236, 236, - 236, 236, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 138, 1125, 1125, 183, 184, 336, 213, 183, - 138, 236, 236, 236, 236, 236, 236, 236, 527, 138, - 520, 236, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 158, 236, 1125, 336, 246, 246, 246, 246, - 246, 246, 247, 247, 247, 247, 248, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 219, - 249, 242, 242, 242, 242, 242, 242, 236, 236, 236, - - 236, 236, 236, 236, 236, 236, 236, 236, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 1125, 1125, - 1125, 547, 247, 247, 247, 247, 247, 247, 526, 344, - 206, 206, 247, 344, 206, 206, 349, 349, 349, 349, - 349, 349, 189, 731, 138, 541, 189, 236, 236, 236, - 236, 236, 236, 271, 206, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 158, 1125, 776, 1125, 273, - 273, 273, 273, 273, 273, 190, 191, 315, 316, 207, - 192, 138, 302, 317, 318, 537, 530, 319, 193, 320, - 1125, 194, 263, 404, 273, 273, 273, 273, 273, 273, - - 262, 218, 1125, 262, 624, 218, 556, 218, 218, 262, - 533, 557, 262, 262, 218, 262, 262, 262, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 158, 218, - 998, 262, 277, 277, 277, 277, 277, 277, 278, 278, - 278, 278, 279, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 263, 278, 273, 273, 273, - 273, 273, 273, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 1125, 138, 138, 819, 278, 278, - 278, 278, 278, 278, 143, 470, 292, 516, 278, 1125, - - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 432, - 433, 1125, 434, 262, 262, 262, 262, 262, 262, 183, - 184, 540, 287, 288, 262, 262, 262, 621, 262, 262, - 466, 467, 262, 468, 263, 231, 231, 231, 231, 138, - 538, 231, 231, 539, 138, 231, 262, 262, 262, 154, - 138, 442, 137, 153, 137, 137, 153, 617, 137, 137, - 231, 231, 153, 345, 346, 347, 345, 345, 345, 345, - 345, 345, 345, 1125, 138, 138, 153, 153, 137, 156, - 549, 299, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 158, 143, 535, 292, 299, 299, 299, 299, 299, - - 299, 183, 184, 933, 213, 183, 234, 234, 234, 234, - 234, 236, 234, 234, 236, 1125, 234, 568, 138, 1125, - 299, 299, 299, 299, 299, 299, 137, 628, 167, 137, - 234, 234, 234, 569, 236, 137, 618, 236, 137, 137, - 808, 137, 137, 137, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 158, 263, 546, 137, 306, 306, - 306, 306, 306, 306, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 138, 167, 299, 299, 299, 299, 299, 299, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 1125, 158, 278, 846, 167, 167, 167, 167, 167, 167, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 371, 371, 371, 371, 371, 371, 302, 1125, 263, 137, - 137, 137, 137, 137, 137, 206, 587, 404, 137, 205, - 137, 137, 205, 234, 137, 137, 234, 627, 205, 1125, - 518, 575, 234, 154, 518, 234, 576, 154, 234, 234, - 154, 1125, 205, 205, 137, 263, 154, 489, 490, 263, - 491, 633, 236, 522, 234, 589, 1125, 519, 523, 1036, - 154, 154, 349, 349, 349, 349, 349, 349, 349, 349, - - 349, 349, 509, 509, 509, 509, 509, 510, 237, 234, - 154, 524, 263, 154, 625, 524, 154, 154, 1125, 154, - 154, 154, 154, 356, 357, 154, 154, 518, 524, 358, - 359, 518, 524, 360, 1125, 361, 620, 158, 525, 236, - 154, 154, 1125, 630, 367, 368, 369, 367, 367, 367, - 367, 367, 367, 367, 519, 525, 269, 269, 1064, 236, - 269, 269, 236, 629, 138, 239, 154, 240, 588, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 158, - 269, 263, 548, 348, 348, 348, 348, 348, 348, 1125, - 1125, 262, 262, 262, 262, 262, 585, 262, 262, 586, - - 570, 262, 138, 626, 263, 270, 732, 638, 348, 348, - 348, 348, 348, 348, 236, 262, 262, 262, 236, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 158, - 236, 263, 1058, 350, 350, 350, 350, 350, 350, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 635, 249, 348, 348, - 348, 348, 348, 348, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 1125, 1125, 138, 138, 247, - 247, 247, 247, 247, 247, 1125, 264, 264, 264, 264, - - 264, 623, 264, 264, 722, 391, 264, 392, 392, 392, - 392, 392, 392, 634, 236, 236, 236, 236, 236, 236, - 264, 264, 264, 266, 266, 266, 266, 266, 1125, 266, - 266, 885, 167, 266, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 138, 1125, 138, 266, 266, 266, - 269, 632, 631, 262, 268, 262, 262, 268, 1125, 262, - 262, 302, 636, 268, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 590, 726, 138, 268, 268, 262, - 271, 644, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 158, 504, 302, 138, 370, 370, 370, 370, - - 370, 370, 378, 379, 138, 506, 518, 524, 380, 381, - 518, 524, 382, 138, 383, 642, 1125, 302, 138, 263, - 302, 370, 370, 370, 370, 370, 370, 262, 506, 643, - 262, 404, 302, 519, 525, 236, 262, 661, 236, 262, - 262, 138, 262, 262, 262, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 158, 933, 820, 262, 372, - 372, 372, 372, 372, 372, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 263, 278, 370, 370, 370, 370, 370, 370, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - - 262, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 1125, 143, 1125, 292, 278, 278, 278, 278, 278, - 278, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 447, 721, 448, 448, 448, 448, 448, 448, 859, - 262, 262, 262, 262, 262, 262, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 391, 637, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 447, 1029, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 683, 206, 263, 641, 666, 206, 236, 686, 206, 236, - 662, 138, 138, 1025, 206, 138, 391, 804, 393, 393, - - 393, 393, 393, 393, 393, 393, 393, 393, 206, 206, - 447, 263, 449, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 447, 263, 450, 450, 450, 450, 450, 451, - 448, 448, 448, 448, 236, 138, 391, 236, 394, 394, - 394, 394, 394, 395, 392, 392, 392, 392, 498, 498, - 499, 500, 500, 500, 500, 500, 500, 500, 401, 138, - 269, 302, 518, 278, 269, 842, 518, 269, 236, 740, - 663, 236, 506, 269, 665, 138, 396, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 158, 269, 269, 519, - 396, 396, 396, 396, 396, 396, 493, 494, 495, 493, - - 493, 493, 493, 493, 493, 493, 610, 610, 610, 610, - 610, 611, 884, 138, 167, 396, 396, 396, 396, 396, - 396, 398, 399, 400, 400, 400, 400, 400, 400, 400, - 400, 401, 1125, 138, 1024, 402, 402, 402, 402, 402, - 402, 409, 409, 409, 409, 409, 409, 409, 409, 409, - 409, 524, 138, 723, 753, 524, 889, 718, 167, 754, - 402, 402, 402, 402, 402, 402, 302, 405, 406, 407, - 405, 405, 405, 405, 405, 405, 405, 408, 525, 685, - 682, 409, 409, 409, 409, 409, 409, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 711, 711, 711, - - 711, 711, 712, 1125, 504, 302, 409, 409, 409, 409, - 409, 409, 137, 263, 263, 137, 506, 167, 1125, 236, - 734, 137, 236, 807, 137, 137, 733, 137, 137, 137, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 158, 278, 915, 137, 411, 411, 411, 411, 411, 411, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 138, 167, 396, - 396, 396, 396, 396, 396, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 1125, 1125, 504, 302, - - 167, 167, 167, 167, 167, 167, 1125, 1125, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 739, 727, - 236, 1125, 302, 236, 728, 137, 137, 137, 137, 137, - 137, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 158, 953, 970, 167, 452, 452, 452, 452, 452, - 452, 550, 551, 552, 550, 550, 550, 550, 550, 550, - 550, 719, 724, 764, 684, 719, 724, 970, 765, 138, - 452, 452, 452, 452, 452, 452, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 745, 167, 720, 725, - 453, 453, 453, 453, 453, 453, 447, 263, 448, 448, - - 448, 448, 448, 448, 448, 448, 448, 448, 811, 236, - 504, 302, 236, 167, 302, 452, 452, 452, 452, 452, - 452, 470, 607, 471, 471, 471, 471, 471, 471, 471, - 471, 471, 471, 447, 859, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 571, 572, 573, 571, 571, - 571, 571, 571, 571, 571, 236, 954, 167, 236, 138, - 263, 470, 302, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 506, 470, 899, 471, 471, 471, 471, - 471, 471, 263, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 401, 167, 143, 843, 292, 809, 778, - - 263, 470, 278, 473, 473, 473, 473, 473, 474, 471, - 471, 471, 471, 263, 601, 602, 603, 601, 601, 601, - 601, 601, 601, 601, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 515, 236, 167, 924, 236, 138, 138, - 263, 262, 813, 475, 475, 475, 475, 475, 475, 475, - 475, 475, 475, 743, 985, 815, 821, 475, 475, 475, - 475, 475, 475, 504, 302, 605, 605, 605, 605, 605, - 605, 138, 729, 735, 737, 506, 729, 735, 737, 757, - 769, 744, 475, 475, 475, 475, 475, 475, 476, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 978, 730, - - 736, 738, 476, 476, 476, 476, 476, 476, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 138, 590, - 977, 591, 591, 591, 591, 591, 591, 475, 475, 475, - 475, 475, 475, 391, 776, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 1125, 778, 608, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 645, 138, 646, - 646, 646, 646, 646, 646, 646, 646, 646, 646, 143, - 841, 292, 138, 391, 278, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 645, 976, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 645, 302, 648, - - 648, 648, 648, 648, 649, 646, 646, 646, 646, 607, - 832, 845, 138, 504, 302, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 506, 278, 247, 818, 507, - 507, 507, 507, 507, 507, 687, 688, 689, 687, 687, - 687, 687, 687, 687, 687, 645, 167, 646, 646, 646, - 646, 646, 646, 814, 507, 507, 507, 507, 507, 507, - 302, 511, 512, 513, 511, 511, 511, 511, 511, 511, - 511, 514, 138, 278, 986, 515, 515, 515, 515, 515, - 515, 699, 138, 700, 700, 700, 700, 700, 700, 700, - 700, 700, 700, 719, 263, 1125, 302, 719, 138, 167, - - 515, 515, 515, 515, 515, 515, 137, 607, 746, 137, - 812, 847, 138, 916, 956, 137, 278, 882, 137, 137, - 720, 137, 137, 137, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 158, 504, 302, 137, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 138, 167, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 553, 553, 553, 553, 553, 553, 553, 553, 553, 553, - 950, 263, 167, 167, 553, 553, 553, 553, 553, 553, - - 699, 768, 701, 701, 701, 701, 701, 701, 701, 701, - 701, 701, 781, 781, 781, 781, 781, 782, 869, 553, - 553, 553, 553, 553, 553, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 987, 167, 778, 278, 554, - 554, 554, 554, 554, 554, 699, 806, 702, 702, 702, - 702, 702, 703, 700, 700, 700, 700, 798, 798, 798, - 798, 798, 799, 693, 553, 553, 553, 553, 553, 553, - 236, 236, 566, 236, 236, 567, 236, 236, 236, 236, - 1125, 1015, 263, 167, 236, 236, 236, 236, 236, 236, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 46, 45, 47, 48, 49, 45, 50, 51, 52, 53, + 45, 45, 45, 45, 45, 54, 20, 55, 55, 55, + 55, 55, 55, 20, 20, 20, 20, 20, 20, 20, + 20, 56, 20, 20, 57, 142, 181, 170, 57, 142, + 151, 58, 21, 73, 141, 74, 21, 75, 174, 76, + 185, 182, 177, 172, 168, 76, 170, 178, 21, 73, + + 152, 74, 21, 75, 186, 76, 173, 59, 60, 76, + 77, 76, 61, 164, 164, 164, 164, 164, 165, 170, + 62, 183, 175, 63, 64, 76, 77, 153, 64, 90, + 22, 65, 23, 90, 91, 92, 78, 66, 90, 22, + 67, 23, 90, 91, 92, 224, 208, 170, 251, 203, + 208, 255, 78, 283, 20, 141, 286, 41, 21, 22, + 38, 23, 21, 116, 117, 68, 201, 69, 311, 70, + 45, 223, 45, 21, 22, 38, 23, 21, 116, 117, + 157, 157, 141, 93, 157, 157, 188, 141, 231, 268, + 251, 191, 93, 205, 71, 64, 191, 205, 225, 64, + + 192, 254, 65, 230, 157, 213, 206, 230, 66, 141, + 140, 67, 118, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 449, 223, 20, 193, 118, 41, 158, + 193, 187, 188, 266, 217, 187, 68, 229, 69, 141, + 70, 45, 140, 45, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 151, 172, 346, 229, 170, 194, + 195, 146, 141, 298, 196, 71, 21, 22, 173, 23, + 21, 24, 197, 79, 236, 198, 227, 188, 347, 217, + 227, 207, 265, 200, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 232, 233, 692, 234, 232, 240, + + 228, 237, 247, 247, 247, 247, 247, 247, 247, 247, + 247, 247, 248, 248, 248, 248, 248, 249, 438, 439, + 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 21, + 22, 151, 23, 21, 24, 1183, 79, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 283, 262, 142, + 308, 236, 141, 142, 336, 210, 210, 263, 285, 210, + 210, 310, 231, 187, 188, 141, 217, 187, 279, 279, + 279, 279, 279, 279, 279, 279, 279, 279, 270, 210, + 141, 457, 188, 80, 81, 81, 81, 81, 81, 81, - 699, 894, 700, 700, 700, 700, 700, 700, 917, 236, - 236, 236, 236, 236, 236, 470, 167, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 471, 504, 302, 706, - 706, 706, 706, 706, 706, 1016, 167, 138, 1125, 607, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 778, 888, 1012, 835, 263, 470, 167, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 471, 1125, 909, 709, - 709, 709, 709, 709, 709, 709, 709, 709, 709, 747, - 748, 749, 747, 747, 747, 747, 747, 747, 747, 897, - 143, 263, 292, 897, 263, 590, 776, 591, 591, 591, - - 591, 591, 591, 591, 591, 591, 591, 645, 778, 646, - 646, 646, 646, 646, 646, 646, 646, 646, 646, 645, - 302, 646, 646, 646, 646, 646, 646, 646, 646, 646, - 646, 607, 724, 908, 138, 590, 724, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 167, 898, 729, - 504, 302, 959, 729, 960, 907, 1017, 810, 960, 725, - 735, 737, 607, 719, 735, 737, 666, 719, 667, 667, - 667, 667, 667, 667, 138, 590, 730, 593, 593, 593, - 593, 593, 594, 591, 591, 591, 591, 736, 738, 776, - 720, 758, 759, 760, 758, 758, 758, 758, 758, 758, - - 758, 859, 724, 729, 906, 263, 724, 729, 862, 862, - 862, 862, 862, 863, 138, 504, 302, 605, 605, 605, - 605, 605, 605, 605, 605, 605, 605, 506, 263, 725, - 730, 604, 604, 604, 604, 604, 604, 698, 698, 698, - 698, 698, 698, 698, 698, 698, 698, 822, 735, 737, - 719, 138, 735, 737, 719, 896, 604, 604, 604, 604, - 604, 604, 504, 302, 606, 606, 606, 606, 606, 606, - 606, 606, 606, 606, 607, 736, 738, 720, 608, 608, - 608, 608, 608, 608, 780, 780, 780, 780, 780, 780, - 780, 780, 780, 780, 724, 729, 735, 955, 724, 729, - - 735, 895, 167, 608, 608, 608, 608, 608, 608, 302, - 612, 613, 614, 612, 612, 612, 612, 612, 612, 612, - 615, 725, 730, 736, 616, 616, 616, 616, 616, 616, - 1125, 302, 779, 779, 779, 779, 779, 779, 779, 779, - 779, 779, 708, 138, 504, 302, 278, 1030, 167, 616, - 616, 616, 616, 616, 616, 666, 708, 667, 667, 667, - 667, 667, 667, 667, 667, 667, 667, 788, 789, 790, - 788, 788, 788, 788, 788, 788, 788, 699, 1125, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 1051, - 859, 167, 918, 693, 263, 666, 502, 668, 668, 668, - - 668, 668, 668, 668, 668, 668, 668, 699, 900, 700, - 700, 700, 700, 700, 700, 700, 700, 700, 700, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 844, - 900, 138, 900, 901, 263, 666, 834, 669, 669, 669, - 669, 669, 670, 667, 667, 667, 667, 1125, 302, 504, - 302, 793, 793, 793, 793, 793, 793, 138, 1078, 708, - 1079, 708, 797, 797, 797, 797, 797, 797, 797, 797, - 797, 797, 737, 918, 263, 590, 737, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 1125, 831, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 796, 738, - - 822, 823, 823, 823, 823, 823, 823, 823, 823, 823, - 823, 1096, 138, 1079, 138, 590, 830, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 822, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, 822, 825, - 825, 825, 825, 825, 826, 823, 823, 823, 823, 958, - 959, 828, 960, 958, 138, 694, 695, 696, 694, 694, - 694, 694, 694, 694, 694, 697, 217, 217, 217, 698, - 698, 698, 698, 698, 698, 979, 848, 849, 850, 851, - 848, 848, 848, 848, 848, 848, 769, 770, 770, 770, - 770, 770, 770, 827, 698, 698, 698, 698, 698, 698, - - 504, 302, 706, 706, 706, 706, 706, 706, 706, 706, - 706, 706, 607, 138, 263, 817, 705, 705, 705, 705, - 705, 705, 979, 816, 138, 853, 854, 855, 853, 853, - 853, 853, 853, 853, 853, 880, 880, 880, 880, 880, - 881, 705, 705, 705, 705, 705, 705, 504, 302, 707, - 707, 707, 707, 707, 707, 707, 707, 707, 707, 708, - 143, 263, 292, 709, 709, 709, 709, 709, 709, 787, - 787, 787, 787, 787, 787, 787, 787, 787, 787, 890, - 892, 886, 167, 890, 892, 886, 1031, 699, 709, 709, - 709, 709, 709, 709, 302, 713, 714, 715, 713, 713, - - 713, 713, 713, 713, 713, 716, 891, 893, 887, 717, - 717, 717, 717, 717, 717, 776, 138, 857, 857, 857, - 857, 857, 857, 961, 693, 138, 949, 778, 502, 504, - 302, 167, 401, 263, 717, 717, 717, 717, 717, 717, - 666, 708, 667, 667, 667, 667, 667, 667, 667, 667, - 667, 667, 861, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 1125, 302, 860, 860, 860, 860, 860, 860, - 860, 860, 860, 860, 708, 1072, 1072, 1072, 1072, 263, - 666, 776, 667, 667, 667, 667, 667, 667, 667, 667, - 667, 667, 869, 859, 870, 870, 870, 870, 870, 870, - - 870, 870, 870, 870, 869, 302, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 795, 1059, 1086, 263, - 769, 770, 770, 770, 770, 770, 770, 770, 770, 770, - 770, 869, 263, 872, 872, 872, 872, 872, 873, 870, - 870, 870, 870, 504, 302, 803, 803, 803, 803, 803, - 803, 803, 803, 803, 803, 795, 263, 138, 138, 769, - 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, - 1125, 302, 504, 302, 876, 876, 876, 876, 876, 876, - 263, 263, 795, 776, 795, 879, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 933, 767, 138, 769, 772, - - 772, 772, 772, 772, 773, 770, 770, 770, 770, 1125, - 1125, 878, 878, 878, 878, 878, 878, 878, 878, 878, - 878, 766, 933, 890, 892, 763, 776, 890, 892, 822, - 823, 823, 823, 823, 823, 823, 138, 776, 933, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 778, - 891, 893, 762, 779, 779, 779, 779, 779, 779, 902, - 903, 904, 905, 902, 902, 902, 902, 902, 902, 163, - 163, 163, 163, 167, 167, 163, 761, 163, 779, 779, - 779, 779, 779, 779, 783, 784, 785, 783, 783, 783, - 783, 783, 783, 783, 786, 217, 217, 217, 787, 787, - - 787, 787, 787, 787, 822, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 886, 890, 892, 756, 886, - 890, 892, 755, 787, 787, 787, 787, 787, 787, 504, - 302, 793, 793, 793, 793, 793, 793, 793, 793, 793, - 793, 708, 887, 891, 893, 792, 792, 792, 792, 792, - 792, 822, 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 886, 278, 278, 278, 886, 752, 751, 750, - 792, 792, 792, 792, 792, 792, 504, 302, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 794, 795, 887, - 645, 742, 796, 796, 796, 796, 796, 796, 910, 911, - - 912, 913, 910, 910, 910, 910, 910, 910, 835, 836, - 836, 836, 836, 836, 836, 741, 138, 796, 796, 796, - 796, 796, 796, 302, 800, 801, 802, 800, 800, 800, - 800, 800, 800, 800, 1102, 263, 138, 138, 803, 803, - 803, 803, 803, 803, 138, 924, 263, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 925, 936, 936, 936, - 936, 936, 937, 803, 803, 803, 803, 803, 803, 137, - 890, 892, 137, 263, 890, 892, 958, 959, 137, 960, - 958, 137, 137, 1125, 137, 137, 137, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 891, 893, 693, - - 137, 167, 167, 167, 167, 167, 167, 167, 167, 805, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 138, 167, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 236, 502, 401, 776, 236, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 998, 236, - 401, 681, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 829, 247, 247, 680, 249, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - - 236, 236, 236, 236, 835, 836, 836, 836, 836, 836, - 836, 836, 836, 836, 836, 924, 679, 926, 926, 926, - 926, 926, 926, 926, 926, 926, 926, 924, 302, 927, - 927, 927, 927, 927, 928, 925, 925, 925, 925, 795, - 678, 677, 263, 835, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 837, 868, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 776, 1125, 931, 931, 931, 931, - 931, 931, 301, 301, 397, 397, 859, 998, 301, 676, - 397, 263, 835, 838, 838, 838, 838, 838, 839, 836, - 836, 836, 836, 935, 935, 935, 935, 935, 935, 935, - - 935, 935, 935, 1125, 900, 934, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 504, 302, 496, 496, 776, - 263, 262, 675, 496, 262, 674, 900, 795, 900, 900, - 262, 998, 673, 262, 262, 672, 262, 262, 262, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 143, - 671, 292, 262, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 840, 278, 278, 278, 278, 263, 278, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 769, 770, 770, 770, 770, - - 770, 770, 770, 770, 770, 770, 943, 944, 945, 943, - 943, 943, 943, 943, 943, 943, 869, 1018, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, 1052, 143, - 660, 292, 1052, 138, 769, 770, 770, 770, 770, 770, - 770, 770, 770, 770, 770, 869, 659, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 869, 658, 870, - 870, 870, 870, 870, 870, 1001, 1001, 1001, 1001, 1001, - 1002, 657, 138, 776, 656, 857, 857, 857, 857, 857, - 857, 857, 857, 857, 857, 778, 776, 655, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, 859, 654, - - 653, 652, 860, 860, 860, 860, 860, 860, 504, 302, - 948, 948, 948, 948, 948, 948, 651, 951, 951, 951, - 1095, 951, 951, 951, 650, 1125, 1095, 860, 860, 860, - 860, 860, 860, 864, 865, 866, 864, 864, 864, 864, - 864, 864, 864, 867, 952, 952, 952, 868, 868, 868, - 868, 868, 868, 963, 1125, 497, 497, 963, 964, 965, - 966, 497, 1077, 1078, 963, 1079, 1077, 167, 963, 964, - 965, 966, 868, 868, 868, 868, 868, 868, 504, 302, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 21, 22, 211, 23, 21, 24, 83, 79, + 268, 229, 398, 141, 84, 85, 86, 265, 216, 188, + 450, 217, 216, 218, 238, 219, 348, 238, 451, 218, + 87, 219, 268, 238, 151, 268, 238, 141, 141, 238, + 238, 295, 337, 274, 274, 219, 219, 274, 274, 146, + 296, 298, 460, 240, 1183, 238, 88, 21, 22, 141, + 23, 21, 24, 83, 79, 349, 400, 274, 298, 84, + 85, 86, 219, 280, 280, 280, 280, 280, 281, 241, + 238, 237, 161, 187, 188, 87, 217, 187, 146, 1183, + + 402, 267, 275, 278, 278, 278, 278, 278, 278, 278, + 278, 278, 278, 306, 306, 306, 306, 306, 306, 141, + 540, 88, 38, 21, 22, 38, 23, 21, 24, 38, + 38, 94, 28, 29, 38, 95, 31, 38, 38, 96, + 97, 98, 99, 97, 97, 97, 97, 97, 97, 97, + 36, 100, 38, 38, 101, 102, 102, 102, 103, 104, + 105, 105, 106, 105, 107, 108, 109, 105, 110, 105, + 111, 105, 105, 105, 105, 105, 105, 80, 38, 112, + 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, + 113, 113, 113, 114, 113, 113, 119, 21, 22, 119, + + 23, 21, 24, 38, 38, 120, 28, 29, 119, 121, + 31, 119, 119, 122, 123, 124, 125, 123, 123, 123, + 123, 123, 123, 123, 36, 37, 38, 119, 126, 127, + 127, 127, 128, 129, 130, 130, 131, 130, 132, 133, + 134, 130, 135, 130, 136, 130, 130, 130, 130, 130, + 130, 137, 119, 138, 138, 138, 138, 138, 138, 119, + 119, 119, 119, 119, 119, 119, 119, 139, 119, 119, + 146, 266, 147, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 148, 1155, 1183, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 159, 549, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 161, 141, + 812, 459, 162, 162, 162, 162, 162, 162, 187, 188, + 265, 217, 187, 140, 140, 140, 140, 140, 208, 140, + 140, 141, 208, 140, 308, 141, 344, 162, 162, 162, + 162, 162, 162, 140, 345, 416, 140, 140, 140, 140, + 208, 1183, 140, 352, 208, 140, 140, 352, 140, 140, + 140, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 161, 141, 647, 140, 169, 169, 169, 169, 169, + 169, 170, 170, 170, 170, 171, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 141, 170, + + 162, 162, 162, 162, 162, 162, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 1183, 146, 1183, + 402, 170, 170, 170, 170, 170, 170, 141, 146, 548, + 298, 170, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 344, 141, 1183, 1183, 140, 140, 140, 140, + 140, 140, 187, 188, 552, 189, 190, 140, 140, 140, + 344, 140, 140, 300, 1183, 140, 301, 301, 301, 301, + 301, 301, 301, 301, 301, 301, 1051, 151, 141, 140, + 140, 140, 146, 351, 147, 1183, 150, 150, 150, 150, + + 150, 237, 150, 150, 343, 148, 150, 1183, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 1183, 554, + 150, 150, 150, 154, 154, 154, 154, 154, 205, 154, + 154, 1183, 205, 154, 237, 157, 157, 539, 657, 157, + 157, 206, 187, 188, 403, 217, 187, 154, 154, 154, + 232, 233, 268, 234, 232, 199, 146, 399, 147, 157, + 357, 357, 357, 357, 357, 357, 141, 352, 1183, 220, + 422, 352, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 157, 141, 158, 157, 230, 752, 157, 157, + 230, 157, 157, 157, 157, 268, 1183, 157, 157, 302, + + 303, 304, 302, 302, 302, 302, 302, 302, 302, 510, + 546, 240, 157, 157, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 1111, 1183, 141, 243, 157, 240, + 229, 1183, 244, 240, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 245, 161, 240, 547, 556, 246, 246, + 246, 246, 246, 246, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 1183, 1183, 246, 246, 246, 246, 246, 246, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, + + 1183, 550, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 1183, 400, 663, 402, 240, 240, 240, 240, + 240, 240, 322, 323, 482, 483, 324, 484, 325, 326, + 446, 447, 327, 448, 328, 329, 518, 518, 518, 308, + 1183, 240, 240, 240, 240, 240, 240, 240, 545, 141, + 416, 240, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 161, 240, 812, 141, 250, 250, 250, 250, + 250, 250, 251, 251, 251, 251, 252, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 1051, + 253, 246, 246, 246, 246, 246, 246, 240, 240, 240, + + 240, 240, 240, 240, 240, 240, 240, 240, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 1183, 141, + 567, 1183, 251, 251, 251, 251, 251, 251, 141, 772, + 210, 210, 251, 344, 210, 210, 187, 188, 535, 217, + 187, 536, 193, 141, 1183, 536, 193, 240, 240, 240, + 240, 240, 240, 276, 210, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 161, 1183, 658, 537, 278, + 278, 278, 278, 278, 278, 194, 195, 322, 323, 211, + 196, 324, 141, 325, 326, 1183, 555, 327, 197, 328, + 223, 198, 268, 534, 278, 278, 278, 278, 278, 278, + + 267, 222, 538, 267, 141, 222, 577, 222, 222, 267, + 562, 578, 267, 267, 222, 267, 267, 267, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 161, 222, + 981, 267, 282, 282, 282, 282, 282, 282, 283, 283, + 283, 283, 284, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 268, 283, 278, 278, 278, + 278, 278, 278, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 1183, 1092, 308, 1183, 283, 283, + 283, 283, 283, 283, 146, 553, 298, 416, 283, 149, + + 149, 149, 149, 149, 149, 149, 149, 149, 149, 507, + 508, 141, 509, 267, 267, 267, 267, 267, 267, 187, + 188, 560, 293, 294, 267, 267, 267, 344, 267, 267, + 170, 851, 267, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 268, 611, 267, 267, 267, 157, + 141, 456, 140, 156, 140, 140, 156, 264, 140, 140, + 557, 264, 156, 353, 354, 355, 353, 353, 353, 353, + 353, 353, 353, 1183, 268, 141, 156, 156, 140, 159, + 561, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 161, 486, 641, 551, 305, 305, 305, 305, 305, + + 305, 141, 235, 235, 235, 235, 157, 569, 235, 235, + 157, 265, 235, 157, 240, 141, 141, 240, 141, 157, + 305, 305, 305, 305, 305, 305, 140, 235, 235, 140, + 1065, 268, 1183, 157, 157, 140, 591, 240, 140, 140, + 240, 140, 140, 140, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 161, 592, 643, 140, 312, 312, + 312, 312, 312, 312, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 141, 170, 305, 305, 305, 305, 305, 305, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 1183, 161, 1183, 1122, 170, 170, 170, 170, 170, 170, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 381, 381, 381, 381, 381, 381, 763, 660, 268, 140, + 140, 140, 140, 140, 140, 210, 1183, 612, 140, 209, + 140, 140, 209, 238, 140, 140, 238, 146, 209, 298, + 187, 188, 238, 217, 187, 238, 653, 543, 238, 238, + 141, 543, 209, 209, 140, 527, 527, 527, 527, 527, + 528, 170, 240, 268, 238, 843, 238, 238, 238, 238, + 238, 536, 238, 238, 544, 536, 238, 357, 357, 357, + + 357, 357, 357, 357, 357, 357, 357, 1183, 241, 238, + 238, 238, 238, 157, 268, 650, 157, 1183, 537, 157, + 157, 566, 157, 157, 157, 157, 365, 366, 157, 157, + 367, 558, 368, 369, 559, 645, 370, 847, 371, 170, + 161, 598, 240, 157, 157, 1183, 599, 377, 378, 379, + 377, 377, 377, 377, 377, 377, 377, 541, 609, 274, + 274, 610, 542, 274, 274, 268, 141, 141, 243, 157, + 244, 613, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 161, 274, 268, 568, 356, 356, 356, 356, + 356, 356, 1183, 268, 267, 267, 267, 267, 267, 240, + + 267, 267, 240, 1183, 267, 590, 649, 1183, 275, 644, + 1116, 356, 356, 356, 356, 356, 356, 240, 267, 267, + 267, 240, 358, 358, 358, 358, 358, 358, 358, 358, + 358, 358, 161, 240, 1109, 651, 358, 358, 358, 358, + 358, 358, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 661, + 253, 356, 356, 356, 356, 356, 356, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 1183, 141, + 141, 1183, 251, 251, 251, 251, 251, 251, 1183, 269, + + 269, 269, 269, 269, 648, 269, 269, 646, 403, 269, + 404, 404, 404, 404, 404, 404, 308, 240, 240, 240, + 240, 240, 240, 269, 269, 269, 271, 271, 271, 271, + 271, 662, 271, 271, 1183, 1183, 271, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 141, 308, 652, + 271, 271, 271, 274, 141, 642, 267, 273, 267, 267, + 273, 1183, 267, 267, 141, 668, 273, 381, 381, 381, + 381, 381, 381, 381, 381, 381, 381, 1183, 757, 141, + 273, 273, 267, 276, 664, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 161, 522, 308, 655, 380, + + 380, 380, 380, 380, 380, 389, 390, 1183, 524, 391, + 543, 392, 393, 1183, 543, 394, 656, 395, 1183, 1183, + 308, 654, 268, 141, 380, 380, 380, 380, 380, 380, + 267, 524, 536, 267, 669, 240, 536, 544, 240, 267, + 659, 1183, 267, 267, 981, 267, 267, 267, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 161, 537, + 758, 267, 382, 382, 382, 382, 382, 382, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 268, 283, 380, 380, 380, + 380, 380, 380, 267, 267, 267, 267, 267, 267, 267, + + 267, 267, 267, 267, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 1183, 146, 901, 298, 283, 283, + 283, 283, 283, 283, 301, 301, 301, 301, 301, 301, + 301, 301, 301, 301, 461, 1085, 462, 462, 462, 462, + 462, 462, 1084, 267, 267, 267, 267, 267, 267, 301, + 301, 301, 301, 301, 301, 301, 301, 301, 301, 403, + 712, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 461, 1080, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 713, 210, 141, 667, 614, 210, 308, + 670, 210, 240, 268, 689, 240, 1079, 210, 141, 403, + + 416, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 210, 210, 461, 268, 463, 463, 463, 463, 463, + 463, 463, 463, 463, 463, 461, 141, 464, 464, 464, + 464, 464, 465, 462, 462, 462, 462, 240, 141, 403, + 240, 406, 406, 406, 406, 406, 407, 404, 404, 404, + 404, 516, 516, 517, 518, 518, 518, 518, 518, 518, + 518, 413, 308, 274, 308, 543, 1183, 274, 240, 543, + 274, 240, 690, 524, 751, 524, 274, 693, 141, 408, + 408, 408, 408, 408, 408, 408, 408, 408, 408, 161, + 274, 274, 544, 408, 408, 408, 408, 408, 408, 511, + + 512, 513, 511, 511, 511, 511, 511, 511, 511, 634, + 634, 634, 634, 634, 635, 1078, 141, 1183, 408, 408, + 408, 408, 408, 408, 410, 411, 412, 412, 412, 412, + 412, 412, 412, 412, 413, 753, 141, 1021, 414, 414, + 414, 414, 414, 414, 421, 421, 421, 421, 421, 421, + 421, 421, 421, 421, 536, 543, 268, 141, 536, 543, + 1021, 716, 748, 414, 414, 414, 414, 414, 414, 308, + 417, 418, 419, 417, 417, 417, 417, 417, 417, 417, + 420, 537, 544, 714, 421, 421, 421, 421, 421, 421, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + + 240, 1183, 691, 240, 1183, 522, 308, 522, 308, 421, + 421, 421, 421, 421, 421, 140, 268, 524, 140, 631, + 764, 1183, 754, 1183, 140, 170, 852, 140, 140, 765, + 140, 140, 140, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 161, 771, 1069, 140, 423, 423, 423, + 423, 423, 423, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 141, 170, 408, 408, 408, 408, 408, 408, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 1183, + + 141, 1068, 857, 170, 170, 170, 170, 170, 170, 1183, + 715, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 741, 741, 741, 741, 741, 742, 170, 140, 140, + 140, 140, 140, 140, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 161, 268, 170, 928, 466, 466, + 466, 466, 466, 466, 570, 571, 572, 570, 570, 570, + 570, 570, 570, 570, 749, 755, 787, 240, 749, 755, + 240, 788, 1183, 466, 466, 466, 466, 466, 466, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 467, 766, + 308, 750, 756, 467, 467, 467, 467, 467, 467, 461, + + 1183, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 462, 800, 759, 1183, 308, 901, 801, 760, 466, 466, + 466, 466, 466, 466, 486, 631, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 487, 461, 814, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 593, 594, + 595, 593, 593, 593, 593, 593, 593, 593, 240, 141, + 694, 240, 240, 268, 486, 240, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 777, 486, 972, 487, + 487, 487, 487, 487, 487, 268, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 413, 170, 146, 268, + + 298, 848, 932, 268, 486, 170, 489, 489, 489, 489, + 489, 490, 487, 487, 487, 487, 268, 625, 626, 627, + 625, 625, 625, 625, 625, 625, 625, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 240, 1037, 141, + 240, 141, 141, 268, 267, 840, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 775, 1030, 853, 859, + 491, 491, 491, 491, 491, 491, 522, 308, 629, 629, + 629, 629, 629, 629, 141, 761, 767, 769, 524, 761, + 767, 769, 791, 1029, 776, 491, 491, 491, 491, 491, + 491, 492, 492, 492, 492, 492, 492, 492, 492, 492, + + 492, 1027, 762, 768, 770, 492, 492, 492, 492, 492, + 492, 633, 633, 633, 633, 633, 633, 633, 633, 633, + 633, 885, 614, 283, 615, 615, 615, 615, 615, 615, + 491, 491, 491, 491, 491, 491, 403, 846, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 1183, 170, + 632, 632, 632, 632, 632, 632, 632, 632, 632, 632, + 671, 141, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 170, 141, 141, 141, 403, 850, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 671, 858, + 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, + + 671, 308, 674, 674, 674, 674, 674, 675, 672, 672, + 672, 672, 631, 268, 1007, 141, 522, 308, 523, 523, + 523, 523, 523, 523, 523, 523, 523, 523, 524, 170, + 889, 926, 525, 525, 525, 525, 525, 525, 717, 718, + 719, 717, 717, 717, 717, 717, 717, 717, 671, 170, + 672, 672, 672, 672, 672, 672, 1003, 525, 525, 525, + 525, 525, 525, 308, 529, 530, 531, 529, 529, 529, + 529, 529, 529, 529, 532, 141, 283, 962, 533, 533, + 533, 533, 533, 533, 729, 931, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 842, 283, 170, 911, + + 141, 881, 170, 533, 533, 533, 533, 533, 533, 140, + 778, 749, 140, 268, 170, 749, 964, 814, 140, 283, + 845, 140, 140, 804, 140, 140, 140, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 161, 750, 723, + 140, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 141, 170, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 573, 573, 573, 573, 573, 573, 573, + 573, 573, 573, 849, 522, 308, 268, 573, 573, 573, + + 573, 573, 573, 729, 170, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 817, 817, 817, 817, 817, + 818, 965, 573, 573, 573, 573, 573, 573, 574, 574, + 574, 574, 574, 574, 574, 574, 574, 574, 887, 1183, + 308, 961, 574, 574, 574, 574, 574, 574, 729, 283, + 732, 732, 732, 732, 732, 733, 730, 730, 730, 730, + 834, 834, 834, 834, 834, 835, 805, 573, 573, 573, + 573, 573, 573, 240, 240, 588, 240, 240, 589, 240, + 240, 240, 240, 1183, 1000, 170, 955, 240, 240, 240, + 240, 240, 240, 640, 640, 640, 640, 640, 640, 640, + + 640, 640, 640, 729, 141, 730, 730, 730, 730, 730, + 730, 954, 240, 240, 240, 240, 240, 240, 486, 952, + 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, + 522, 308, 736, 736, 736, 736, 736, 736, 1010, 141, + 1011, 938, 631, 740, 740, 740, 740, 740, 740, 740, + 740, 740, 740, 283, 170, 943, 966, 268, 486, 883, + 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, + 1183, 951, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 779, 780, 781, 779, 779, 779, 779, 779, + 779, 779, 146, 1004, 298, 141, 170, 268, 614, 884, + + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 671, 283, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 671, 308, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 631, 755, 860, 141, 614, 755, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 308, 856, 761, 522, 308, 283, 761, 170, 1005, 886, + 141, 738, 756, 767, 769, 631, 749, 767, 769, 694, + 749, 695, 695, 695, 695, 695, 695, 141, 614, 762, + 617, 617, 617, 617, 617, 618, 615, 615, 615, 615, + 768, 770, 812, 750, 792, 793, 794, 792, 792, 792, + + 792, 792, 792, 792, 814, 755, 761, 283, 268, 755, + 761, 141, 888, 283, 1039, 966, 924, 141, 522, 308, + 629, 629, 629, 629, 629, 629, 629, 629, 629, 629, + 524, 268, 756, 762, 628, 628, 628, 628, 628, 628, + 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, + 940, 767, 769, 749, 141, 767, 769, 749, 939, 628, + 628, 628, 628, 628, 628, 522, 308, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 631, 768, 770, + 750, 632, 632, 632, 632, 632, 632, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 755, 761, 767, + + 141, 755, 761, 767, 522, 308, 632, 632, 632, 632, + 632, 632, 308, 636, 637, 638, 636, 636, 636, 636, + 636, 636, 636, 639, 756, 762, 768, 640, 640, 640, + 640, 640, 640, 1183, 1183, 815, 815, 815, 815, 815, + 815, 815, 815, 815, 815, 1153, 814, 522, 308, 170, + 1070, 1153, 640, 640, 640, 640, 640, 640, 694, 738, + 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, + 824, 825, 826, 824, 824, 824, 824, 824, 824, 824, + 729, 953, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 1006, 170, 251, 170, 875, 268, 694, 812, + + 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, + 729, 814, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 941, 146, 268, 298, 941, 268, 694, 933, + 697, 697, 697, 697, 697, 698, 695, 695, 695, 695, + 1183, 308, 522, 308, 829, 829, 829, 829, 829, 829, + 283, 1086, 738, 963, 738, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 769, 283, 268, 614, 769, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 1183, 942, 832, 832, 832, 832, 832, 832, 832, 832, + + 832, 832, 770, 860, 861, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 927, 1031, 1028, 141, 614, 251, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 860, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 860, 863, 863, 863, 863, 863, 864, 861, 861, + 861, 861, 1009, 1010, 268, 1011, 1009, 141, 724, 725, + 726, 724, 724, 724, 724, 724, 724, 724, 727, 1071, + 723, 1011, 728, 728, 728, 728, 728, 728, 1031, 890, + 891, 892, 893, 890, 890, 890, 890, 890, 890, 805, + 806, 806, 806, 806, 806, 806, 520, 728, 728, 728, + + 728, 728, 728, 522, 308, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 631, 141, 268, 882, 735, + 735, 735, 735, 735, 735, 1087, 1117, 141, 895, 896, + 897, 895, 895, 895, 895, 895, 895, 895, 904, 904, + 904, 904, 904, 905, 735, 735, 735, 735, 735, 735, + 522, 308, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 738, 874, 141, 268, 739, 739, 739, 739, + 739, 739, 823, 823, 823, 823, 823, 823, 823, 823, + 823, 823, 922, 922, 922, 922, 922, 923, 1136, 1144, + 1137, 739, 739, 739, 739, 739, 739, 308, 743, 744, + + 745, 743, 743, 743, 743, 743, 743, 743, 746, 1154, + 873, 1137, 747, 747, 747, 747, 747, 747, 812, 812, + 899, 899, 899, 899, 899, 899, 141, 1130, 141, 1130, + 814, 901, 522, 308, 872, 1130, 997, 747, 747, 747, + 747, 747, 747, 694, 738, 695, 695, 695, 695, 695, + 695, 695, 695, 695, 695, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 1183, 1183, 902, 902, 902, + 902, 902, 902, 902, 902, 902, 902, 1038, 901, 871, + 283, 1040, 268, 694, 283, 695, 695, 695, 695, 695, + 695, 695, 695, 695, 695, 911, 1160, 912, 912, 912, + + 912, 912, 912, 912, 912, 912, 912, 911, 308, 913, + 913, 913, 913, 913, 913, 913, 913, 913, 913, 738, + 870, 869, 268, 805, 806, 806, 806, 806, 806, 806, + 806, 806, 806, 806, 911, 268, 914, 914, 914, 914, + 914, 915, 912, 912, 912, 912, 522, 308, 839, 839, + 839, 839, 839, 839, 839, 839, 839, 839, 831, 868, + 867, 141, 805, 807, 807, 807, 807, 807, 807, 807, + 807, 807, 807, 1183, 308, 522, 308, 918, 918, 918, + 918, 918, 918, 866, 865, 831, 812, 831, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 901, 855, + + 141, 805, 808, 808, 808, 808, 808, 809, 806, 806, + 806, 806, 1183, 944, 920, 920, 920, 920, 920, 920, + 920, 920, 920, 920, 854, 308, 929, 934, 936, 812, + 929, 934, 936, 170, 844, 944, 831, 944, 945, 141, + 812, 981, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 814, 930, 935, 937, 815, 815, 815, 815, + 815, 815, 141, 946, 947, 948, 949, 946, 946, 946, + 946, 946, 946, 929, 170, 170, 170, 929, 146, 729, + 298, 815, 815, 815, 815, 815, 815, 819, 820, 821, + 819, 819, 819, 819, 819, 819, 819, 822, 723, 520, + + 930, 823, 823, 823, 823, 823, 823, 860, 861, 861, + 861, 861, 861, 861, 861, 861, 861, 861, 860, 861, + 861, 861, 861, 861, 861, 413, 823, 823, 823, 823, + 823, 823, 522, 308, 829, 829, 829, 829, 829, 829, + 829, 829, 829, 829, 738, 268, 1072, 268, 828, 828, + 828, 828, 828, 828, 860, 861, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 929, 934, 936, 268, 929, + 934, 936, 268, 828, 828, 828, 828, 828, 828, 522, + 308, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 831, 930, 935, 937, 832, 832, 832, 832, 832, + + 832, 956, 957, 958, 959, 956, 956, 956, 956, 956, + 956, 803, 929, 251, 251, 251, 929, 146, 802, 298, + 832, 832, 832, 832, 832, 832, 308, 836, 837, 838, + 836, 836, 836, 836, 836, 836, 836, 799, 268, 930, + 798, 839, 839, 839, 839, 839, 839, 308, 875, 876, + 876, 876, 876, 876, 876, 934, 1064, 1064, 831, 934, + 283, 522, 308, 1064, 1183, 812, 839, 839, 839, 839, + 839, 839, 140, 831, 936, 140, 981, 981, 936, 797, + 1012, 140, 935, 796, 140, 140, 268, 140, 140, 140, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + + 795, 937, 790, 140, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 841, 170, + 170, 170, 170, 170, 170, 170, 170, 141, 170, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 875, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 972, 789, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 934, + 936, 812, 786, 934, 936, 984, 984, 984, 984, 984, + 985, 785, 784, 1051, 268, 875, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 935, 937, 972, 783, + + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 1009, 1010, 782, 1011, 1009, 1014, 671, 283, 283, 1014, + 1015, 1016, 1017, 268, 875, 878, 878, 878, 878, 878, + 879, 876, 876, 876, 876, 972, 944, 975, 975, 975, + 975, 975, 976, 973, 973, 973, 973, 910, 910, 910, + 910, 910, 910, 910, 910, 910, 910, 774, 944, 1183, + 944, 944, 268, 267, 1001, 812, 267, 773, 1001, 1018, + 141, 1051, 267, 141, 141, 267, 267, 1051, 267, 267, + 267, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 1002, 141, 1183, 267, 283, 283, 283, 283, 283, + + 283, 283, 283, 283, 283, 283, 283, 283, 283, 880, + 283, 283, 283, 283, 283, 283, 283, 283, 268, 283, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 805, 806, 806, + 806, 806, 806, 806, 806, 806, 806, 806, 812, 723, + 979, 979, 979, 979, 979, 979, 1130, 1130, 1130, 1130, + 901, 983, 983, 983, 983, 983, 983, 983, 983, 983, + 983, 221, 221, 221, 520, 141, 805, 806, 806, 806, + 806, 806, 806, 806, 806, 806, 806, 1183, 413, 982, + 982, 982, 982, 982, 982, 982, 982, 982, 982, 991, + + 992, 993, 991, 991, 991, 991, 991, 991, 991, 1110, + 146, 413, 298, 1110, 141, 812, 711, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 814, 812, 710, + 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + 901, 221, 221, 221, 902, 902, 902, 902, 902, 902, + 911, 709, 912, 912, 912, 912, 912, 912, 912, 912, + 912, 912, 1054, 1054, 1054, 1054, 1054, 1055, 708, 902, + 902, 902, 902, 902, 902, 906, 907, 908, 906, 906, + 906, 906, 906, 906, 906, 909, 707, 706, 705, 910, + 910, 910, 910, 910, 910, 911, 704, 912, 912, 912, + + 912, 912, 912, 912, 912, 912, 912, 998, 1001, 703, + 702, 998, 1001, 701, 910, 910, 910, 910, 910, 910, + 522, 308, 918, 918, 918, 918, 918, 918, 918, 918, + 918, 918, 831, 700, 999, 1002, 917, 917, 917, 917, + 917, 917, 911, 699, 912, 912, 912, 912, 912, 912, + 522, 308, 996, 996, 996, 996, 996, 996, 688, 687, + 686, 917, 917, 917, 917, 917, 917, 522, 308, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 919, 685, + 684, 683, 682, 920, 920, 920, 920, 920, 920, 1066, + 681, 680, 1066, 1066, 998, 1001, 1066, 1107, 998, 1001, + + 972, 1107, 973, 973, 973, 973, 973, 973, 920, 920, + 920, 920, 920, 920, 140, 253, 1067, 140, 253, 1067, + 253, 999, 1002, 140, 1108, 679, 140, 140, 678, 140, + 140, 140, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 677, 140, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 925, 170, 170, 170, 170, 170, 141, + 170, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 240, 676, + 1183, 1183, 240, 251, 251, 251, 251, 251, 251, 251, + + 251, 251, 251, 450, 240, 666, 665, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 950, 251, 251, 251, 251, 251, + 1183, 253, 240, 240, 240, 240, 240, 240, 240, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 875, 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, - 795, 436, 640, 639, 875, 875, 875, 875, 875, 875, - - 1047, 1047, 1047, 1047, 1047, 1048, 970, 967, 971, 971, - 971, 971, 971, 971, 971, 971, 971, 971, 969, 875, - 875, 875, 875, 875, 875, 504, 302, 877, 877, 877, - 877, 877, 877, 877, 877, 877, 877, 1125, 599, 502, - 401, 878, 878, 878, 878, 878, 878, 970, 595, 972, - 972, 972, 972, 972, 972, 972, 972, 972, 972, 302, - 1007, 1007, 1007, 1007, 1007, 1007, 878, 878, 878, 878, - 878, 878, 137, 1125, 249, 137, 962, 249, 401, 249, - 164, 137, 962, 962, 137, 137, 962, 137, 137, 137, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - - 962, 962, 962, 137, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 883, 167, 167, 167, 138, 167, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 886, 584, 583, 924, - 886, 925, 925, 925, 925, 925, 925, 582, 236, 581, - 580, 579, 236, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 887, 236, 578, 577, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - - 574, 249, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 835, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 836, - 970, 158, 973, 973, 973, 973, 973, 974, 975, 975, - 975, 975, 970, 565, 975, 975, 975, 971, 971, 971, - 971, 971, 971, 971, 564, 563, 562, 263, 835, 836, - 836, 836, 836, 836, 836, 836, 836, 836, 836, 918, - 561, 919, 919, 919, 919, 919, 919, 951, 560, 559, - 558, 951, 991, 992, 993, 991, 991, 991, 991, 991, - 991, 991, 501, 501, 1011, 1011, 263, 262, 501, 1013, - - 262, 1011, 249, 1013, 952, 249, 262, 249, 138, 262, - 262, 555, 262, 262, 262, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 1014, 447, 262, 278, - 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 278, 914, 278, 278, 278, - 278, 278, 263, 278, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 918, 436, 919, 919, 919, 919, 919, 919, 919, - 919, 919, 919, 545, 436, 544, 988, 989, 990, 988, - 988, 988, 988, 988, 988, 988, 924, 436, 925, 925, - - 925, 925, 925, 925, 925, 925, 925, 925, 543, 1125, - 138, 918, 1125, 920, 920, 920, 920, 920, 920, 920, - 920, 920, 920, 138, 924, 401, 925, 925, 925, 925, - 925, 925, 925, 925, 925, 925, 942, 942, 942, 942, - 942, 942, 942, 942, 942, 942, 595, 595, 502, 401, - 138, 918, 595, 921, 921, 921, 921, 921, 922, 923, - 923, 923, 923, 776, 164, 996, 996, 996, 996, 996, - 996, 488, 487, 486, 485, 933, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 597, 597, 484, 483, - 138, 918, 597, 923, 923, 923, 919, 919, 919, 919, - - 919, 919, 919, 1125, 482, 999, 999, 999, 999, 999, - 999, 999, 999, 999, 999, 302, 1007, 1007, 1007, 1007, - 1007, 1007, 1007, 1007, 1007, 1007, 598, 598, 481, 480, - 138, 776, 598, 931, 931, 931, 931, 931, 931, 931, - 931, 931, 931, 859, 776, 479, 932, 932, 932, 932, - 932, 932, 932, 932, 932, 932, 933, 478, 477, 271, - 934, 934, 934, 934, 934, 934, 302, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1013, 469, 1077, - 1078, 1013, 1079, 1077, 465, 934, 934, 934, 934, 934, - 934, 938, 939, 940, 938, 938, 938, 938, 938, 938, - - 938, 941, 464, 463, 1014, 942, 942, 942, 942, 942, - 942, 302, 1009, 1009, 1009, 1009, 1009, 1010, 1007, 1007, - 1007, 1007, 1013, 690, 690, 462, 1013, 167, 461, 690, - 942, 942, 942, 942, 942, 942, 504, 302, 948, 948, - 948, 948, 948, 948, 948, 948, 948, 948, 979, 1014, - 980, 980, 980, 980, 980, 980, 980, 980, 980, 980, - 1125, 1072, 460, 1072, 1125, 1125, 1125, 1125, 963, 1072, - 278, 459, 963, 964, 965, 966, 1021, 1022, 1023, 1021, - 1021, 1021, 1021, 1021, 1021, 1021, 458, 263, 979, 457, - 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, - - 1125, 456, 691, 691, 1125, 964, 965, 966, 691, 455, - 454, 1125, 240, 444, 967, 1125, 1125, 1125, 966, 692, - 692, 441, 967, 774, 774, 692, 440, 263, 979, 774, - 982, 982, 982, 982, 982, 983, 984, 984, 984, 984, - 1019, 439, 438, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 431, 967, 1125, 430, 775, 775, 1125, - 1125, 1125, 1125, 775, 429, 967, 428, 263, 979, 427, - 984, 984, 984, 980, 980, 980, 980, 980, 980, 980, - 970, 426, 971, 971, 971, 971, 971, 971, 971, 971, - 971, 971, 423, 1125, 422, 249, 968, 1013, 249, 421, - - 249, 1013, 968, 968, 420, 419, 968, 263, 918, 969, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 968, 968, 968, 970, 1014, 971, 971, 971, 971, 971, - 971, 971, 971, 971, 971, 970, 418, 971, 971, 971, - 971, 971, 971, 852, 852, 417, 416, 138, 918, 852, - 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, - 415, 414, 413, 412, 164, 1026, 1027, 1028, 1026, 1026, - 1026, 1026, 1026, 1026, 1026, 979, 156, 980, 980, 980, - 980, 980, 980, 929, 929, 385, 384, 138, 776, 929, - 996, 996, 996, 996, 996, 996, 996, 996, 996, 996, - - 933, 776, 263, 997, 997, 997, 997, 997, 997, 997, - 997, 997, 997, 998, 263, 377, 376, 999, 999, 999, - 999, 999, 999, 1036, 375, 1037, 1037, 1037, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1091, 1091, 1091, 1091, 1091, - 1091, 374, 999, 999, 999, 999, 999, 999, 1003, 1004, - 1005, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 373, 262, - 366, 267, 1006, 1006, 1006, 1006, 1006, 1006, 1036, 265, - 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, - 1119, 1119, 1119, 1119, 1119, 1119, 263, 1006, 1006, 1006, - 1006, 1006, 1006, 979, 260, 980, 980, 980, 980, 980, - - 980, 980, 980, 980, 980, 1036, 365, 1039, 1039, 1039, - 1039, 1039, 1040, 1037, 1037, 1037, 1037, 1006, 1006, 1006, - 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1049, 994, 994, - 364, 1049, 263, 979, 994, 980, 980, 980, 980, 980, - 980, 980, 980, 980, 980, 776, 363, 1043, 1043, 1043, - 1043, 1043, 1043, 362, 1050, 355, 354, 998, 1046, 1046, - 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1041, 1041, - 353, 352, 263, 1031, 1041, 1032, 1032, 1032, 1032, 1032, - 1032, 1032, 1032, 1032, 1032, 1125, 351, 1045, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1045, 1045, 302, 1007, 1007, - - 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1125, 237, - 1049, 229, 138, 1031, 1049, 1033, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 302, 1007, 1007, 1007, 1007, - 1007, 1007, 1007, 1007, 1007, 1007, 224, 1050, 1049, 225, - 219, 1036, 1049, 1037, 1037, 1037, 1037, 1037, 1037, 219, - 184, 211, 138, 1031, 342, 1034, 1034, 1034, 1034, 1034, - 1035, 1032, 1032, 1032, 1032, 1050, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 249, 334, 167, 249, - 333, 249, 138, 776, 332, 1043, 1043, 1043, 1043, 1043, - - 1043, 1043, 1043, 1043, 1043, 998, 776, 331, 1044, 1044, - 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 330, 327, - 326, 325, 1045, 1045, 1045, 1045, 1045, 1045, 1053, 324, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 323, 1116, 1116, 1116, 1116, 1116, 1116, 1045, 1045, 1045, - 1045, 1045, 1045, 1053, 322, 1055, 1055, 1055, 1055, 1055, - 1055, 1055, 1055, 1055, 1055, 1053, 314, 1056, 1056, 1056, - 1056, 1056, 1057, 1054, 1054, 1054, 1054, 1059, 138, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 313, - 312, 1049, 311, 310, 309, 1049, 1065, 1066, 1067, 1065, - - 1065, 1065, 1065, 1065, 1065, 1065, 1031, 308, 1032, 1032, - 1032, 1032, 1032, 1032, 307, 164, 263, 1059, 1050, 1061, - 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 137, - 164, 1074, 239, 138, 152, 1074, 1071, 1071, 150, 278, - 143, 141, 1071, 138, 286, 138, 1068, 1069, 1070, 1068, - 1068, 1068, 1068, 1068, 1068, 1068, 263, 1059, 1075, 1062, - 1062, 1062, 1062, 1062, 1063, 1060, 1060, 1060, 1060, 1036, - 285, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, - 1037, 1036, 284, 1037, 1037, 1037, 1037, 1037, 1037, 1037, - 1037, 1037, 1037, 283, 1074, 282, 263, 1031, 1074, 1032, - - 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 776, - 278, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1075, 1074, 267, 263, 1053, 1074, 1054, 1054, 1054, - 1054, 1054, 1054, 260, 256, 255, 138, 1031, 254, 1032, - 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1075, - 1080, 1081, 1082, 1080, 1080, 1080, 1080, 1080, 1080, 1080, - 1053, 253, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 167, 252, 247, 1053, 138, 1054, 1054, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1083, 1084, 1085, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 225, 1059, 219, - - 1060, 1060, 1060, 1060, 1060, 1060, 211, 140, 177, 208, - 174, 1074, 200, 198, 1097, 1074, 1098, 1098, 1098, 1098, - 1098, 1098, 180, 179, 263, 1059, 176, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 263, 1075, 1091, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1092, - 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 278, - 175, 167, 164, 152, 263, 1059, 141, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1093, 1093, 1093, - 1093, 1093, 1094, 1091, 1091, 1091, 1091, 1097, 140, 1098, - 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 138, - - 1125, 1125, 1125, 1125, 263, 1086, 1125, 1087, 1087, 1087, - 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1097, 1125, 1099, - 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1097, - 1125, 1100, 1100, 1100, 1100, 1100, 1101, 1098, 1098, 1098, - 1098, 1125, 1125, 1125, 138, 1086, 1125, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1125, 1125, 1125, - 1107, 1108, 1109, 1107, 1107, 1107, 1107, 1107, 1107, 1107, - 1086, 1125, 1087, 1087, 1087, 1087, 1087, 1087, 1125, 1125, - 1125, 1125, 1125, 1125, 138, 1086, 1125, 1089, 1089, 1089, - 1089, 1089, 1090, 1087, 1087, 1087, 1087, 138, 1091, 1091, - - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1125, 138, - 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1125, 1125, 1125, 1125, 138, 1102, 1125, 1103, 1103, 1103, - 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1110, 1111, 1112, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1097, 1125, 1098, - 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1125, - 1125, 1125, 1125, 1125, 263, 1102, 1125, 1104, 1104, 1104, - 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1097, 1125, 1098, - 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1113, - 1114, 1115, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1125, - - 1125, 1125, 1125, 1125, 263, 1102, 1125, 1105, 1105, 1105, - 1105, 1105, 1106, 1103, 1103, 1103, 1103, 1125, 1102, 1125, - 1103, 1103, 1103, 1103, 1103, 1103, 263, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1125, 1122, 1122, - 1122, 1122, 1122, 1122, 263, 1086, 1125, 1087, 1087, 1087, - 1087, 1087, 1087, 1087, 1087, 1087, 1087, 263, 1125, 1125, - 1125, 1125, 1125, 1125, 138, 1107, 1107, 1107, 1107, 1107, - 1107, 1107, 1107, 1107, 1107, 263, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 138, 1086, 1125, 1087, 1087, 1087, - 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1125, 1125, 1125, - - 1125, 1125, 138, 1117, 1117, 1117, 1117, 1117, 1118, 1116, - 1116, 1116, 1116, 1119, 1119, 1119, 1119, 1119, 1119, 1119, - 1119, 1119, 1119, 1125, 138, 1102, 1125, 1103, 1103, 1103, - 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1125, 1125, 1125, - 138, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1120, 1120, 1120, 1120, 1120, 1121, 1119, 1119, 1119, - 1119, 1125, 1125, 1125, 263, 1102, 1125, 1103, 1103, 1103, - 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1113, 1113, 1113, - 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1125, 1125, 1125, - - 1125, 1125, 1125, 1125, 263, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 263, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 263, 1123, 1123, 1123, 1123, 1123, - 1124, 1122, 1122, 1122, 1122, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 1116, 1116, 1116, 1119, 1119, 1119, 1119, 1119, - 1119, 1119, 1119, 1119, 1119, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 263, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 138, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 263, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 1014, 623, 520, 413, 1014, 1015, 1016, 1017, 1021, 619, + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + 1103, 1103, 1103, 1103, 1103, 1104, 413, 268, 875, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 1021, + + 167, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 608, 607, 1021, 1020, 1024, 1024, 1024, 1024, 1024, + 1025, 1026, 1026, 1026, 1026, 606, 268, 267, 1183, 253, + 267, 1013, 253, 605, 253, 604, 267, 1013, 1013, 267, + 267, 1013, 267, 267, 267, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 1013, 1013, 1013, 267, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 960, 283, 283, 283, + 283, 283, 268, 283, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + + 267, 966, 603, 967, 967, 967, 967, 967, 967, 967, + 967, 967, 967, 1021, 602, 1026, 1026, 1026, 1022, 1022, + 1022, 1022, 1022, 1022, 1022, 601, 998, 998, 1001, 600, + 998, 998, 1001, 308, 1060, 1060, 1060, 1060, 1060, 1060, + 141, 966, 597, 968, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 999, 999, 1002, 1041, 1042, 1043, 1041, + 1041, 1041, 1041, 1041, 1041, 1041, 966, 596, 967, 967, + 967, 967, 967, 967, 251, 283, 283, 161, 587, 586, + 141, 966, 585, 969, 969, 969, 969, 969, 970, 971, + 971, 971, 971, 141, 1044, 1045, 1046, 1044, 1044, 1044, + + 1044, 1044, 1044, 1044, 972, 141, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 973, 166, 166, 584, 583, + 141, 966, 166, 971, 971, 971, 967, 967, 967, 967, + 967, 967, 967, 972, 582, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 990, 990, 990, 990, 990, + 990, 990, 990, 990, 990, 1135, 1136, 581, 1137, 1135, + 141, 812, 580, 979, 979, 979, 979, 979, 979, 979, + 979, 979, 979, 901, 812, 579, 980, 980, 980, 980, + 980, 980, 980, 980, 980, 980, 981, 576, 575, 461, + 982, 982, 982, 982, 982, 982, 812, 450, 1049, 1049, + + 1049, 1049, 1049, 1049, 565, 1066, 1105, 1107, 981, 1066, + 1105, 1107, 450, 564, 450, 982, 982, 982, 982, 982, + 982, 986, 987, 988, 986, 986, 986, 986, 986, 986, + 986, 989, 1067, 1106, 1108, 990, 990, 990, 990, 990, + 990, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, + 1053, 563, 1021, 170, 1022, 1022, 1022, 1022, 1022, 1022, + 990, 990, 990, 990, 990, 990, 522, 308, 996, 996, + 996, 996, 996, 996, 996, 996, 996, 996, 1031, 1183, + 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, + 1183, 1183, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, + + 1052, 1052, 308, 1060, 1060, 1060, 1060, 1060, 1060, 1060, + 1060, 1060, 1060, 166, 166, 413, 520, 268, 1031, 166, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 308, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 308, 1062, 1062, 1062, 1062, 1062, 1063, 1060, 1060, + 1060, 1060, 1132, 307, 307, 413, 1132, 268, 1031, 307, + 1034, 1034, 1034, 1034, 1034, 1035, 1036, 1036, 1036, 1036, + 1183, 167, 506, 505, 1183, 1183, 1183, 1183, 1014, 1133, + 504, 503, 1014, 1015, 1016, 1017, 1075, 1076, 1077, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 502, 268, 1031, 501, + + 1036, 1036, 1036, 1032, 1032, 1032, 1032, 1032, 1032, 1032, + 1183, 500, 409, 409, 1183, 1015, 1016, 1017, 409, 1135, + 1136, 1183, 1137, 1135, 1018, 1183, 1183, 1183, 1017, 514, + 514, 499, 1018, 515, 515, 514, 498, 268, 966, 515, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 1073, 497, 496, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 495, 1018, 1183, 494, 519, 519, 1183, + 1183, 1183, 1183, 519, 493, 1018, 276, 141, 966, 485, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 1021, 481, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + + 1022, 1022, 1021, 480, 1022, 1022, 1022, 1022, 1022, 1022, + 1022, 1022, 1022, 1022, 479, 478, 477, 141, 812, 1020, + 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, + 981, 812, 476, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1051, 475, 474, 473, 1052, 1052, 1052, + 1052, 1052, 1052, 1081, 1082, 1083, 1081, 1081, 1081, 1081, + 1081, 1081, 1081, 1031, 472, 1032, 1032, 1032, 1032, 1032, + 1032, 471, 1052, 1052, 1052, 1052, 1052, 1052, 1056, 1057, + 1058, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 470, 469, + 268, 468, 1059, 1059, 1059, 1059, 1059, 1059, 1183, 619, + + 619, 1019, 268, 621, 621, 619, 244, 1019, 1019, 621, + 253, 1019, 458, 253, 455, 253, 454, 1059, 1059, 1059, + 1059, 1059, 1059, 622, 622, 1019, 1019, 1019, 1031, 622, + 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, + 453, 452, 1066, 445, 444, 1092, 1066, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1059, 1059, 1059, + 1059, 1059, 1059, 1059, 1059, 1059, 1059, 268, 1031, 1067, + 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, + 1092, 443, 1093, 1093, 1093, 1093, 1093, 1093, 442, 1092, + 283, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, + + 1094, 1149, 1149, 1149, 1149, 1149, 1149, 268, 1087, 441, + 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, + 1092, 440, 1095, 1095, 1095, 1095, 1095, 1096, 1093, 1093, + 1093, 1093, 812, 437, 1099, 1099, 1099, 1099, 1099, 1099, + 720, 720, 436, 435, 1051, 434, 720, 141, 1087, 433, + 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, + 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, + 1183, 432, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, + 1101, 1101, 431, 721, 721, 430, 429, 141, 1087, 721, + 1090, 1090, 1090, 1090, 1090, 1091, 1088, 1088, 1088, 1088, + + 308, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, + 1060, 308, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, + 1060, 1060, 428, 722, 722, 427, 426, 141, 812, 722, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1051, 812, 425, 1100, 1100, 1100, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 424, 167, 159, 397, 1101, 1101, 1101, + 1101, 1101, 1101, 1105, 1107, 396, 388, 1105, 1107, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 387, + 386, 385, 1101, 1101, 1101, 1101, 1101, 1101, 384, 383, + 1106, 1108, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + + 1074, 1074, 1111, 267, 1112, 1112, 1112, 1112, 1112, 1112, + 376, 170, 170, 1111, 272, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1111, 270, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1111, 268, 1114, + 1114, 1114, 1114, 1114, 1115, 1112, 1112, 1112, 1112, 1105, + 265, 1105, 375, 1105, 1087, 1105, 1088, 1088, 1088, 1088, + 1088, 1088, 1107, 1132, 1132, 1132, 1107, 1132, 1132, 1132, + 1177, 1177, 1177, 1177, 1177, 1177, 1106, 374, 1106, 1123, + 1124, 1125, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1108, + 1133, 1133, 1133, 141, 373, 372, 364, 251, 1117, 283, + + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, + 283, 170, 283, 363, 362, 361, 141, 1126, 1127, 1128, + 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1138, 1139, 1140, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 268, 1117, 360, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1092, 359, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1092, 1183, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 241, 233, 228, 268, 1117, 229, + 1120, 1120, 1120, 1120, 1120, 1121, 1118, 1118, 1118, 1118, + 812, 223, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, + + 1131, 1131, 1111, 223, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 188, 215, 350, 268, 1087, 342, + 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, + 1111, 341, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, + 1112, 1112, 1141, 1142, 1143, 1141, 1141, 1141, 1141, 1141, + 1141, 1141, 340, 810, 810, 339, 338, 141, 1087, 810, + 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, + 335, 1117, 334, 1118, 1118, 1118, 1118, 1118, 1118, 268, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 811, 811, 333, 894, 894, 332, 811, 141, 1117, 894, + + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, + 268, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1150, 1151, 1151, 1151, 1151, 1151, 1152, 1149, 1149, 1149, + 1149, 253, 331, 330, 253, 321, 253, 268, 1117, 320, + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, + 1155, 319, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1155, 318, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1157, 1157, 317, 316, 315, 268, 1144, 314, + 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, + 1155, 313, 1158, 1158, 1158, 1158, 1158, 1159, 1156, 1156, + + 1156, 1156, 1165, 1166, 1167, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 167, 977, 977, 140, 167, 141, 1144, 977, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 243, 1144, 155, 1145, 1145, 1145, 1145, 1145, 1145, 141, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1047, 1047, 153, 1097, 1097, 146, 1047, 141, 1144, 1097, + 1147, 1147, 1147, 1147, 1147, 1148, 1145, 1145, 1145, 1145, + 141, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1149, 1168, 1169, 1170, 1168, 1168, 1168, 1168, 1168, 1168, + 1168, 144, 141, 1129, 1129, 292, 291, 141, 1160, 1129, + + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1155, 290, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1155, 289, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 288, 287, 283, 268, 1160, 272, + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1155, 268, 1156, 1156, 1156, 1156, 1156, 1156, 1171, 1172, + 1173, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1160, 265, + 1161, 1161, 1161, 1161, 1161, 1161, 261, 268, 1160, 260, + 1163, 1163, 1163, 1163, 1163, 1164, 1161, 1161, 1161, 1161, + 259, 258, 257, 256, 251, 268, 1174, 1174, 1174, 1174, + + 1174, 1174, 1174, 1174, 1174, 1174, 229, 268, 223, 215, + 143, 181, 212, 178, 204, 202, 184, 268, 1144, 183, + 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, + 180, 179, 176, 141, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1175, 1175, 1175, 1175, 1175, 1176, + 1174, 1174, 1174, 1174, 170, 167, 155, 141, 1144, 144, + 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, + 143, 141, 141, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 141, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1183, 1183, 1183, 1183, 1183, 141, 1160, 1183, + + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, + 1178, 1178, 1178, 1178, 1178, 1179, 1177, 1177, 1177, 1177, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 268, 1160, 1183, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 268, 1183, 1183, + 1183, 1174, 1174, 1174, 1174, 1174, 1174, 268, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 268, 1181, 1181, + + 1181, 1181, 1181, 1182, 1180, 1180, 1180, 1180, 1174, 1174, + 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 141, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1180, + 1180, 1180, 1180, 1180, 1180, 268, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 141, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 1180, 1180, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 268, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 268, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + + 72, 72, 72, 72, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 113, 113, 113, 113, 113, 113, 113, 113, 113, - - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 137, 1125, 1125, 137, 1125, 1125, 1125, 1125, 137, - 1125, 137, 137, 137, 1125, 1125, 137, 137, 137, 137, - 137, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 147, 1125, 1125, 147, 1125, 1125, 147, 1125, 147, - 1125, 147, 147, 147, 147, 1125, 147, 147, 147, 147, - 147, 151, 1125, 1125, 151, 1125, 1125, 1125, 1125, 151, - 1125, 151, 151, 151, 1125, 1125, 151, 151, 151, 151, - 151, 153, 1125, 1125, 153, 153, 153, 1125, 153, 153, - - 1125, 153, 153, 153, 1125, 1125, 153, 153, 153, 153, - 153, 205, 1125, 1125, 205, 205, 205, 1125, 205, 205, - 1125, 205, 205, 205, 1125, 1125, 205, 205, 205, 205, - 205, 210, 1125, 1125, 210, 210, 210, 1125, 210, 210, - 1125, 210, 210, 210, 1125, 210, 210, 1125, 210, 210, - 210, 218, 1125, 1125, 218, 218, 1125, 1125, 218, 218, - 1125, 218, 218, 218, 218, 1125, 218, 218, 218, 218, - 218, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 224, 224, 1125, 224, 224, 1125, 224, 224, 224, - - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 231, 1125, 1125, 231, 1125, 1125, 231, 1125, 231, - 1125, 231, 231, 231, 231, 1125, 231, 231, 231, 231, - 231, 235, 1125, 1125, 235, 1125, 1125, 1125, 1125, 235, - 1125, 235, 235, 235, 1125, 235, 235, 235, 235, 235, - 235, 238, 1125, 1125, 238, 238, 238, 1125, 238, 238, - 1125, 238, 238, 238, 1125, 238, 238, 238, 238, 238, - 238, 259, 1125, 1125, 1125, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 262, 1125, 1125, 262, 1125, 1125, 1125, 1125, 262, - - 1125, 262, 262, 262, 1125, 1125, 262, 262, 262, 262, - 262, 264, 1125, 1125, 264, 1125, 1125, 264, 1125, 264, - 1125, 264, 264, 264, 264, 1125, 264, 264, 264, 264, - 264, 266, 1125, 1125, 266, 1125, 1125, 1125, 1125, 266, - 1125, 266, 266, 266, 1125, 1125, 266, 266, 266, 266, - 266, 268, 1125, 1125, 268, 268, 268, 1125, 268, 268, - 1125, 268, 268, 268, 1125, 1125, 268, 268, 268, 268, - 268, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 293, 293, 1125, 293, 293, 293, 293, 293, 293, - - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 147, 1125, 1125, 147, 1125, 1125, 1125, 1125, 147, - 1125, 147, 147, 147, 1125, 1125, 147, 147, 147, 147, - 147, 151, 1125, 1125, 151, 1125, 1125, 1125, 1125, 151, - 1125, 151, 151, 151, 1125, 1125, 151, 151, 151, 151, - 151, 153, 1125, 1125, 153, 153, 153, 1125, 153, 153, - 1125, 153, 153, 153, 1125, 1125, 153, 153, 153, 153, - 153, 154, 1125, 1125, 154, 154, 154, 1125, 154, 154, - 1125, 154, 154, 154, 1125, 1125, 154, 154, 154, 154, - 154, 303, 303, 303, 1125, 1125, 1125, 1125, 303, 205, - - 1125, 1125, 205, 205, 205, 1125, 205, 205, 1125, 205, - 205, 205, 1125, 1125, 205, 205, 205, 205, 205, 206, - 1125, 1125, 206, 206, 206, 1125, 206, 206, 1125, 206, - 206, 206, 1125, 1125, 206, 206, 206, 206, 206, 210, - 1125, 1125, 210, 210, 210, 1125, 210, 210, 1125, 210, - 210, 210, 1125, 210, 210, 1125, 210, 210, 210, 218, - 1125, 1125, 218, 218, 1125, 1125, 218, 218, 1125, 218, - 218, 218, 218, 1125, 218, 218, 218, 218, 218, 224, - 224, 1125, 224, 224, 1125, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 234, - - 1125, 1125, 234, 1125, 1125, 1125, 1125, 234, 1125, 234, - 234, 234, 1125, 1125, 234, 234, 234, 234, 234, 235, - 1125, 1125, 235, 1125, 1125, 1125, 1125, 235, 1125, 235, - 235, 235, 1125, 235, 235, 235, 235, 235, 235, 236, - 1125, 1125, 236, 236, 1125, 236, 236, 1125, 1125, 236, - 236, 238, 1125, 1125, 238, 238, 238, 1125, 238, 238, - 1125, 238, 238, 238, 1125, 238, 238, 238, 238, 238, - 238, 259, 1125, 1125, 1125, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 262, 1125, 1125, 262, 1125, 1125, 1125, 1125, 262, - - 1125, 262, 262, 262, 1125, 1125, 262, 262, 262, 262, - 262, 264, 1125, 1125, 264, 1125, 1125, 1125, 1125, 264, - 1125, 264, 264, 264, 1125, 1125, 264, 264, 264, 264, - 264, 266, 1125, 1125, 266, 1125, 1125, 1125, 1125, 266, - 1125, 266, 266, 266, 1125, 1125, 266, 266, 266, 266, - 266, 268, 1125, 1125, 268, 268, 268, 1125, 268, 268, - 1125, 268, 268, 268, 1125, 1125, 268, 268, 268, 268, - 268, 269, 1125, 1125, 269, 269, 269, 1125, 269, 269, - 1125, 269, 269, 269, 1125, 1125, 269, 269, 269, 269, - 269, 291, 291, 291, 291, 291, 291, 291, 291, 291, - - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 403, 403, 403, 1125, 1125, 1125, 1125, 403, 503, - 503, 503, 1125, 1125, 1125, 1125, 503, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 600, 600, 600, - 1125, 1125, 1125, 1125, 600, 604, 604, 604, 604, 1125, - 1125, 1125, 1125, 604, 704, 704, 704, 1125, 1125, 1125, - 1125, 704, 705, 705, 705, 705, 1125, 1125, 1125, 1125, - - 705, 791, 791, 791, 1125, 1125, 1125, 1125, 791, 792, - 792, 792, 792, 1125, 1125, 1125, 1125, 792, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 236, 1125, - 1125, 236, 236, 1125, 236, 236, 1125, 1125, 236, 236, - 856, 1125, 856, 856, 1125, 1125, 1125, 1125, 856, 874, - 874, 874, 1125, 1125, 1125, 1125, 874, 875, 875, 875, - 875, 1125, 1125, 1125, 1125, 875, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 236, 1125, 1125, 236, - - 236, 1125, 236, 236, 1125, 1125, 236, 236, 262, 1125, - 1125, 262, 1125, 1125, 1125, 1125, 262, 1125, 262, 262, - 262, 1125, 1125, 262, 262, 262, 262, 262, 930, 1125, - 930, 930, 1125, 1125, 1125, 1125, 930, 946, 946, 946, - 1125, 1125, 1125, 1125, 946, 947, 947, 947, 1125, 1125, - 1125, 1125, 1125, 947, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 962, 962, 1125, 962, 962, 962, - 962, 1125, 962, 1125, 962, 962, 962, 1125, 1125, 962, - 962, 962, 962, 962, 968, 968, 1125, 968, 968, 968, - - 968, 1125, 968, 1125, 968, 968, 968, 1125, 1125, 968, - 968, 968, 968, 968, 995, 1125, 995, 995, 1125, 1125, - 1125, 1125, 995, 1042, 1125, 1042, 1042, 1125, 1125, 1125, - 1125, 1042, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, - 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, - 1076, 1076, 19, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 38, 38, 38, 38, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 140, 1183, 1183, 140, 1183, 1183, + 1183, 1183, 140, 1183, 140, 140, 140, 1183, 1183, 140, + + 140, 140, 140, 140, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, + 145, 145, 145, 145, 150, 1183, 1183, 150, 1183, 1183, + 150, 1183, 150, 1183, 150, 150, 150, 150, 1183, 150, + 150, 150, 150, 150, 154, 1183, 1183, 154, 1183, 1183, + 1183, 1183, 154, 1183, 154, 154, 154, 1183, 1183, 154, + 154, 154, 154, 154, 156, 1183, 1183, 156, 156, 156, + 1183, 156, 156, 1183, 156, 156, 156, 1183, 1183, 156, + 156, 156, 156, 156, 209, 1183, 1183, 209, 209, 209, + 1183, 209, 209, 1183, 209, 209, 209, 1183, 1183, 209, + + 209, 209, 209, 209, 214, 1183, 1183, 214, 214, 214, + 1183, 214, 214, 1183, 214, 214, 214, 1183, 214, 214, + 1183, 214, 214, 214, 222, 1183, 1183, 222, 222, 1183, + 1183, 222, 222, 1183, 222, 222, 222, 222, 1183, 222, + 222, 222, 222, 222, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 228, 228, 1183, 228, 228, 1183, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 235, 1183, 1183, 235, 1183, 1183, + 235, 1183, 235, 1183, 235, 235, 235, 235, 1183, 235, + + 235, 235, 235, 235, 239, 1183, 1183, 239, 1183, 1183, + 1183, 1183, 239, 1183, 239, 239, 239, 1183, 239, 239, + 239, 239, 239, 239, 242, 1183, 1183, 242, 242, 242, + 1183, 242, 242, 1183, 242, 242, 242, 1183, 242, 242, + 242, 242, 242, 242, 264, 1183, 1183, 1183, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 267, 1183, 1183, 267, 1183, 1183, + 1183, 1183, 267, 1183, 267, 267, 267, 1183, 1183, 267, + 267, 267, 267, 267, 269, 1183, 1183, 269, 1183, 1183, + 269, 1183, 269, 1183, 269, 269, 269, 269, 1183, 269, + + 269, 269, 269, 269, 271, 1183, 1183, 271, 1183, 1183, + 1183, 1183, 271, 1183, 271, 271, 271, 1183, 1183, 271, + 271, 271, 271, 271, 273, 1183, 1183, 273, 273, 273, + 1183, 273, 273, 1183, 273, 273, 273, 1183, 1183, 273, + 273, 273, 273, 273, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 299, 299, 1183, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 150, 1183, 1183, 150, 1183, 1183, + 1183, 1183, 150, 1183, 150, 150, 150, 1183, 1183, 150, + + 150, 150, 150, 150, 154, 1183, 1183, 154, 1183, 1183, + 1183, 1183, 154, 1183, 154, 154, 154, 1183, 1183, 154, + 154, 154, 154, 154, 156, 1183, 1183, 156, 156, 156, + 1183, 156, 156, 1183, 156, 156, 156, 1183, 1183, 156, + 156, 156, 156, 156, 157, 1183, 1183, 157, 157, 157, + 1183, 157, 157, 1183, 157, 157, 157, 1183, 1183, 157, + 157, 157, 157, 157, 309, 309, 309, 1183, 1183, 1183, + 1183, 309, 209, 1183, 1183, 209, 209, 209, 1183, 209, + 209, 1183, 209, 209, 209, 1183, 1183, 209, 209, 209, + 209, 209, 210, 1183, 1183, 210, 210, 210, 1183, 210, + + 210, 1183, 210, 210, 210, 1183, 1183, 210, 210, 210, + 210, 210, 214, 1183, 1183, 214, 214, 214, 1183, 214, + 214, 1183, 214, 214, 214, 1183, 214, 214, 1183, 214, + 214, 214, 222, 1183, 1183, 222, 222, 1183, 1183, 222, + 222, 1183, 222, 222, 222, 222, 1183, 222, 222, 222, + 222, 222, 228, 228, 1183, 228, 228, 1183, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 238, 1183, 1183, 238, 1183, 1183, 1183, 1183, + 238, 1183, 238, 238, 238, 1183, 1183, 238, 238, 238, + 238, 238, 239, 1183, 1183, 239, 1183, 1183, 1183, 1183, + + 239, 1183, 239, 239, 239, 1183, 239, 239, 239, 239, + 239, 239, 240, 1183, 1183, 240, 240, 1183, 240, 240, + 1183, 1183, 240, 240, 242, 1183, 1183, 242, 242, 242, + 1183, 242, 242, 1183, 242, 242, 242, 1183, 242, 242, + 242, 242, 242, 242, 264, 1183, 1183, 1183, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 267, 1183, 1183, 267, 1183, 1183, + 1183, 1183, 267, 1183, 267, 267, 267, 1183, 1183, 267, + 267, 267, 267, 267, 269, 1183, 1183, 269, 1183, 1183, + 1183, 1183, 269, 1183, 269, 269, 269, 1183, 1183, 269, + + 269, 269, 269, 269, 271, 1183, 1183, 271, 1183, 1183, + 1183, 1183, 271, 1183, 271, 271, 271, 1183, 1183, 271, + 271, 271, 271, 271, 273, 1183, 1183, 273, 273, 273, + 1183, 273, 273, 1183, 273, 273, 273, 1183, 1183, 273, + 273, 273, 273, 273, 274, 1183, 1183, 274, 274, 274, + 1183, 274, 274, 1183, 274, 274, 274, 1183, 1183, 274, + 274, 274, 274, 274, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 401, 401, 401, 401, 401, 401, + 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, + + 401, 401, 401, 401, 415, 415, 415, 1183, 1183, 1183, + 1183, 415, 521, 521, 521, 1183, 1183, 1183, 1183, 521, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 624, 624, 624, 1183, 1183, 1183, 1183, 624, 628, 628, + 628, 628, 1183, 1183, 1183, 1183, 628, 734, 734, 734, + 1183, 1183, 1183, 1183, 734, 735, 735, 735, 735, 1183, + 1183, 1183, 1183, 735, 827, 827, 827, 1183, 1183, 1183, + 1183, 827, 828, 828, 828, 828, 1183, 1183, 1183, 1183, + 828, 297, 297, 297, 297, 297, 297, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 240, 1183, 1183, 240, 240, 1183, 240, 240, 1183, + 1183, 240, 240, 898, 1183, 898, 898, 1183, 1183, 1183, + 1183, 898, 916, 916, 916, 1183, 1183, 1183, 1183, 916, + 917, 917, 917, 917, 1183, 1183, 1183, 1183, 917, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 240, + 1183, 1183, 240, 240, 1183, 240, 240, 1183, 1183, 240, + 240, 267, 1183, 1183, 267, 1183, 1183, 1183, 1183, 267, + 1183, 267, 267, 267, 1183, 1183, 267, 267, 267, 267, + + 267, 978, 1183, 978, 978, 1183, 1183, 1183, 1183, 978, + 994, 994, 994, 1183, 1183, 1183, 1183, 994, 995, 995, + 995, 1183, 1183, 1183, 1183, 1183, 995, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1013, 1013, 1183, + 1013, 1013, 1013, 1013, 1183, 1013, 1183, 1013, 1013, 1013, + 1183, 1183, 1013, 1013, 1013, 1013, 1013, 1019, 1019, 1183, + 1019, 1019, 1019, 1019, 1183, 1019, 1183, 1019, 1019, 1019, + 1183, 1183, 1019, 1019, 1019, 1019, 1019, 1048, 1183, 1048, + 1048, 1183, 1183, 1183, 1183, 1048, 1098, 1183, 1098, 1098, + + 1183, 1183, 1183, 1183, 1098, 1134, 1134, 1134, 1134, 1134, + 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, + 1134, 1134, 1134, 1134, 1134, 19, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183 - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125 } ; -static yyconst flex_int16_t yy_chk[8328] = +static yyconst flex_int16_t yy_chk[8301] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1781,57 +1796,57 @@ static yyconst flex_int16_t yy_chk[8328] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 21, 49, 43, 2, 21, + 1, 1, 1, 1, 2, 21, 50, 43, 2, 21, 27, 2, 5, 5, 39, 5, 5, 5, 43, 5, - 52, 49, 46, 42, 39, 5, 42, 46, 6, 6, + 53, 50, 47, 42, 39, 5, 42, 47, 6, 6, - 27, 6, 6, 6, 52, 6, 42, 2, 2, 5, + 27, 6, 6, 6, 53, 6, 42, 2, 2, 5, 5, 6, 2, 35, 35, 35, 35, 35, 35, 44, - 2, 61, 44, 2, 3, 6, 6, 27, 3, 11, + 2, 62, 44, 2, 3, 6, 6, 27, 3, 11, 11, 3, 11, 11, 11, 11, 5, 3, 12, 12, - 3, 12, 12, 12, 12, 83, 65, 59, 103, 61, - 65, 103, 6, 127, 3, 165, 127, 3, 15, 15, - 15, 15, 15, 15, 15, 3, 59, 3, 165, 3, - 3, 83, 3, 16, 16, 16, 16, 16, 16, 16, - 32, 32, 55, 11, 32, 32, 185, 70, 90, 1122, - 102, 55, 12, 63, 3, 4, 70, 63, 85, 4, - - 55, 102, 4, 89, 32, 70, 63, 89, 4, 329, - 197, 4, 15, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 329, 85, 4, 56, 16, 4, 32, - 56, 79, 79, 114, 79, 79, 4, 90, 4, 185, - 4, 4, 54, 4, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 93, 58, 197, 89, 58, 56, - 56, 142, 198, 142, 56, 4, 7, 7, 58, 7, - 7, 7, 56, 7, 93, 56, 87, 87, 198, 87, - 87, 64, 114, 58, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 92, 92, 569, 92, 92, 569, - - 92, 93, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 98, 98, 98, 98, 98, 98, 321, 321, + 3, 12, 12, 12, 12, 84, 66, 60, 104, 62, + 66, 104, 6, 129, 3, 168, 129, 3, 15, 15, + 15, 15, 15, 15, 15, 3, 60, 3, 168, 3, + 3, 84, 3, 16, 16, 16, 16, 16, 16, 16, + 32, 32, 56, 11, 32, 32, 189, 71, 91, 1180, + 103, 56, 12, 64, 3, 4, 71, 64, 86, 4, + + 56, 103, 4, 90, 32, 71, 64, 90, 4, 337, + 201, 4, 15, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 337, 86, 4, 57, 16, 4, 32, + 57, 80, 80, 116, 80, 80, 4, 91, 4, 189, + 4, 4, 55, 4, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 94, 59, 201, 90, 59, 57, + 57, 145, 202, 145, 57, 4, 7, 7, 59, 7, + 7, 7, 57, 7, 94, 57, 88, 88, 202, 88, + 88, 65, 116, 59, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 93, 93, 591, 93, 93, 591, + + 93, 94, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 99, 99, 99, 99, 99, 99, 329, 329, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, - 8, 118, 8, 8, 8, 110, 8, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 126, 112, 139, - 164, 118, 187, 139, 187, 66, 66, 112, 126, 66, - 66, 164, 227, 116, 116, 1116, 116, 116, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 118, 66, - 336, 336, 287, 8, 8, 8, 8, 8, 8, 8, + 8, 120, 8, 8, 8, 112, 8, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 128, 114, 142, + 167, 120, 191, 142, 191, 67, 67, 114, 128, 67, + 67, 167, 231, 118, 118, 1174, 118, 118, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 120, 67, + 344, 344, 293, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 9, 9, 66, 9, 9, 9, 9, 9, - 289, 227, 289, 199, 9, 9, 9, 116, 77, 77, - 330, 77, 77, 77, 94, 77, 199, 94, 330, 77, - 9, 77, 136, 94, 149, 287, 94, 188, 343, 94, - 94, 136, 188, 120, 120, 77, 77, 120, 120, 291, - 136, 291, 343, 94, 149, 94, 9, 10, 10, 200, - 10, 10, 10, 10, 10, 200, 292, 120, 292, 10, - 10, 10, 77, 123, 123, 123, 123, 123, 123, 94, - 94, 149, 396, 183, 183, 10, 183, 183, 293, 415, - - 293, 135, 120, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 162, 162, 162, 162, 162, 162, 396, - 415, 10, 13, 13, 13, 13, 13, 13, 13, 13, + 8, 8, 9, 9, 67, 9, 9, 9, 9, 9, + 295, 231, 295, 203, 9, 9, 9, 118, 78, 78, + 338, 78, 78, 78, 95, 78, 203, 95, 338, 78, + 9, 78, 139, 95, 152, 293, 95, 192, 351, 95, + 95, 139, 192, 122, 122, 78, 78, 122, 122, 297, + 139, 297, 351, 95, 152, 95, 9, 10, 10, 204, + 10, 10, 10, 10, 10, 204, 298, 122, 298, 10, + 10, 10, 78, 125, 125, 125, 125, 125, 125, 95, + 95, 152, 408, 187, 187, 10, 187, 187, 299, 428, + + 299, 138, 122, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 165, 165, 165, 165, 165, 165, 408, + 428, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, @@ -1847,849 +1862,846 @@ static yyconst flex_int16_t yy_chk[8328] = 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 26, 261, 26, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 26, 1098, 421, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 33, 421, 33, 33, - - 33, 33, 33, 33, 33, 33, 33, 33, 33, 340, - 1073, 340, 33, 33, 33, 33, 33, 33, 186, 186, - 261, 186, 186, 138, 138, 138, 138, 138, 202, 138, - 138, 196, 202, 138, 303, 33, 196, 33, 33, 33, - 33, 33, 33, 40, 196, 303, 40, 138, 138, 138, - 204, 523, 40, 229, 204, 40, 40, 229, 40, 40, + 26, 266, 26, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 26, 1156, 435, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 33, 435, 33, 33, + + 33, 33, 33, 33, 33, 33, 33, 33, 33, 348, + 1131, 348, 33, 33, 33, 33, 33, 33, 190, 190, + 266, 190, 190, 141, 141, 141, 141, 141, 206, 141, + 141, 200, 206, 141, 309, 33, 200, 33, 33, 33, + 33, 33, 33, 40, 200, 309, 40, 141, 141, 141, + 208, 542, 40, 233, 208, 40, 40, 233, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 186, 523, 40, 40, 40, 40, 40, 40, + 40, 40, 190, 542, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 389, 420, - 389, 45, 45, 45, 45, 45, 45, 341, 195, 420, - 195, 45, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 341, 339, 231, 424, 45, 45, 45, 45, - 45, 45, 53, 53, 424, 53, 53, 53, 53, 53, - 339, 53, 53, 148, 231, 53, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 1071, 232, 209, 53, - 53, 53, 57, 209, 57, 426, 150, 150, 150, 150, - - 150, 231, 150, 150, 195, 57, 150, 232, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 1054, 426, - 150, 150, 150, 152, 152, 152, 152, 152, 412, 152, - 152, 176, 176, 152, 232, 153, 153, 176, 176, 153, - 153, 176, 226, 176, 176, 412, 226, 152, 152, 152, - 201, 390, 290, 390, 201, 57, 78, 290, 78, 153, - 435, 212, 212, 201, 212, 212, 435, 228, 228, 78, - 228, 228, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 95, 305, 153, 95, 260, 305, 95, 95, - 260, 95, 95, 95, 95, 387, 226, 95, 95, 156, - - 156, 156, 156, 156, 156, 156, 156, 156, 156, 387, - 520, 95, 95, 95, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 520, 423, 156, 95, 95, 96, - 260, 429, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 423, 429, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 756, 756, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - - 99, 392, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 400, 400, 400, 99, 99, 99, 99, - 99, 99, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 337, 414, 419, 223, 223, 337, 223, 223, - 392, 99, 99, 99, 99, 99, 99, 100, 419, 445, - 414, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 1045, 445, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 223, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - - 100, 100, 100, 100, 100, 100, 100, 100, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 627, - 418, 443, 104, 104, 104, 104, 104, 104, 418, 344, - 205, 205, 104, 344, 205, 205, 245, 245, 245, 245, - 245, 245, 189, 627, 443, 434, 189, 104, 104, 104, - 104, 104, 104, 121, 205, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 422, 1044, 430, 121, - 121, 121, 121, 121, 121, 189, 189, 208, 208, 205, - 189, 434, 403, 208, 208, 430, 422, 208, 189, 208, - 527, 189, 121, 403, 121, 121, 121, 121, 121, 121, - - 124, 219, 425, 124, 527, 219, 456, 219, 219, 124, - 425, 456, 124, 124, 219, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 219, - 1042, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 744, 410, 744, 128, 128, - 128, 128, 128, 128, 335, 471, 335, 410, 128, 216, - - 216, 216, 216, 216, 216, 216, 216, 216, 216, 328, - 328, 522, 328, 128, 128, 128, 128, 128, 128, 134, - 134, 433, 134, 134, 134, 134, 134, 522, 134, 134, - 364, 364, 134, 364, 471, 233, 233, 233, 233, 516, - 432, 233, 233, 432, 328, 233, 134, 134, 134, 155, - 433, 335, 155, 155, 155, 155, 155, 516, 155, 155, - 233, 233, 155, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 427, 446, 432, 155, 155, 155, 157, - 446, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 442, 427, 442, 157, 157, 157, 157, 157, - - 157, 288, 288, 1041, 288, 288, 237, 237, 237, 237, - 237, 467, 237, 237, 467, 517, 237, 467, 157, 531, - 157, 157, 157, 157, 157, 157, 166, 531, 726, 166, - 237, 237, 237, 468, 468, 166, 517, 468, 166, 166, - 726, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 288, 442, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 475, 767, 767, 167, 167, 167, 167, 167, 167, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 276, 276, 276, 276, 276, 276, 503, 530, 475, 167, - 167, 167, 167, 167, 167, 207, 490, 503, 207, 207, - 207, 207, 207, 235, 207, 207, 235, 530, 207, 537, - 413, 479, 235, 239, 413, 235, 479, 239, 235, 235, - 239, 416, 207, 207, 207, 490, 239, 386, 386, 492, - 386, 537, 235, 416, 235, 492, 528, 413, 416, 1037, - 239, 239, 244, 244, 244, 244, 244, 244, 244, 244, - - 244, 244, 407, 407, 407, 407, 407, 407, 235, 235, - 238, 417, 386, 238, 528, 417, 238, 238, 521, 238, - 238, 238, 238, 254, 254, 238, 238, 454, 457, 254, - 254, 454, 457, 254, 533, 254, 521, 444, 417, 238, - 238, 238, 532, 533, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 454, 457, 268, 268, 1030, 469, - 268, 268, 469, 532, 444, 238, 238, 241, 491, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 268, 271, 444, 241, 241, 241, 241, 241, 241, 529, - 628, 263, 263, 263, 263, 263, 489, 263, 263, 489, - - 469, 263, 542, 529, 491, 268, 628, 542, 241, 241, - 241, 241, 241, 241, 246, 263, 263, 263, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 489, 1025, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 539, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 621, 539, 1012, 247, - 247, 247, 247, 247, 247, 526, 265, 265, 265, 265, - - 265, 526, 265, 265, 621, 395, 265, 395, 395, 395, - 395, 395, 395, 538, 247, 247, 247, 247, 247, 247, - 265, 265, 265, 267, 267, 267, 267, 267, 536, 267, - 267, 807, 807, 267, 274, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 395, 534, 538, 267, 267, 267, - 270, 536, 534, 270, 270, 270, 270, 270, 624, 270, - 270, 1011, 540, 270, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 591, 624, 549, 270, 270, 270, - 272, 549, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 505, 505, 540, 272, 272, 272, 272, - - 272, 272, 284, 284, 547, 505, 477, 480, 284, 284, - 477, 480, 284, 591, 284, 547, 507, 507, 548, 272, - 600, 272, 272, 272, 272, 272, 272, 277, 507, 548, - 277, 600, 1007, 477, 480, 566, 277, 566, 566, 277, - 277, 745, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 995, 745, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - - 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 278, 278, 546, 620, 546, 278, 278, 278, 278, 278, - 278, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 451, 620, 451, 451, 451, 451, 451, 451, 994, - 278, 278, 278, 278, 278, 278, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 296, 541, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 345, 986, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 586, 342, 589, 546, 667, 342, 567, 589, 342, 567, - 567, 718, 541, 978, 342, 296, 297, 718, 297, 297, - - 297, 297, 297, 297, 297, 297, 297, 297, 342, 342, - 346, 586, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 347, 667, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 570, 297, 298, 570, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 638, - 366, 604, 518, 763, 366, 763, 518, 366, 568, 638, - 568, 568, 604, 366, 570, 298, 299, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 299, 366, 366, 518, - 299, 299, 299, 299, 299, 299, 391, 391, 391, 391, - - 391, 391, 391, 391, 391, 391, 513, 513, 513, 513, - 513, 513, 806, 299, 806, 299, 299, 299, 299, 299, - 299, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 622, 391, 977, 302, 302, 302, 302, 302, - 302, 404, 404, 404, 404, 404, 404, 404, 404, 404, - 404, 524, 617, 622, 655, 524, 810, 617, 810, 655, - 302, 302, 302, 302, 302, 302, 304, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 304, 524, 588, - 585, 304, 304, 304, 304, 304, 304, 406, 406, 406, - 406, 406, 406, 406, 406, 406, 406, 614, 614, 614, - - 614, 614, 614, 630, 605, 605, 304, 304, 304, 304, - 304, 304, 306, 585, 588, 306, 605, 723, 629, 661, - 630, 306, 661, 723, 306, 306, 629, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 841, 841, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 633, 877, 877, - - 307, 307, 307, 307, 307, 307, 409, 625, 409, 409, - 409, 409, 409, 409, 409, 409, 409, 409, 633, 625, - 662, 878, 878, 662, 625, 307, 307, 307, 307, 307, - 307, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 885, 975, 885, 348, 348, 348, 348, 348, - 348, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 619, 623, 676, 587, 619, 623, 971, 676, 643, - 348, 348, 348, 348, 348, 348, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 643, 950, 619, 623, - 350, 350, 350, 350, 350, 350, 449, 587, 449, 449, - - 449, 449, 449, 449, 449, 449, 449, 449, 731, 663, - 606, 606, 663, 731, 947, 350, 350, 350, 350, 350, - 350, 367, 606, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 450, 930, 450, 450, 450, 450, 450, - 450, 450, 450, 450, 450, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 664, 888, 888, 664, 819, - 367, 368, 704, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 704, 474, 819, 474, 474, 474, 474, - 474, 474, 470, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 727, 641, 764, 641, 727, 929, - - 368, 369, 764, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 474, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 506, 665, 733, 925, 665, 740, 746, - 369, 370, 733, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 641, 915, 740, 746, 370, 370, 370, - 370, 370, 370, 510, 510, 510, 510, 510, 510, 510, - 510, 642, 626, 631, 632, 510, 626, 631, 632, 665, - 770, 642, 370, 370, 370, 370, 370, 370, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 909, 626, - - 631, 632, 372, 372, 372, 372, 372, 372, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 770, 594, - 908, 594, 594, 594, 594, 594, 594, 372, 372, 372, - 372, 372, 372, 393, 777, 393, 393, 393, 393, 393, - 393, 393, 393, 393, 393, 515, 777, 515, 515, 515, - 515, 515, 515, 515, 515, 515, 515, 550, 594, 550, - 550, 550, 550, 550, 550, 550, 550, 550, 550, 743, - 762, 743, 393, 394, 762, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 551, 907, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 551, 552, 705, 552, - - 552, 552, 552, 552, 552, 552, 552, 552, 552, 705, - 755, 766, 394, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 766, 755, 743, 405, - 405, 405, 405, 405, 405, 590, 590, 590, 590, 590, - 590, 590, 590, 590, 590, 649, 734, 649, 649, 649, - 649, 649, 649, 734, 405, 405, 405, 405, 405, 405, - 408, 408, 408, 408, 408, 408, 408, 408, 408, 408, - 408, 408, 590, 916, 916, 408, 408, 408, 408, 408, - 408, 601, 899, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 650, 768, 608, 608, 650, 644, 732, - - 408, 408, 408, 408, 408, 408, 411, 608, 644, 411, - 732, 768, 804, 843, 895, 411, 843, 804, 411, 411, - 650, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 948, 948, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 883, 686, 894, 883, 452, 452, 452, 452, 452, 452, - - 602, 686, 602, 602, 602, 602, 602, 602, 602, 602, - 602, 602, 696, 696, 696, 696, 696, 696, 870, 452, - 452, 452, 452, 452, 452, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 917, 722, 856, 917, 453, - 453, 453, 453, 453, 453, 603, 722, 603, 603, 603, - 603, 603, 603, 603, 603, 603, 603, 715, 715, 715, - 715, 715, 715, 852, 453, 453, 453, 453, 453, 453, - 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, - 466, 954, 847, 954, 466, 466, 466, 466, 466, 466, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - - 703, 814, 703, 703, 703, 703, 703, 703, 844, 466, - 466, 466, 466, 466, 466, 472, 814, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 611, 611, 611, - 611, 611, 611, 611, 611, 955, 955, 949, 779, 611, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 779, 809, 949, 836, 472, 473, 809, 473, 473, 473, - 473, 473, 473, 473, 473, 473, 473, 616, 831, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 645, - 645, 645, 645, 645, 645, 645, 645, 645, 645, 818, - 818, 836, 818, 818, 473, 493, 857, 493, 493, 493, - - 493, 493, 493, 493, 493, 493, 493, 647, 857, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 648, - 791, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 791, 653, 830, 493, 494, 653, 494, 494, 494, - 494, 494, 494, 494, 494, 494, 494, 728, 818, 656, - 706, 706, 957, 656, 957, 828, 960, 728, 960, 653, - 659, 660, 706, 671, 659, 660, 670, 671, 670, 670, - 670, 670, 670, 670, 494, 495, 656, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 659, 660, 858, - 671, 666, 666, 666, 666, 666, 666, 666, 666, 666, - - 666, 858, 674, 677, 827, 670, 674, 677, 785, 785, - 785, 785, 785, 785, 495, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 508, 666, 674, - 677, 508, 508, 508, 508, 508, 508, 693, 693, 693, - 693, 693, 693, 693, 693, 693, 693, 823, 680, 681, - 719, 821, 680, 681, 719, 817, 508, 508, 508, 508, - 508, 508, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 680, 681, 719, 511, 511, - 511, 511, 511, 511, 695, 695, 695, 695, 695, 695, - 695, 695, 695, 695, 724, 729, 735, 889, 724, 729, - - 735, 816, 889, 511, 511, 511, 511, 511, 511, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 724, 729, 735, 514, 514, 514, 514, 514, 514, - 698, 792, 698, 698, 698, 698, 698, 698, 698, 698, - 698, 698, 792, 815, 707, 707, 987, 987, 813, 514, - 514, 514, 514, 514, 514, 571, 707, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 699, 699, 699, - 699, 699, 699, 699, 699, 699, 699, 701, 860, 701, - 701, 701, 701, 701, 701, 701, 701, 701, 701, 1016, - 860, 1016, 919, 775, 571, 572, 774, 572, 572, 572, - - 572, 572, 572, 572, 572, 572, 572, 702, 820, 702, - 702, 702, 702, 702, 702, 702, 702, 702, 702, 708, - 708, 708, 708, 708, 708, 708, 708, 708, 708, 765, - 820, 919, 820, 820, 572, 573, 757, 573, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 709, 709, 712, - 712, 712, 712, 712, 712, 712, 712, 820, 1076, 709, - 1076, 712, 714, 714, 714, 714, 714, 714, 714, 714, - 714, 714, 737, 923, 573, 592, 737, 592, 592, 592, - 592, 592, 592, 592, 592, 592, 592, 717, 754, 717, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 737, - - 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, - 747, 1079, 923, 1079, 592, 593, 753, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 748, 748, 748, - 748, 748, 748, 748, 748, 748, 748, 748, 749, 749, - 749, 749, 749, 749, 749, 749, 749, 749, 749, 897, - 897, 751, 897, 897, 593, 599, 599, 599, 599, 599, - 599, 599, 599, 599, 599, 599, 1139, 1139, 1139, 599, - 599, 599, 599, 599, 599, 980, 769, 769, 769, 769, - 769, 769, 769, 769, 769, 769, 773, 773, 773, 773, - 773, 773, 773, 750, 599, 599, 599, 599, 599, 599, - - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 769, 980, 742, 609, 609, 609, 609, - 609, 609, 984, 741, 773, 776, 776, 776, 776, 776, - 776, 776, 776, 776, 776, 802, 802, 802, 802, 802, - 802, 609, 609, 609, 609, 609, 609, 612, 612, 612, - 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, - 898, 984, 898, 612, 612, 612, 612, 612, 612, 778, - 778, 778, 778, 778, 778, 778, 778, 778, 778, 832, - 833, 808, 739, 832, 833, 808, 1032, 700, 612, 612, - 612, 612, 612, 612, 615, 615, 615, 615, 615, 615, - - 615, 615, 615, 615, 615, 615, 832, 833, 808, 615, - 615, 615, 615, 615, 615, 782, 882, 782, 782, 782, - 782, 782, 782, 898, 692, 1032, 882, 782, 691, 793, - 793, 808, 690, 685, 615, 615, 615, 615, 615, 615, - 668, 793, 668, 668, 668, 668, 668, 668, 668, 668, - 668, 668, 784, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 787, 874, 787, 787, 787, 787, 787, 787, - 787, 787, 787, 787, 874, 1048, 1048, 1048, 1048, 668, - 669, 931, 669, 669, 669, 669, 669, 669, 669, 669, - 669, 669, 788, 931, 788, 788, 788, 788, 788, 788, - - 788, 788, 788, 788, 789, 875, 789, 789, 789, 789, - 789, 789, 789, 789, 789, 789, 875, 1060, 1087, 669, - 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, - 687, 790, 684, 790, 790, 790, 790, 790, 790, 790, - 790, 790, 790, 794, 794, 795, 795, 795, 795, 795, - 795, 795, 795, 795, 795, 794, 1060, 1087, 687, 688, - 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 796, 796, 799, 799, 799, 799, 799, 799, 799, 799, - 683, 682, 796, 932, 799, 801, 801, 801, 801, 801, - 801, 801, 801, 801, 801, 932, 679, 688, 689, 689, - - 689, 689, 689, 689, 689, 689, 689, 689, 689, 803, - 934, 803, 803, 803, 803, 803, 803, 803, 803, 803, - 803, 678, 934, 811, 812, 675, 996, 811, 812, 826, - 826, 826, 826, 826, 826, 826, 689, 694, 996, 694, - 694, 694, 694, 694, 694, 694, 694, 694, 694, 694, - 811, 812, 673, 694, 694, 694, 694, 694, 694, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 1136, - 1136, 1157, 1157, 811, 812, 1136, 672, 1157, 694, 694, - 694, 694, 694, 694, 697, 697, 697, 697, 697, 697, - 697, 697, 697, 697, 697, 1163, 1163, 1163, 697, 697, - - 697, 697, 697, 697, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 842, 845, 846, 658, 842, - 845, 846, 657, 697, 697, 697, 697, 697, 697, 710, - 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, - 710, 710, 842, 845, 846, 710, 710, 710, 710, 710, - 710, 825, 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 886, 842, 845, 846, 886, 654, 652, 651, - 710, 710, 710, 710, 710, 710, 713, 713, 713, 713, - 713, 713, 713, 713, 713, 713, 713, 713, 713, 886, - 646, 640, 713, 713, 713, 713, 713, 713, 835, 835, - - 835, 835, 835, 835, 835, 835, 835, 835, 839, 839, - 839, 839, 839, 839, 839, 639, 637, 713, 713, 713, - 713, 713, 713, 716, 716, 716, 716, 716, 716, 716, - 716, 716, 716, 716, 1103, 835, 636, 635, 716, 716, - 716, 716, 716, 716, 634, 853, 839, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 866, 866, 866, - 866, 866, 866, 716, 716, 716, 716, 716, 716, 721, - 890, 892, 721, 1103, 890, 892, 958, 958, 721, 958, - 958, 721, 721, 618, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 890, 892, 598, - - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 752, 597, 596, 997, 752, 752, 752, - 752, 752, 752, 752, 752, 752, 752, 752, 997, 752, - 595, 584, 752, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, - 752, 752, 752, 752, 752, 583, 752, 752, 752, 752, - 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, - - 752, 752, 752, 752, 758, 758, 758, 758, 758, 758, - 758, 758, 758, 758, 758, 854, 582, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 855, 946, 855, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 946, - 581, 580, 758, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 759, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 863, 999, 863, 863, 863, 863, - 863, 863, 1158, 1158, 1179, 1179, 863, 999, 1158, 579, - 1179, 759, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 865, 865, 865, 865, 865, 865, 865, - - 865, 865, 865, 868, 896, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 876, 876, 1181, 1181, 1043, - 760, 761, 578, 1181, 761, 577, 896, 876, 896, 896, - 761, 1043, 576, 761, 761, 575, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 961, - 574, 961, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 771, 771, 771, 771, 771, - - 771, 771, 771, 771, 771, 771, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 871, 961, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, 1018, 1018, - 565, 1018, 1018, 771, 772, 772, 772, 772, 772, 772, - 772, 772, 772, 772, 772, 872, 564, 872, 872, 872, - 872, 872, 872, 872, 872, 872, 872, 873, 563, 873, - 873, 873, 873, 873, 873, 940, 940, 940, 940, 940, - 940, 562, 772, 780, 561, 780, 780, 780, 780, 780, - 780, 780, 780, 780, 780, 780, 783, 560, 783, 783, - 783, 783, 783, 783, 783, 783, 783, 783, 783, 559, - - 558, 557, 783, 783, 783, 783, 783, 783, 881, 881, - 881, 881, 881, 881, 881, 881, 556, 884, 906, 951, - 1227, 884, 906, 951, 555, 554, 1227, 783, 783, 783, - 783, 783, 783, 786, 786, 786, 786, 786, 786, 786, - 786, 786, 786, 786, 884, 906, 951, 786, 786, 786, - 786, 786, 786, 900, 553, 1182, 1182, 900, 900, 900, - 900, 1182, 1052, 1052, 901, 1052, 1052, 884, 901, 901, - 901, 901, 786, 786, 786, 786, 786, 786, 797, 797, - 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, - 797, 545, 544, 543, 797, 797, 797, 797, 797, 797, - - 1005, 1005, 1005, 1005, 1005, 1005, 902, 900, 902, 902, - 902, 902, 902, 902, 902, 902, 902, 902, 901, 797, - 797, 797, 797, 797, 797, 800, 800, 800, 800, 800, - 800, 800, 800, 800, 800, 800, 800, 535, 502, 501, - 500, 800, 800, 800, 800, 800, 800, 903, 499, 903, - 903, 903, 903, 903, 903, 903, 903, 903, 903, 1010, - 1010, 1010, 1010, 1010, 1010, 1010, 800, 800, 800, 800, - 800, 800, 805, 967, 1170, 805, 967, 1170, 497, 1170, - 496, 805, 967, 967, 805, 805, 967, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, - - 967, 967, 967, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 829, 488, 487, 928, - 829, 928, 928, 928, 928, 928, 928, 486, 829, 485, - 484, 483, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 482, 481, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - - 478, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, 829, 837, - 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 904, 476, 904, 904, 904, 904, 904, 904, 904, 904, - 904, 904, 905, 465, 905, 905, 905, 905, 905, 905, - 905, 905, 905, 905, 464, 463, 462, 837, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 922, - 461, 922, 922, 922, 922, 922, 922, 914, 460, 459, - 458, 914, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 1183, 1183, 1221, 1221, 838, 840, 1183, 976, - - 840, 1221, 1186, 976, 914, 1186, 840, 1186, 922, 840, - 840, 455, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 914, 976, 448, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 848, 441, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 440, 439, 438, 918, 918, 918, 918, - 918, 918, 918, 918, 918, 918, 926, 437, 926, 926, - - 926, 926, 926, 926, 926, 926, 926, 926, 436, 431, - 848, 849, 428, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 918, 927, 402, 927, 927, 927, 927, - 927, 927, 927, 927, 927, 927, 933, 933, 933, 933, - 933, 933, 933, 933, 933, 933, 1187, 1187, 401, 398, - 849, 850, 1187, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 937, 397, 937, 937, 937, 937, 937, - 937, 385, 384, 383, 382, 937, 939, 939, 939, 939, - 939, 939, 939, 939, 939, 939, 1188, 1188, 381, 380, - 850, 851, 1188, 851, 851, 851, 851, 851, 851, 851, - - 851, 851, 851, 942, 379, 942, 942, 942, 942, 942, - 942, 942, 942, 942, 942, 943, 943, 943, 943, 943, - 943, 943, 943, 943, 943, 943, 1189, 1189, 378, 377, - 851, 861, 1189, 861, 861, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 864, 376, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 375, 374, 371, - 864, 864, 864, 864, 864, 864, 944, 944, 944, 944, - 944, 944, 944, 944, 944, 944, 944, 953, 365, 1077, - 1077, 953, 1077, 1077, 363, 864, 864, 864, 864, 864, - 864, 867, 867, 867, 867, 867, 867, 867, 867, 867, - - 867, 867, 362, 361, 953, 867, 867, 867, 867, 867, - 867, 945, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 945, 985, 1192, 1192, 360, 985, 953, 359, 1192, - 867, 867, 867, 867, 867, 867, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 879, 879, 910, 985, - 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, - 962, 1225, 358, 1225, 962, 962, 962, 962, 963, 1225, - 985, 357, 963, 963, 963, 963, 970, 970, 970, 970, - 970, 970, 970, 970, 970, 970, 356, 910, 911, 355, - 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, - - 964, 354, 1193, 1193, 964, 964, 964, 964, 1193, 353, - 352, 965, 349, 338, 962, 965, 965, 965, 965, 1194, - 1194, 334, 963, 1197, 1197, 1194, 333, 911, 912, 1197, - 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, - 966, 332, 331, 966, 966, 966, 966, 966, 966, 966, - 966, 966, 966, 327, 964, 968, 326, 1198, 1198, 968, - 968, 968, 968, 1198, 325, 965, 324, 912, 913, 323, - 913, 913, 913, 913, 913, 913, 913, 913, 913, 913, - 972, 322, 972, 972, 972, 972, 972, 972, 972, 972, - 972, 972, 320, 969, 319, 1202, 969, 1013, 1202, 318, - - 1202, 1013, 969, 969, 317, 316, 969, 913, 920, 968, - 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 969, 969, 969, 973, 1013, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 974, 315, 974, 974, 974, - 974, 974, 974, 1204, 1204, 314, 313, 920, 921, 1204, - 921, 921, 921, 921, 921, 921, 921, 921, 921, 921, - 312, 311, 310, 308, 301, 979, 979, 979, 979, 979, - 979, 979, 979, 979, 979, 983, 300, 983, 983, 983, - 983, 983, 983, 1212, 1212, 286, 285, 921, 935, 1212, - 935, 935, 935, 935, 935, 935, 935, 935, 935, 935, - - 935, 938, 979, 938, 938, 938, 938, 938, 938, 938, - 938, 938, 938, 938, 983, 283, 282, 938, 938, 938, - 938, 938, 938, 991, 281, 991, 991, 991, 991, 991, - 991, 991, 991, 991, 991, 1094, 1094, 1094, 1094, 1094, - 1094, 280, 938, 938, 938, 938, 938, 938, 941, 941, - 941, 941, 941, 941, 941, 941, 941, 941, 279, 273, - 269, 266, 941, 941, 941, 941, 941, 941, 992, 264, + 45, 45, 45, 45, 45, 45, 45, 45, 401, 434, + 401, 45, 45, 45, 45, 45, 45, 349, 199, 434, + 199, 45, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 349, 347, 235, 438, 45, 45, 45, 45, + 45, 45, 54, 54, 438, 54, 54, 54, 54, 54, + 347, 54, 54, 151, 235, 54, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 1129, 236, 213, 54, + 54, 54, 58, 213, 58, 440, 153, 153, 153, 153, + + 153, 235, 153, 153, 199, 58, 153, 236, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 427, 440, + 153, 153, 153, 155, 155, 155, 155, 155, 205, 155, + 155, 554, 205, 155, 236, 156, 156, 427, 554, 156, + 156, 205, 216, 216, 404, 216, 216, 155, 155, 155, + 232, 232, 296, 232, 232, 58, 79, 296, 79, 156, + 249, 249, 249, 249, 249, 249, 311, 352, 645, 79, + 311, 352, 79, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 96, 404, 156, 96, 230, 645, 96, 96, + 230, 96, 96, 96, 96, 399, 432, 96, 96, 159, + + 159, 159, 159, 159, 159, 159, 159, 159, 159, 399, + 432, 96, 96, 96, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 1112, 433, 159, 96, 96, 97, + 230, 443, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 433, 443, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 436, 1101, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + + 100, 436, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 402, 561, 402, 100, 100, 100, 100, + 100, 100, 180, 180, 374, 374, 180, 374, 180, 180, + 336, 336, 180, 336, 180, 180, 412, 412, 412, 415, + 431, 100, 100, 100, 100, 100, 100, 101, 431, 561, + 415, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 1100, 336, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 1098, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + + 101, 101, 101, 101, 101, 101, 101, 101, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 664, + 457, 424, 105, 105, 105, 105, 105, 105, 345, 664, + 209, 209, 105, 345, 209, 209, 227, 227, 424, 227, + 227, 425, 193, 457, 556, 425, 193, 105, 105, 105, + 105, 105, 105, 123, 209, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 441, 556, 425, 123, + 123, 123, 123, 123, 123, 193, 193, 212, 212, 209, + 193, 212, 422, 212, 212, 426, 441, 212, 193, 212, + 227, 193, 123, 422, 123, 123, 123, 123, 123, 123, + + 126, 223, 426, 126, 449, 223, 471, 223, 223, 126, + 449, 471, 126, 126, 223, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 223, + 1097, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 1093, 521, 439, 130, 130, + 130, 130, 130, 130, 343, 439, 343, 521, 130, 207, + + 207, 207, 207, 207, 207, 207, 207, 207, 207, 398, + 398, 459, 398, 130, 130, 130, 130, 130, 130, 137, + 137, 447, 137, 137, 137, 137, 137, 459, 137, 137, + 765, 765, 137, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 444, 398, 508, 137, 137, 137, 158, + 447, 343, 158, 158, 158, 158, 158, 265, 158, 158, + 444, 265, 158, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 437, 508, 534, 158, 158, 158, 160, + 448, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 487, 534, 437, 160, 160, 160, 160, 160, + + 160, 460, 237, 237, 237, 237, 243, 460, 237, 237, + 243, 265, 237, 243, 485, 997, 448, 485, 160, 243, + 160, 160, 160, 160, 160, 160, 169, 237, 237, 169, + 997, 487, 538, 243, 243, 169, 484, 484, 169, 169, + 484, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 485, 538, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 491, 653, 1086, 170, 170, 170, 170, 170, 170, + 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, + 281, 281, 281, 281, 281, 281, 653, 558, 491, 170, + 170, 170, 170, 170, 170, 211, 550, 509, 211, 211, + 211, 211, 211, 239, 211, 211, 239, 456, 211, 456, + 294, 294, 239, 294, 294, 239, 550, 430, 239, 239, + 558, 430, 211, 211, 211, 419, 419, 419, 419, 419, + 419, 753, 239, 509, 239, 753, 241, 241, 241, 241, + 241, 468, 241, 241, 430, 468, 241, 248, 248, 248, + + 248, 248, 248, 248, 248, 248, 248, 547, 239, 239, + 241, 241, 241, 242, 294, 547, 242, 540, 468, 242, + 242, 456, 242, 242, 242, 242, 259, 259, 242, 242, + 259, 446, 259, 259, 446, 540, 259, 759, 259, 759, + 458, 496, 242, 242, 242, 429, 496, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 429, 507, 273, + 273, 507, 429, 273, 273, 510, 446, 458, 242, 242, + 245, 510, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 245, 273, 276, 458, 245, 245, 245, 245, + 245, 245, 546, 507, 268, 268, 268, 268, 268, 483, + + 268, 268, 483, 539, 268, 483, 546, 548, 273, 539, + 1080, 245, 245, 245, 245, 245, 245, 250, 268, 268, + 268, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 1070, 548, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 559, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 1065, + 559, 541, 251, 251, 251, 251, 251, 251, 545, 270, + + 270, 270, 270, 270, 545, 270, 270, 541, 407, 270, + 407, 407, 407, 407, 407, 407, 1064, 251, 251, 251, + 251, 251, 251, 270, 270, 270, 272, 272, 272, 272, + 272, 560, 272, 272, 535, 549, 272, 279, 279, 279, + 279, 279, 279, 279, 279, 279, 279, 407, 1060, 549, + 272, 272, 272, 275, 567, 535, 275, 275, 275, 275, + 275, 649, 275, 275, 560, 567, 275, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 552, 649, 562, + 275, 275, 275, 277, 562, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 523, 523, 552, 277, + + 277, 277, 277, 277, 277, 290, 290, 553, 523, 290, + 472, 290, 290, 551, 472, 290, 553, 290, 557, 525, + 525, 551, 277, 568, 277, 277, 277, 277, 277, 277, + 282, 525, 493, 282, 568, 689, 493, 472, 689, 282, + 557, 650, 282, 282, 1048, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 493, + 650, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, + + 282, 282, 282, 282, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 566, 1047, 566, 283, 283, + 283, 283, 283, 283, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 465, 1039, 465, 465, 465, 465, + 465, 465, 1038, 283, 283, 283, 283, 283, 283, 301, + 301, 301, 301, 301, 301, 301, 301, 301, 301, 302, + 609, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 353, 1030, 353, 353, 353, 353, 353, 353, 353, + 353, 353, 353, 610, 350, 569, 566, 615, 350, 624, + 569, 350, 588, 609, 588, 588, 1029, 350, 302, 303, + + 624, 303, 303, 303, 303, 303, 303, 303, 303, 303, + 303, 350, 350, 354, 610, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 355, 615, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 592, 303, 304, + 592, 304, 304, 304, 304, 304, 304, 304, 304, 304, + 304, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 628, 376, 734, 497, 644, 376, 589, 497, + 376, 589, 589, 628, 644, 734, 376, 592, 304, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 376, 376, 497, 305, 305, 305, 305, 305, 305, 403, + + 403, 403, 403, 403, 403, 403, 403, 403, 403, 531, + 531, 531, 531, 531, 531, 1028, 305, 646, 305, 305, + 305, 305, 305, 305, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 646, 403, 1026, 308, 308, + 308, 308, 308, 308, 416, 416, 416, 416, 416, 416, + 416, 416, 416, 416, 536, 543, 613, 641, 536, 543, + 1022, 613, 641, 308, 308, 308, 308, 308, 308, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 536, 543, 611, 310, 310, 310, 310, 310, 310, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + + 590, 647, 590, 590, 654, 629, 629, 630, 630, 310, + 310, 310, 310, 310, 310, 312, 611, 629, 312, 630, + 654, 655, 647, 659, 312, 766, 766, 312, 312, 655, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 659, 1005, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 776, 1004, 776, 313, 313, 313, 313, 313, 313, 421, + 612, 421, 421, 421, 421, 421, 421, 421, 421, 421, + 421, 638, 638, 638, 638, 638, 638, 1000, 313, 313, + 313, 313, 313, 313, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 612, 844, 844, 356, 356, + 356, 356, 356, 356, 461, 461, 461, 461, 461, 461, + 461, 461, 461, 461, 643, 648, 683, 690, 643, 648, + 690, 683, 656, 356, 356, 356, 356, 356, 356, 358, + 358, 358, 358, 358, 358, 358, 358, 358, 358, 656, + 995, 643, 648, 358, 358, 358, 358, 358, 358, 463, + + 651, 463, 463, 463, 463, 463, 463, 463, 463, 463, + 463, 706, 651, 632, 632, 978, 706, 651, 358, 358, + 358, 358, 358, 358, 377, 632, 377, 377, 377, 377, + 377, 377, 377, 377, 377, 377, 464, 977, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 691, 669, + 695, 691, 692, 377, 378, 692, 378, 378, 378, 378, + 378, 378, 378, 378, 378, 378, 669, 490, 973, 490, + 490, 490, 490, 490, 490, 486, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 760, 667, 695, + + 667, 760, 847, 378, 379, 847, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 490, 522, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 693, 962, 748, + 693, 772, 778, 379, 380, 748, 380, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 667, 955, 772, 778, + 380, 380, 380, 380, 380, 380, 528, 528, 528, 528, + 528, 528, 528, 528, 668, 652, 657, 658, 528, 652, + 657, 658, 693, 954, 668, 380, 380, 380, 380, 380, + 380, 382, 382, 382, 382, 382, 382, 382, 382, 382, + + 382, 952, 652, 657, 658, 382, 382, 382, 382, 382, + 382, 530, 530, 530, 530, 530, 530, 530, 530, 530, + 530, 800, 618, 800, 618, 618, 618, 618, 618, 618, + 382, 382, 382, 382, 382, 382, 405, 758, 405, 405, + 405, 405, 405, 405, 405, 405, 405, 405, 533, 758, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 570, 618, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 764, 777, 943, 405, 406, 764, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 571, 777, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + + 572, 735, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 735, 804, 939, 406, 417, 417, 417, 417, + 417, 417, 417, 417, 417, 417, 417, 417, 417, 842, + 804, 842, 417, 417, 417, 417, 417, 417, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 675, 938, + 675, 675, 675, 675, 675, 675, 928, 417, 417, 417, + 417, 417, 417, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 614, 882, 882, 420, 420, + 420, 420, 420, 420, 625, 846, 625, 625, 625, 625, + 625, 625, 625, 625, 625, 625, 752, 796, 846, 912, + + 670, 796, 752, 420, 420, 420, 420, 420, 420, 423, + 670, 676, 423, 716, 757, 676, 885, 898, 423, 885, + 757, 423, 423, 716, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 676, 894, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 423, 423, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 763, 919, 919, 889, 466, 466, 466, + + 466, 466, 466, 626, 763, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 726, 726, 726, 726, 726, + 726, 886, 466, 466, 466, 466, 466, 466, 467, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 802, 920, + 920, 881, 467, 467, 467, 467, 467, 467, 627, 802, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, + 745, 745, 745, 745, 745, 745, 806, 467, 467, 467, + 467, 467, 467, 482, 482, 482, 482, 482, 482, 482, + 482, 482, 482, 482, 926, 926, 871, 482, 482, 482, + 482, 482, 482, 631, 631, 631, 631, 631, 631, 631, + + 631, 631, 631, 733, 806, 733, 733, 733, 733, 733, + 733, 870, 482, 482, 482, 482, 482, 482, 488, 867, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 635, 635, 635, 635, 635, 635, 635, 635, 1008, 857, + 1008, 852, 635, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 637, 798, 852, 857, 967, 488, 489, 798, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 640, 866, 640, 640, 640, 640, 640, 640, 640, 640, + 640, 640, 671, 671, 671, 671, 671, 671, 671, 671, + 671, 671, 775, 931, 775, 967, 931, 489, 511, 799, + + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 673, 799, 673, 673, 673, 673, 673, 673, 673, 673, + 673, 673, 674, 827, 674, 674, 674, 674, 674, 674, + 674, 674, 674, 674, 827, 680, 861, 511, 512, 680, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 828, 775, 684, 736, 736, 801, 684, 932, 932, 801, + 859, 828, 680, 687, 688, 736, 699, 687, 688, 698, + 699, 698, 698, 698, 698, 698, 698, 512, 513, 684, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 687, 688, 813, 699, 694, 694, 694, 694, 694, 694, + + 694, 694, 694, 694, 813, 703, 707, 803, 698, 703, + 707, 840, 803, 964, 964, 971, 840, 513, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 694, 703, 707, 526, 526, 526, 526, 526, 526, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, + 855, 710, 711, 749, 971, 710, 711, 749, 854, 526, + 526, 526, 526, 526, 526, 529, 529, 529, 529, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 710, 711, + 749, 529, 529, 529, 529, 529, 529, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 755, 761, 767, + + 853, 755, 761, 767, 996, 996, 529, 529, 529, 529, + 529, 529, 532, 532, 532, 532, 532, 532, 532, 532, + 532, 532, 532, 532, 755, 761, 767, 532, 532, 532, + 532, 532, 532, 728, 815, 728, 728, 728, 728, 728, + 728, 728, 728, 728, 728, 1285, 815, 737, 737, 1006, + 1006, 1285, 532, 532, 532, 532, 532, 532, 593, 737, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 731, 869, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 933, 851, 869, 933, 876, 593, 594, 899, + + 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, + 732, 899, 732, 732, 732, 732, 732, 732, 732, 732, + 732, 732, 738, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 856, 856, 876, 856, 856, 594, 595, 848, + 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, + 739, 739, 742, 742, 742, 742, 742, 742, 742, 742, + 1040, 1040, 739, 884, 742, 744, 744, 744, 744, 744, + 744, 744, 744, 744, 744, 769, 884, 595, 616, 769, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, + 747, 856, 747, 747, 747, 747, 747, 747, 747, 747, + + 747, 747, 769, 779, 779, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 843, 1032, 953, 616, 617, 953, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, + 780, 781, 781, 781, 781, 781, 781, 781, 781, 781, + 781, 781, 941, 941, 1032, 941, 941, 617, 623, 623, + 623, 623, 623, 623, 623, 623, 623, 623, 623, 1011, + 811, 1011, 623, 623, 623, 623, 623, 623, 1036, 805, + 805, 805, 805, 805, 805, 805, 805, 805, 805, 809, + 809, 809, 809, 809, 809, 809, 810, 623, 623, 623, + + 623, 623, 623, 633, 633, 633, 633, 633, 633, 633, + 633, 633, 633, 633, 633, 633, 805, 1036, 797, 633, + 633, 633, 633, 633, 633, 1088, 1118, 809, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 821, 821, + 821, 821, 821, 821, 633, 633, 633, 633, 633, 633, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 791, 1088, 1118, 636, 636, 636, 636, + 636, 636, 814, 814, 814, 814, 814, 814, 814, 814, + 814, 814, 838, 838, 838, 838, 838, 838, 1134, 1145, + 1134, 636, 636, 636, 636, 636, 636, 639, 639, 639, + + 639, 639, 639, 639, 639, 639, 639, 639, 639, 1137, + 790, 1137, 639, 639, 639, 639, 639, 639, 818, 900, + 818, 818, 818, 818, 818, 818, 924, 1283, 1145, 1283, + 818, 900, 829, 829, 789, 1283, 924, 639, 639, 639, + 639, 639, 639, 696, 829, 696, 696, 696, 696, 696, + 696, 696, 696, 696, 696, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 823, 902, 823, 823, 823, + 823, 823, 823, 823, 823, 823, 823, 963, 902, 788, + 963, 965, 696, 697, 965, 697, 697, 697, 697, 697, + 697, 697, 697, 697, 697, 824, 1161, 824, 824, 824, + + 824, 824, 824, 824, 824, 824, 824, 825, 916, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 916, + 787, 786, 697, 717, 717, 717, 717, 717, 717, 717, + 717, 717, 717, 717, 826, 1161, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 830, 830, 831, 831, + 831, 831, 831, 831, 831, 831, 831, 831, 830, 785, + 784, 717, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 832, 832, 835, 835, 835, 835, 835, + 835, 835, 835, 783, 782, 832, 979, 835, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 979, 774, + + 718, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 719, 719, 839, 858, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 773, 917, 845, 849, 850, 980, + 845, 849, 850, 771, 754, 858, 917, 858, 858, 719, + 724, 980, 724, 724, 724, 724, 724, 724, 724, 724, + 724, 724, 724, 845, 849, 850, 724, 724, 724, 724, + 724, 724, 858, 860, 860, 860, 860, 860, 860, 860, + 860, 860, 860, 929, 845, 849, 850, 929, 1012, 730, + 1012, 724, 724, 724, 724, 724, 724, 727, 727, 727, + 727, 727, 727, 727, 727, 727, 727, 727, 722, 721, + + 929, 727, 727, 727, 727, 727, 727, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 864, 864, + 864, 864, 864, 864, 864, 720, 727, 727, 727, 727, + 727, 727, 740, 740, 740, 740, 740, 740, 740, 740, + 740, 740, 740, 740, 740, 715, 1012, 714, 740, 740, + 740, 740, 740, 740, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 868, 872, 873, 713, 868, + 872, 873, 712, 740, 740, 740, 740, 740, 740, 743, + 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 868, 872, 873, 743, 743, 743, 743, 743, + + 743, 875, 875, 875, 875, 875, 875, 875, 875, 875, + 875, 709, 883, 868, 872, 873, 883, 942, 708, 942, + 743, 743, 743, 743, 743, 743, 746, 746, 746, 746, + 746, 746, 746, 746, 746, 746, 746, 705, 875, 883, + 704, 746, 746, 746, 746, 746, 746, 994, 879, 879, + 879, 879, 879, 879, 879, 934, 1279, 1279, 994, 934, + 883, 918, 918, 1279, 982, 1049, 746, 746, 746, 746, + 746, 746, 751, 918, 936, 751, 982, 1049, 936, 702, + 942, 751, 934, 701, 751, 751, 879, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + + 700, 936, 686, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 792, 792, 792, 792, + 792, 792, 792, 792, 792, 792, 792, 895, 685, 895, + 895, 895, 895, 895, 895, 895, 895, 895, 895, 887, + 888, 1050, 682, 887, 888, 908, 908, 908, 908, 908, + 908, 681, 679, 1050, 792, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 887, 888, 896, 678, + + 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, + 1009, 1009, 677, 1009, 1009, 944, 672, 887, 888, 944, + 944, 944, 944, 793, 794, 794, 794, 794, 794, 794, + 794, 794, 794, 794, 794, 897, 940, 897, 897, 897, + 897, 897, 897, 897, 897, 897, 897, 901, 901, 901, + 901, 901, 901, 901, 901, 901, 901, 666, 940, 1052, + 940, 940, 794, 795, 951, 1099, 795, 665, 951, 944, + 663, 1052, 795, 662, 661, 795, 795, 1099, 795, 795, + 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, + 795, 951, 660, 642, 795, 795, 795, 795, 795, 795, + + 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, + 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, + 795, 795, 795, 795, 795, 795, 795, 795, 795, 795, + 795, 795, 795, 795, 795, 795, 795, 807, 807, 807, + 807, 807, 807, 807, 807, 807, 807, 807, 905, 622, + 905, 905, 905, 905, 905, 905, 1104, 1104, 1104, 1104, + 905, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 1197, 1197, 1197, 621, 807, 808, 808, 808, 808, + 808, 808, 808, 808, 808, 808, 808, 910, 620, 910, + 910, 910, 910, 910, 910, 910, 910, 910, 910, 911, + + 911, 911, 911, 911, 911, 911, 911, 911, 911, 1072, + 1072, 619, 1072, 1072, 808, 816, 608, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 819, 607, + 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, + 819, 1221, 1221, 1221, 819, 819, 819, 819, 819, 819, + 913, 606, 913, 913, 913, 913, 913, 913, 913, 913, + 913, 913, 988, 988, 988, 988, 988, 988, 605, 819, + 819, 819, 819, 819, 819, 822, 822, 822, 822, 822, + 822, 822, 822, 822, 822, 822, 604, 603, 602, 822, + 822, 822, 822, 822, 822, 914, 601, 914, 914, 914, + + 914, 914, 914, 914, 914, 914, 914, 998, 1001, 600, + 599, 998, 1001, 598, 822, 822, 822, 822, 822, 822, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 597, 998, 1001, 833, 833, 833, 833, + 833, 833, 915, 596, 915, 915, 915, 915, 915, 915, + 923, 923, 923, 923, 923, 923, 923, 923, 587, 586, + 585, 833, 833, 833, 833, 833, 833, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, 836, 584, + 583, 582, 581, 836, 836, 836, 836, 836, 836, 1027, + 580, 579, 1066, 1027, 925, 927, 1066, 1079, 925, 927, + + 976, 1079, 976, 976, 976, 976, 976, 976, 836, 836, + 836, 836, 836, 836, 841, 1228, 1027, 841, 1228, 1066, + 1228, 925, 927, 841, 1079, 578, 841, 841, 577, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 925, 927, 576, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 841, 841, 841, 865, 575, + 574, 573, 865, 865, 865, 865, 865, 865, 865, 865, + + 865, 865, 865, 565, 865, 564, 563, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 555, 865, 865, 865, 865, 865, 865, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 877, + 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, + 945, 520, 519, 518, 945, 945, 945, 945, 946, 517, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 1058, 1058, 1058, 1058, 1058, 1058, 515, 877, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, 878, 947, + + 514, 947, 947, 947, 947, 947, 947, 947, 947, 947, + 947, 506, 505, 948, 945, 948, 948, 948, 948, 948, + 948, 948, 948, 948, 948, 504, 878, 880, 1018, 1244, + 880, 1018, 1244, 503, 1244, 502, 880, 1018, 1018, 880, + 880, 1018, 880, 880, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 1018, 1018, 1018, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, + + 880, 890, 501, 890, 890, 890, 890, 890, 890, 890, + 890, 890, 890, 949, 500, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 499, 950, 960, 961, 498, + 950, 960, 961, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 890, 891, 495, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 950, 960, 961, 966, 966, 966, 966, + 966, 966, 966, 966, 966, 966, 970, 494, 970, 970, + 970, 970, 970, 970, 950, 960, 961, 492, 481, 480, + 891, 892, 479, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 966, 972, 972, 972, 972, 972, 972, + + 972, 972, 972, 972, 974, 970, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 1194, 1194, 478, 477, + 892, 893, 1194, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 975, 476, 975, 975, 975, 975, 975, + 975, 975, 975, 975, 975, 981, 981, 981, 981, 981, + 981, 981, 981, 981, 981, 1110, 1110, 475, 1110, 1110, + 893, 903, 474, 903, 903, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 906, 473, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 470, 469, 462, + 906, 906, 906, 906, 906, 906, 985, 455, 985, 985, + + 985, 985, 985, 985, 454, 1003, 1105, 1107, 985, 1003, + 1105, 1107, 453, 452, 451, 906, 906, 906, 906, 906, + 906, 909, 909, 909, 909, 909, 909, 909, 909, 909, + 909, 909, 1003, 1105, 1107, 909, 909, 909, 909, 909, + 909, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 450, 1025, 1003, 1025, 1025, 1025, 1025, 1025, 1025, + 909, 909, 909, 909, 909, 909, 921, 921, 921, 921, + 921, 921, 921, 921, 921, 921, 921, 921, 956, 445, + 956, 956, 956, 956, 956, 956, 956, 956, 956, 956, + 990, 442, 990, 990, 990, 990, 990, 990, 990, 990, + + 990, 990, 991, 991, 991, 991, 991, 991, 991, 991, + 991, 991, 991, 1215, 1215, 414, 413, 956, 957, 1215, + 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, - 1121, 1121, 1121, 1121, 1121, 1121, 262, 941, 941, 941, - 941, 941, 941, 981, 259, 981, 981, 981, 981, 981, - - 981, 981, 981, 981, 981, 993, 258, 993, 993, 993, - 993, 993, 993, 993, 993, 993, 993, 998, 998, 998, - 998, 998, 998, 998, 998, 998, 998, 1024, 1219, 1219, - 257, 1024, 981, 982, 1219, 982, 982, 982, 982, 982, - 982, 982, 982, 982, 982, 1002, 256, 1002, 1002, 1002, - 1002, 1002, 1002, 255, 1024, 253, 252, 1002, 1004, 1004, - 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1222, 1222, - 251, 250, 982, 988, 1222, 988, 988, 988, 988, 988, - 988, 988, 988, 988, 988, 1006, 248, 1006, 1006, 1006, - 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1008, 1008, 1008, - - 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 242, 234, - 1049, 230, 988, 989, 1049, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 1009, 1009, 1009, 1009, 1009, - 1009, 1009, 1009, 1009, 1009, 1009, 225, 1049, 1015, 224, - 222, 1040, 1015, 1040, 1040, 1040, 1040, 1040, 1040, 218, - 213, 211, 989, 990, 206, 990, 990, 990, 990, 990, - 990, 990, 990, 990, 990, 1015, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1209, 194, 1015, 1209, - 193, 1209, 990, 1000, 192, 1000, 1000, 1000, 1000, 1000, - - 1000, 1000, 1000, 1000, 1000, 1000, 1003, 191, 1003, 1003, - 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 190, 182, - 181, 180, 1003, 1003, 1003, 1003, 1003, 1003, 1021, 179, - 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, - 178, 1118, 1118, 1118, 1118, 1118, 1118, 1003, 1003, 1003, - 1003, 1003, 1003, 1022, 177, 1022, 1022, 1022, 1022, 1022, - 1022, 1022, 1022, 1022, 1022, 1023, 175, 1023, 1023, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1026, 1118, 1026, - 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 174, - 173, 1029, 172, 171, 170, 1029, 1031, 1031, 1031, 1031, - - 1031, 1031, 1031, 1031, 1031, 1031, 1035, 169, 1035, 1035, - 1035, 1035, 1035, 1035, 168, 163, 1026, 1027, 1029, 1027, - 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 159, - 158, 1058, 154, 1031, 151, 1058, 1224, 1224, 147, 1029, - 144, 141, 1224, 137, 133, 1035, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1027, 1028, 1058, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1038, - 132, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, - 1038, 1039, 131, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 130, 1074, 129, 1028, 1033, 1074, 1033, - - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1046, - 125, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, - 1046, 1074, 1051, 119, 117, 1057, 1051, 1057, 1057, 1057, - 1057, 1057, 1057, 113, 109, 108, 1033, 1034, 107, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1051, + 992, 993, 993, 993, 993, 993, 993, 993, 993, 993, + 993, 993, 1116, 1216, 1216, 410, 1116, 957, 958, 1216, + 958, 958, 958, 958, 958, 958, 958, 958, 958, 958, + 1013, 409, 397, 396, 1013, 1013, 1013, 1013, 1014, 1116, + 395, 394, 1014, 1014, 1014, 1014, 1021, 1021, 1021, 1021, + 1021, 1021, 1021, 1021, 1021, 1021, 393, 958, 959, 392, + + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 1015, 391, 1237, 1237, 1015, 1015, 1015, 1015, 1237, 1135, + 1135, 1016, 1135, 1135, 1013, 1016, 1016, 1016, 1016, 1239, + 1239, 390, 1014, 1240, 1240, 1239, 389, 959, 968, 1240, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + 1017, 388, 387, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 386, 1015, 1019, 385, 1241, 1241, 1019, + 1019, 1019, 1019, 1241, 384, 1016, 381, 968, 969, 375, + 969, 969, 969, 969, 969, 969, 969, 969, 969, 969, + 1023, 373, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + + 1023, 1023, 1024, 372, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 371, 370, 369, 969, 983, 1019, + 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, + 983, 986, 368, 986, 986, 986, 986, 986, 986, 986, + 986, 986, 986, 986, 367, 366, 365, 986, 986, 986, + 986, 986, 986, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1035, 364, 1035, 1035, 1035, 1035, 1035, + 1035, 363, 986, 986, 986, 986, 986, 986, 989, 989, + 989, 989, 989, 989, 989, 989, 989, 989, 362, 361, + 1031, 360, 989, 989, 989, 989, 989, 989, 1020, 1245, + + 1245, 1020, 1035, 1246, 1246, 1245, 357, 1020, 1020, 1246, + 1260, 1020, 346, 1260, 342, 1260, 341, 989, 989, 989, + 989, 989, 989, 1247, 1247, 1020, 1020, 1020, 1033, 1247, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 340, 339, 1037, 335, 334, 1044, 1037, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1033, 1034, 1037, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1096, 333, 1096, 1096, 1096, 1096, 1096, 1096, 332, 1045, + 1037, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + + 1045, 1152, 1152, 1152, 1152, 1152, 1152, 1034, 1041, 331, + 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, + 1046, 330, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, + 1046, 1046, 1055, 328, 1055, 1055, 1055, 1055, 1055, 1055, + 1250, 1250, 327, 326, 1055, 325, 1250, 1041, 1042, 324, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, + 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, + 1059, 323, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, + 1059, 1059, 322, 1251, 1251, 321, 320, 1042, 1043, 1251, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 319, 1252, 1252, 318, 317, 1043, 1053, 1252, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, - 1055, 106, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, - 1055, 1055, 1051, 105, 101, 1056, 1034, 1056, 1056, 1056, - 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1059, 1059, 1059, - 1059, 1059, 1059, 1059, 1059, 1059, 1059, 88, 1063, 81, - - 1063, 1063, 1063, 1063, 1063, 1063, 74, 73, 69, 68, - 67, 1064, 62, 60, 1101, 1064, 1101, 1101, 1101, 1101, - 1101, 1101, 51, 50, 1059, 1061, 48, 1061, 1061, 1061, - 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1063, 1064, 1068, - 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, - 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1064, - 47, 41, 36, 30, 1061, 1062, 24, 1062, 1062, 1062, - 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1070, 1070, 1070, - 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1080, 23, 1080, - 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 20, - - 19, 0, 0, 0, 1062, 1065, 0, 1065, 1065, 1065, - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1081, 0, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, - 0, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, - 1082, 0, 0, 0, 1065, 1066, 0, 1066, 1066, 1066, - 1066, 1066, 1066, 1066, 1066, 1066, 1066, 0, 0, 0, - 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1090, 0, 1090, 1090, 1090, 1090, 1090, 1090, 0, 0, - 0, 0, 0, 0, 1066, 1067, 0, 1067, 1067, 1067, - 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1086, 1092, 1092, - - 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 0, 1090, - 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, - 0, 0, 0, 0, 1067, 1083, 0, 1083, 1083, 1083, - 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1097, 1097, 1097, - 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1099, 0, 1099, - 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 0, - 0, 0, 0, 0, 1083, 1084, 0, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1100, 0, 1100, - 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1102, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 0, - - 0, 0, 0, 0, 1084, 1085, 0, 1085, 1085, 1085, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 0, 1106, 0, - 1106, 1106, 1106, 1106, 1106, 1106, 1102, 1107, 1107, 1107, - 1107, 1107, 1107, 1107, 1107, 1107, 1107, 0, 1124, 1124, - 1124, 1124, 1124, 1124, 1085, 1088, 0, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1106, 0, 0, - 0, 0, 0, 0, 1107, 1108, 1108, 1108, 1108, 1108, - 1108, 1108, 1108, 1108, 1108, 1124, 0, 0, 0, 0, - 0, 0, 0, 0, 1088, 1089, 0, 1089, 1089, 1089, - 1089, 1089, 1089, 1089, 1089, 1089, 1089, 0, 0, 0, - - 0, 0, 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, - 1109, 1109, 1109, 1110, 1110, 1110, 1110, 1110, 1110, 1110, - 1110, 1110, 1110, 0, 1089, 1104, 0, 1104, 1104, 1104, - 1104, 1104, 1104, 1104, 1104, 1104, 1104, 0, 0, 0, - 1109, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, - 1111, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, - 1112, 0, 0, 0, 1104, 1105, 0, 1105, 1105, 1105, - 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1113, 1113, 1113, - 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1114, 1114, 1114, - 1114, 1114, 1114, 1114, 1114, 1114, 1114, 0, 0, 0, - - 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1114, 1115, 1115, 1115, 1115, 1115, - 1115, 1115, 1115, 1115, 1115, 1117, 1117, 1117, 1117, 1117, - 1117, 1117, 1117, 1117, 1117, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 0, 0, 0, 0, 0, - 0, 0, 1115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1117, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 1123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1123, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, + 1053, 1056, 316, 1056, 1056, 1056, 1056, 1056, 1056, 1056, + 1056, 1056, 1056, 314, 307, 306, 292, 1056, 1056, 1056, + 1056, 1056, 1056, 1068, 1069, 291, 289, 1068, 1069, 1073, + 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 288, + 287, 286, 1056, 1056, 1056, 1056, 1056, 1056, 285, 284, + 1068, 1069, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + + 1074, 1074, 1115, 278, 1115, 1115, 1115, 1115, 1115, 1115, + 274, 1068, 1069, 1075, 271, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1076, 269, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 267, 1077, + 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078, + 264, 1084, 263, 1078, 1091, 1084, 1091, 1091, 1091, 1091, + 1091, 1091, 1085, 1109, 1122, 1132, 1085, 1109, 1122, 1132, + 1179, 1179, 1179, 1179, 1179, 1179, 1078, 262, 1084, 1087, + 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1085, + 1109, 1122, 1132, 1091, 261, 260, 258, 1078, 1081, 1084, + + 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, + 1085, 1109, 1122, 257, 256, 255, 1087, 1092, 1092, 1092, + 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1111, 1111, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1081, 1082, 254, + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + 1094, 252, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, + 1094, 1094, 1095, 246, 1095, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 238, 234, 229, 1082, 1083, 228, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1102, 226, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, + + 1102, 1102, 1113, 222, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 217, 215, 210, 1083, 1089, 198, + 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, + 1114, 197, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 196, 1255, 1255, 195, 194, 1089, 1090, 1255, + 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, + 186, 1121, 185, 1121, 1121, 1121, 1121, 1121, 1121, 1117, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, - 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1256, 1256, 184, 1262, 1262, 183, 1256, 1090, 1119, 1262, + + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1121, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, - 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, - 1128, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, - - 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, - 1130, 1131, 0, 0, 1131, 0, 0, 0, 0, 1131, - 0, 1131, 1131, 1131, 0, 0, 1131, 1131, 1131, 1131, - 1131, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, - 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, - 1132, 1133, 0, 0, 1133, 0, 0, 1133, 0, 1133, - 0, 1133, 1133, 1133, 1133, 0, 1133, 1133, 1133, 1133, - 1133, 1134, 0, 0, 1134, 0, 0, 0, 0, 1134, - 0, 1134, 1134, 1134, 0, 0, 1134, 1134, 1134, 1134, - 1134, 1135, 0, 0, 1135, 1135, 1135, 0, 1135, 1135, - - 0, 1135, 1135, 1135, 0, 0, 1135, 1135, 1135, 1135, - 1135, 1137, 0, 0, 1137, 1137, 1137, 0, 1137, 1137, - 0, 1137, 1137, 1137, 0, 0, 1137, 1137, 1137, 1137, - 1137, 1138, 0, 0, 1138, 1138, 1138, 0, 1138, 1138, - 0, 1138, 1138, 1138, 0, 1138, 1138, 0, 1138, 1138, - 1138, 1140, 0, 0, 1140, 1140, 0, 0, 1140, 1140, - 0, 1140, 1140, 1140, 1140, 0, 1140, 1140, 1140, 1140, - 1140, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, - 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, - 1141, 1142, 1142, 0, 1142, 1142, 0, 1142, 1142, 1142, + 1128, 1267, 182, 181, 1267, 179, 1267, 1119, 1120, 178, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1138, 177, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1139, 176, 1139, 1139, 1139, 1139, 1139, 1139, + 1139, 1139, 1139, 1139, 175, 174, 173, 1120, 1123, 172, + 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, + 1140, 171, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, + + 1140, 1140, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, + 1144, 1144, 166, 1270, 1270, 162, 161, 1123, 1124, 1270, + 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 157, 1148, 154, 1148, 1148, 1148, 1148, 1148, 1148, 1144, + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1277, 1277, 150, 1280, 1280, 147, 1277, 1124, 1125, 1280, + 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1148, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + 1151, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, + 1155, 144, 140, 1282, 1282, 136, 135, 1125, 1141, 1282, + 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, + 1157, 134, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1158, 133, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 132, 131, 127, 1141, 1142, 121, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, - 1142, 1143, 0, 0, 1143, 0, 0, 1143, 0, 1143, - 0, 1143, 1143, 1143, 1143, 0, 1143, 1143, 1143, 1143, - 1143, 1144, 0, 0, 1144, 0, 0, 0, 0, 1144, - 0, 1144, 1144, 1144, 0, 1144, 1144, 1144, 1144, 1144, - 1144, 1145, 0, 0, 1145, 1145, 1145, 0, 1145, 1145, - 0, 1145, 1145, 1145, 0, 1145, 1145, 1145, 1145, 1145, - 1145, 1146, 0, 0, 0, 1146, 1146, 1146, 1146, 1146, + 1159, 119, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1160, + 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1164, 115, + 1164, 1164, 1164, 1164, 1164, 1164, 111, 1142, 1143, 110, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 109, 108, 107, 106, 102, 1160, 1165, 1165, 1165, 1165, + + 1165, 1165, 1165, 1165, 1165, 1165, 89, 1164, 82, 75, + 74, 70, 69, 68, 63, 61, 52, 1143, 1146, 51, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, - 1146, 1147, 0, 0, 1147, 0, 0, 0, 0, 1147, - - 0, 1147, 1147, 1147, 0, 0, 1147, 1147, 1147, 1147, - 1147, 1148, 0, 0, 1148, 0, 0, 1148, 0, 1148, - 0, 1148, 1148, 1148, 1148, 0, 1148, 1148, 1148, 1148, - 1148, 1149, 0, 0, 1149, 0, 0, 0, 0, 1149, - 0, 1149, 1149, 1149, 0, 0, 1149, 1149, 1149, 1149, - 1149, 1150, 0, 0, 1150, 1150, 1150, 0, 1150, 1150, - 0, 1150, 1150, 1150, 0, 0, 1150, 1150, 1150, 1150, - 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, - 1151, 1152, 1152, 0, 1152, 1152, 1152, 1152, 1152, 1152, - - 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, - 1152, 1153, 0, 0, 1153, 0, 0, 0, 0, 1153, - 0, 1153, 1153, 1153, 0, 0, 1153, 1153, 1153, 1153, - 1153, 1154, 0, 0, 1154, 0, 0, 0, 0, 1154, - 0, 1154, 1154, 1154, 0, 0, 1154, 1154, 1154, 1154, - 1154, 1155, 0, 0, 1155, 1155, 1155, 0, 1155, 1155, - 0, 1155, 1155, 1155, 0, 0, 1155, 1155, 1155, 1155, - 1155, 1156, 0, 0, 1156, 1156, 1156, 0, 1156, 1156, - 0, 1156, 1156, 1156, 0, 0, 1156, 1156, 1156, 1156, - 1156, 1159, 1159, 1159, 0, 0, 0, 0, 1159, 1160, - - 0, 0, 1160, 1160, 1160, 0, 1160, 1160, 0, 1160, - 1160, 1160, 0, 0, 1160, 1160, 1160, 1160, 1160, 1161, - 0, 0, 1161, 1161, 1161, 0, 1161, 1161, 0, 1161, - 1161, 1161, 0, 0, 1161, 1161, 1161, 1161, 1161, 1162, - 0, 0, 1162, 1162, 1162, 0, 1162, 1162, 0, 1162, - 1162, 1162, 0, 1162, 1162, 0, 1162, 1162, 1162, 1164, - 0, 0, 1164, 1164, 0, 0, 1164, 1164, 0, 1164, - 1164, 1164, 1164, 0, 1164, 1164, 1164, 1164, 1164, 1165, - 1165, 0, 1165, 1165, 0, 1165, 1165, 1165, 1165, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, - - 0, 0, 1166, 0, 0, 0, 0, 1166, 0, 1166, - 1166, 1166, 0, 0, 1166, 1166, 1166, 1166, 1166, 1167, - 0, 0, 1167, 0, 0, 0, 0, 1167, 0, 1167, - 1167, 1167, 0, 1167, 1167, 1167, 1167, 1167, 1167, 1168, - 0, 0, 1168, 1168, 0, 1168, 1168, 0, 0, 1168, - 1168, 1169, 0, 0, 1169, 1169, 1169, 0, 1169, 1169, - 0, 1169, 1169, 1169, 0, 1169, 1169, 1169, 1169, 1169, - 1169, 1171, 0, 0, 0, 1171, 1171, 1171, 1171, 1171, + 49, 48, 46, 1165, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 41, 36, 30, 1146, 1147, 24, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, + 23, 1166, 20, 19, 0, 0, 0, 0, 0, 0, + 0, 1167, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, + 1168, 1168, 0, 0, 0, 0, 0, 1147, 1162, 0, + + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, + 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170, + 0, 0, 0, 0, 0, 0, 0, 1162, 1163, 0, + 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1171, 1172, 0, 0, 1172, 0, 0, 0, 0, 1172, - - 0, 1172, 1172, 1172, 0, 0, 1172, 1172, 1172, 1172, - 1172, 1173, 0, 0, 1173, 0, 0, 0, 0, 1173, - 0, 1173, 1173, 1173, 0, 0, 1173, 1173, 1173, 1173, - 1173, 1174, 0, 0, 1174, 0, 0, 0, 0, 1174, - 0, 1174, 1174, 1174, 0, 0, 1174, 1174, 1174, 1174, - 1174, 1175, 0, 0, 1175, 1175, 1175, 0, 1175, 1175, - 0, 1175, 1175, 1175, 0, 0, 1175, 1175, 1175, 1175, - 1175, 1176, 0, 0, 1176, 1176, 1176, 0, 1176, 1176, - 0, 1176, 1176, 1176, 0, 0, 1176, 1176, 1176, 1176, - 1176, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, - 1177, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, - 1178, 1180, 1180, 1180, 0, 0, 0, 0, 1180, 1184, - 1184, 1184, 0, 0, 0, 0, 1184, 1185, 1185, 1185, + 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, + 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0, + 0, 1176, 1176, 1176, 1176, 1176, 1176, 1171, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1172, 1173, 1173, + + 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1175, 1175, + 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1182, + 1182, 1182, 1182, 1182, 1182, 1173, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1175, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1181, 1184, 1184, 1184, 1184, 1184, 1184, + 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, + + 1184, 1184, 1184, 1184, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, - 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1190, 1190, 1190, - 0, 0, 0, 0, 1190, 1191, 1191, 1191, 1191, 0, - 0, 0, 0, 1191, 1195, 1195, 1195, 0, 0, 0, - 0, 1195, 1196, 1196, 1196, 1196, 0, 0, 0, 0, - - 1196, 1199, 1199, 1199, 0, 0, 0, 0, 1199, 1200, - 1200, 1200, 1200, 0, 0, 0, 0, 1200, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1203, 0, - 0, 1203, 1203, 0, 1203, 1203, 0, 0, 1203, 1203, - 1205, 0, 1205, 1205, 0, 0, 0, 0, 1205, 1206, - 1206, 1206, 0, 0, 0, 0, 1206, 1207, 1207, 1207, - 1207, 0, 0, 0, 0, 1207, 1208, 1208, 1208, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1210, 0, 0, 1210, - - 1210, 0, 1210, 1210, 0, 0, 1210, 1210, 1211, 0, - 0, 1211, 0, 0, 0, 0, 1211, 0, 1211, 1211, - 1211, 0, 0, 1211, 1211, 1211, 1211, 1211, 1213, 0, - 1213, 1213, 0, 0, 0, 0, 1213, 1214, 1214, 1214, - 0, 0, 0, 0, 1214, 1215, 1215, 1215, 0, 0, - 0, 0, 0, 1215, 1216, 1216, 1216, 1216, 1216, 1216, - 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, - 1216, 1216, 1216, 1216, 1217, 1217, 0, 1217, 1217, 1217, - 1217, 0, 1217, 0, 1217, 1217, 1217, 0, 0, 1217, - 1217, 1217, 1217, 1217, 1218, 1218, 0, 1218, 1218, 1218, - - 1218, 0, 1218, 0, 1218, 1218, 1218, 0, 0, 1218, - 1218, 1218, 1218, 1218, 1220, 0, 1220, 1220, 0, 0, - 0, 0, 1220, 1223, 0, 1223, 1223, 0, 0, 0, - 0, 1223, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, - 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, - 1226, 1226, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, + 1185, 1185, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, + 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1188, 1188, 1188, 1188, 1189, 0, 0, 1189, 0, 0, + 0, 0, 1189, 0, 1189, 1189, 1189, 0, 0, 1189, + + 1189, 1189, 1189, 1189, 1190, 1190, 1190, 1190, 1190, 1190, + 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, + 1190, 1190, 1190, 1190, 1191, 0, 0, 1191, 0, 0, + 1191, 0, 1191, 0, 1191, 1191, 1191, 1191, 0, 1191, + 1191, 1191, 1191, 1191, 1192, 0, 0, 1192, 0, 0, + 0, 0, 1192, 0, 1192, 1192, 1192, 0, 0, 1192, + 1192, 1192, 1192, 1192, 1193, 0, 0, 1193, 1193, 1193, + 0, 1193, 1193, 0, 1193, 1193, 1193, 0, 0, 1193, + 1193, 1193, 1193, 1193, 1195, 0, 0, 1195, 1195, 1195, + 0, 1195, 1195, 0, 1195, 1195, 1195, 0, 0, 1195, + + 1195, 1195, 1195, 1195, 1196, 0, 0, 1196, 1196, 1196, + 0, 1196, 1196, 0, 1196, 1196, 1196, 0, 1196, 1196, + 0, 1196, 1196, 1196, 1198, 0, 0, 1198, 1198, 0, + 0, 1198, 1198, 0, 1198, 1198, 1198, 1198, 0, 1198, + 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199, 1199, 1199, + 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, + 1199, 1199, 1199, 1199, 1200, 1200, 0, 1200, 1200, 0, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1201, 0, 0, 1201, 0, 0, + 1201, 0, 1201, 0, 1201, 1201, 1201, 1201, 0, 1201, + + 1201, 1201, 1201, 1201, 1202, 0, 0, 1202, 0, 0, + 0, 0, 1202, 0, 1202, 1202, 1202, 0, 1202, 1202, + 1202, 1202, 1202, 1202, 1203, 0, 0, 1203, 1203, 1203, + 0, 1203, 1203, 0, 1203, 1203, 1203, 0, 1203, 1203, + 1203, 1203, 1203, 1203, 1204, 0, 0, 0, 1204, 1204, + 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, + 1204, 1204, 1204, 1204, 1205, 0, 0, 1205, 0, 0, + 0, 0, 1205, 0, 1205, 1205, 1205, 0, 0, 1205, + 1205, 1205, 1205, 1205, 1206, 0, 0, 1206, 0, 0, + 1206, 0, 1206, 0, 1206, 1206, 1206, 1206, 0, 1206, + + 1206, 1206, 1206, 1206, 1207, 0, 0, 1207, 0, 0, + 0, 0, 1207, 0, 1207, 1207, 1207, 0, 0, 1207, + 1207, 1207, 1207, 1207, 1208, 0, 0, 1208, 1208, 1208, + 0, 1208, 1208, 0, 1208, 1208, 1208, 0, 0, 1208, + 1208, 1208, 1208, 1208, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, + 1209, 1209, 1209, 1209, 1210, 1210, 0, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1211, 0, 0, 1211, 0, 0, + 0, 0, 1211, 0, 1211, 1211, 1211, 0, 0, 1211, + + 1211, 1211, 1211, 1211, 1212, 0, 0, 1212, 0, 0, + 0, 0, 1212, 0, 1212, 1212, 1212, 0, 0, 1212, + 1212, 1212, 1212, 1212, 1213, 0, 0, 1213, 1213, 1213, + 0, 1213, 1213, 0, 1213, 1213, 1213, 0, 0, 1213, + 1213, 1213, 1213, 1213, 1214, 0, 0, 1214, 1214, 1214, + 0, 1214, 1214, 0, 1214, 1214, 1214, 0, 0, 1214, + 1214, 1214, 1214, 1214, 1217, 1217, 1217, 0, 0, 0, + 0, 1217, 1218, 0, 0, 1218, 1218, 1218, 0, 1218, + 1218, 0, 1218, 1218, 1218, 0, 0, 1218, 1218, 1218, + 1218, 1218, 1219, 0, 0, 1219, 1219, 1219, 0, 1219, + + 1219, 0, 1219, 1219, 1219, 0, 0, 1219, 1219, 1219, + 1219, 1219, 1220, 0, 0, 1220, 1220, 1220, 0, 1220, + 1220, 0, 1220, 1220, 1220, 0, 1220, 1220, 0, 1220, + 1220, 1220, 1222, 0, 0, 1222, 1222, 0, 0, 1222, + 1222, 0, 1222, 1222, 1222, 1222, 0, 1222, 1222, 1222, + 1222, 1222, 1223, 1223, 0, 1223, 1223, 0, 1223, 1223, + 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, + 1223, 1223, 1224, 0, 0, 1224, 0, 0, 0, 0, + 1224, 0, 1224, 1224, 1224, 0, 0, 1224, 1224, 1224, + 1224, 1224, 1225, 0, 0, 1225, 0, 0, 0, 0, + + 1225, 0, 1225, 1225, 1225, 0, 1225, 1225, 1225, 1225, + 1225, 1225, 1226, 0, 0, 1226, 1226, 0, 1226, 1226, + 0, 0, 1226, 1226, 1227, 0, 0, 1227, 1227, 1227, + 0, 1227, 1227, 0, 1227, 1227, 1227, 0, 1227, 1227, + 1227, 1227, 1227, 1227, 1229, 0, 0, 0, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, + 1229, 1229, 1229, 1229, 1230, 0, 0, 1230, 0, 0, + 0, 0, 1230, 0, 1230, 1230, 1230, 0, 0, 1230, + 1230, 1230, 1230, 1230, 1231, 0, 0, 1231, 0, 0, + 0, 0, 1231, 0, 1231, 1231, 1231, 0, 0, 1231, + + 1231, 1231, 1231, 1231, 1232, 0, 0, 1232, 0, 0, + 0, 0, 1232, 0, 1232, 1232, 1232, 0, 0, 1232, + 1232, 1232, 1232, 1232, 1233, 0, 0, 1233, 1233, 1233, + 0, 1233, 1233, 0, 1233, 1233, 1233, 0, 0, 1233, + 1233, 1233, 1233, 1233, 1234, 0, 0, 1234, 1234, 1234, + 0, 1234, 1234, 0, 1234, 1234, 1234, 0, 0, 1234, + 1234, 1234, 1234, 1234, 1235, 1235, 1235, 1235, 1235, 1235, + 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, + 1235, 1235, 1235, 1235, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + + 1236, 1236, 1236, 1236, 1238, 1238, 1238, 0, 0, 0, + 0, 1238, 1242, 1242, 1242, 0, 0, 0, 0, 1242, + 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, + 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, + 1248, 1248, 1248, 0, 0, 0, 0, 1248, 1249, 1249, + 1249, 1249, 0, 0, 0, 0, 1249, 1253, 1253, 1253, + 0, 0, 0, 0, 1253, 1254, 1254, 1254, 1254, 0, + 0, 0, 0, 1254, 1257, 1257, 1257, 0, 0, 0, + 0, 1257, 1258, 1258, 1258, 1258, 0, 0, 0, 0, + 1258, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1261, 0, 0, 1261, 1261, 0, 1261, 1261, 0, + 0, 1261, 1261, 1263, 0, 1263, 1263, 0, 0, 0, + 0, 1263, 1264, 1264, 1264, 0, 0, 0, 0, 1264, + 1265, 1265, 1265, 1265, 0, 0, 0, 0, 1265, 1266, + 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, + 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1268, + 0, 0, 1268, 1268, 0, 1268, 1268, 0, 0, 1268, + 1268, 1269, 0, 0, 1269, 0, 0, 0, 0, 1269, + 0, 1269, 1269, 1269, 0, 0, 1269, 1269, 1269, 1269, + + 1269, 1271, 0, 1271, 1271, 0, 0, 0, 0, 1271, + 1272, 1272, 1272, 0, 0, 0, 0, 1272, 1273, 1273, + 1273, 0, 0, 0, 0, 0, 1273, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, + 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1275, 1275, 0, + 1275, 1275, 1275, 1275, 0, 1275, 0, 1275, 1275, 1275, + 0, 0, 1275, 1275, 1275, 1275, 1275, 1276, 1276, 0, + 1276, 1276, 1276, 1276, 0, 1276, 0, 1276, 1276, 1276, + 0, 0, 1276, 1276, 1276, 1276, 1276, 1278, 0, 1278, + 1278, 0, 0, 0, 0, 1278, 1281, 0, 1281, 1281, + + 0, 0, 0, 0, 1281, 1284, 1284, 1284, 1284, 1284, + 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, + 1284, 1284, 1284, 1284, 1284, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183 - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 1125, 1125 } ; static yy_state_type yy_last_accepting_state; @@ -2711,7 +2723,7 @@ char *sudoerstext; /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2020 + * Copyright (c) 1996, 1998-2005, 2007-2021 * Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any @@ -2809,7 +2821,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print; -#line 2807 "toke.c" +#line 2819 "toke.c" #define INITIAL 0 #define GOTDEFS 1 @@ -3031,7 +3043,7 @@ YY_DECL { #line 122 "toke.l" -#line 3029 "toke.c" +#line 3041 "toke.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -3059,13 +3071,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1126 ) + if ( yy_current_state >= 1184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 8253 ); + while ( yy_base[yy_current_state] != 8226 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3510,86 +3522,102 @@ case 30: YY_RULE_SETUP #line 449 "toke.l" { - LEXTRACE("SETENV "); - return SETENV; + LEXTRACE("INTERCEPT "); + return INTERCEPT; } YY_BREAK case 31: YY_RULE_SETUP #line 454 "toke.l" { - LEXTRACE("NOSETENV "); - return NOSETENV; + LEXTRACE("NOINTERCEPT "); + return NOINTERCEPT; } YY_BREAK case 32: YY_RULE_SETUP #line 459 "toke.l" { - LEXTRACE("LOG_OUTPUT "); - return LOG_OUTPUT; + LEXTRACE("SETENV "); + return SETENV; } YY_BREAK case 33: YY_RULE_SETUP #line 464 "toke.l" { - LEXTRACE("NOLOG_OUTPUT "); - return NOLOG_OUTPUT; + LEXTRACE("NOSETENV "); + return NOSETENV; } YY_BREAK case 34: YY_RULE_SETUP #line 469 "toke.l" { - LEXTRACE("LOG_INPUT "); - return LOG_INPUT; + LEXTRACE("LOG_OUTPUT "); + return LOG_OUTPUT; } YY_BREAK case 35: YY_RULE_SETUP #line 474 "toke.l" { - LEXTRACE("NOLOG_INPUT "); - return NOLOG_INPUT; + LEXTRACE("NOLOG_OUTPUT "); + return NOLOG_OUTPUT; } YY_BREAK case 36: YY_RULE_SETUP #line 479 "toke.l" { - LEXTRACE("MAIL "); - return MAIL; + LEXTRACE("LOG_INPUT "); + return LOG_INPUT; } YY_BREAK case 37: YY_RULE_SETUP #line 484 "toke.l" { - LEXTRACE("NOMAIL "); - return NOMAIL; + LEXTRACE("NOLOG_INPUT "); + return NOLOG_INPUT; } YY_BREAK case 38: YY_RULE_SETUP #line 489 "toke.l" { - LEXTRACE("FOLLOW "); - return FOLLOWLNK; + LEXTRACE("MAIL "); + return MAIL; } YY_BREAK case 39: YY_RULE_SETUP #line 494 "toke.l" { - LEXTRACE("NOFOLLOW "); - return NOFOLLOWLNK; + LEXTRACE("NOMAIL "); + return NOMAIL; } YY_BREAK case 40: YY_RULE_SETUP #line 499 "toke.l" { + LEXTRACE("FOLLOW "); + return FOLLOWLNK; + } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 504 "toke.l" +{ + LEXTRACE("NOFOLLOW "); + return NOFOLLOWLNK; + } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 509 "toke.l" +{ if (sudoerstext[0] == '+') sudoers_errstr = N_("empty netgroup"); else @@ -3598,9 +3626,9 @@ YY_RULE_SETUP return ERROR; } YY_BREAK -case 41: +case 43: YY_RULE_SETUP -#line 508 "toke.l" +#line 518 "toke.l" { /* netgroup */ if (!fill(sudoerstext, sudoersleng)) @@ -3609,9 +3637,9 @@ YY_RULE_SETUP return NETGROUP; } YY_BREAK -case 42: +case 44: YY_RULE_SETUP -#line 516 "toke.l" +#line 526 "toke.l" { /* group */ if (!fill(sudoerstext, sudoersleng)) @@ -3620,9 +3648,9 @@ YY_RULE_SETUP return USERGROUP; } YY_BREAK -case 43: +case 45: YY_RULE_SETUP -#line 524 "toke.l" +#line 534 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -3630,9 +3658,9 @@ YY_RULE_SETUP return NTWKADDR; } YY_BREAK -case 44: +case 46: YY_RULE_SETUP -#line 531 "toke.l" +#line 541 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -3640,9 +3668,9 @@ YY_RULE_SETUP return NTWKADDR; } YY_BREAK -case 45: +case 47: YY_RULE_SETUP -#line 538 "toke.l" +#line 548 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoers_errstr = N_("invalid IPv6 address"); @@ -3655,9 +3683,9 @@ YY_RULE_SETUP return NTWKADDR; } YY_BREAK -case 46: +case 48: YY_RULE_SETUP -#line 550 "toke.l" +#line 560 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoers_errstr = N_("invalid IPv6 address"); @@ -3670,42 +3698,42 @@ YY_RULE_SETUP return NTWKADDR; } YY_BREAK -case 47: +case 49: YY_RULE_SETUP -#line 562 "toke.l" +#line 572 "toke.l" { LEXTRACE("ALL "); return ALL; } YY_BREAK -case 48: +case 50: YY_RULE_SETUP -#line 568 "toke.l" +#line 578 "toke.l" { LEXTRACE("CMND_TIMEOUT "); return CMND_TIMEOUT; } YY_BREAK -case 49: +case 51: YY_RULE_SETUP -#line 573 "toke.l" +#line 583 "toke.l" { LEXTRACE("NOTBEFORE "); return NOTBEFORE; } YY_BREAK -case 50: +case 52: YY_RULE_SETUP -#line 578 "toke.l" +#line 588 "toke.l" { LEXTRACE("NOTAFTER "); return NOTAFTER; } YY_BREAK -case 51: +case 53: YY_RULE_SETUP -#line 583 "toke.l" +#line 593 "toke.l" { LEXTRACE("CWD "); prev_state = YY_START; @@ -3713,9 +3741,9 @@ YY_RULE_SETUP return CWD; } YY_BREAK -case 52: +case 54: YY_RULE_SETUP -#line 590 "toke.l" +#line 600 "toke.l" { LEXTRACE("CHROOT "); prev_state = YY_START; @@ -3723,9 +3751,9 @@ YY_RULE_SETUP return CHROOT; } YY_BREAK -case 53: +case 55: YY_RULE_SETUP -#line 597 "toke.l" +#line 607 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("ROLE "); @@ -3735,9 +3763,9 @@ YY_RULE_SETUP #endif } YY_BREAK -case 54: +case 56: YY_RULE_SETUP -#line 606 "toke.l" +#line 616 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("TYPE "); @@ -3747,9 +3775,9 @@ YY_RULE_SETUP #endif } YY_BREAK -case 55: +case 57: YY_RULE_SETUP -#line 614 "toke.l" +#line 624 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("PRIVS "); @@ -3759,9 +3787,9 @@ YY_RULE_SETUP #endif } YY_BREAK -case 56: +case 58: YY_RULE_SETUP -#line 623 "toke.l" +#line 633 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("LIMITPRIVS "); @@ -3771,9 +3799,9 @@ YY_RULE_SETUP #endif } YY_BREAK -case 57: +case 59: YY_RULE_SETUP -#line 632 "toke.l" +#line 642 "toke.l" { got_alias: if (!fill(sudoerstext, sudoersleng)) @@ -3782,9 +3810,9 @@ YY_RULE_SETUP return ALIAS; } YY_BREAK -case 58: +case 60: YY_RULE_SETUP -#line 640 "toke.l" +#line 650 "toke.l" { /* XXX - no way to specify digest for command */ /* no command args allowed for Defaults!/path */ @@ -3794,9 +3822,9 @@ YY_RULE_SETUP return COMMAND; } YY_BREAK -case 59: +case 61: YY_RULE_SETUP -#line 649 "toke.l" +#line 659 "toke.l" { digest_type = SUDO_DIGEST_SHA224; BEGIN WANTDIGEST; @@ -3804,9 +3832,9 @@ YY_RULE_SETUP return SHA224_TOK; } YY_BREAK -case 60: +case 62: YY_RULE_SETUP -#line 656 "toke.l" +#line 666 "toke.l" { digest_type = SUDO_DIGEST_SHA256; BEGIN WANTDIGEST; @@ -3814,9 +3842,9 @@ YY_RULE_SETUP return SHA256_TOK; } YY_BREAK -case 61: +case 63: YY_RULE_SETUP -#line 663 "toke.l" +#line 673 "toke.l" { digest_type = SUDO_DIGEST_SHA384; BEGIN WANTDIGEST; @@ -3824,9 +3852,9 @@ YY_RULE_SETUP return SHA384_TOK; } YY_BREAK -case 62: +case 64: YY_RULE_SETUP -#line 670 "toke.l" +#line 680 "toke.l" { digest_type = SUDO_DIGEST_SHA512; BEGIN WANTDIGEST; @@ -3834,9 +3862,9 @@ YY_RULE_SETUP return SHA512_TOK; } YY_BREAK -case 63: +case 65: YY_RULE_SETUP -#line 677 "toke.l" +#line 687 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -3844,9 +3872,9 @@ YY_RULE_SETUP yyterminate(); } /* sudo -e */ YY_BREAK -case 64: +case 66: YY_RULE_SETUP -#line 684 "toke.l" +#line 694 "toke.l" { BEGIN prev_state; if (!fill(sudoerstext, sudoersleng)) @@ -3855,9 +3883,9 @@ YY_RULE_SETUP return WORD; } YY_BREAK -case 65: +case 67: YY_RULE_SETUP -#line 692 "toke.l" +#line 702 "toke.l" { /* directories can't have args... */ if (sudoerstext[sudoersleng - 1] == '/') { @@ -3872,9 +3900,9 @@ YY_RULE_SETUP yyterminate(); } /* a pathname */ YY_BREAK -case 66: +case 68: YY_RULE_SETUP -#line 706 "toke.l" +#line 716 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3882,9 +3910,9 @@ YY_RULE_SETUP BEGIN INSTR; } YY_BREAK -case 67: +case 69: YY_RULE_SETUP -#line 713 "toke.l" +#line 723 "toke.l" { /* a word */ if (!fill(sudoerstext, sudoersleng)) @@ -3894,9 +3922,9 @@ YY_RULE_SETUP } YY_BREAK -case 68: +case 70: YY_RULE_SETUP -#line 722 "toke.l" +#line 732 "toke.l" { /* include file/directory */ if (!fill(sudoerstext, sudoersleng)) @@ -3906,9 +3934,9 @@ YY_RULE_SETUP return WORD; } YY_BREAK -case 69: +case 71: YY_RULE_SETUP -#line 731 "toke.l" +#line 741 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3917,49 +3945,49 @@ YY_RULE_SETUP } YY_BREAK -case 70: +case 72: YY_RULE_SETUP -#line 739 "toke.l" +#line 749 "toke.l" { LEXTRACE("( "); return '('; } YY_BREAK -case 71: +case 73: YY_RULE_SETUP -#line 744 "toke.l" +#line 754 "toke.l" { LEXTRACE(") "); return ')'; } YY_BREAK -case 72: +case 74: YY_RULE_SETUP -#line 749 "toke.l" +#line 759 "toke.l" { LEXTRACE(", "); return ','; } /* return ',' */ YY_BREAK -case 73: +case 75: YY_RULE_SETUP -#line 754 "toke.l" +#line 764 "toke.l" { LEXTRACE("= "); return '='; } /* return '=' */ YY_BREAK -case 74: +case 76: YY_RULE_SETUP -#line 759 "toke.l" +#line 769 "toke.l" { LEXTRACE(": "); return ':'; } /* return ':' */ YY_BREAK -case 75: +case 77: YY_RULE_SETUP -#line 764 "toke.l" +#line 774 "toke.l" { if (sudoersleng & 1) { LEXTRACE("!"); @@ -3967,10 +3995,10 @@ YY_RULE_SETUP } } YY_BREAK -case 76: -/* rule 76 can match eol */ +case 78: +/* rule 78 can match eol */ YY_RULE_SETUP -#line 771 "toke.l" +#line 781 "toke.l" { if (YY_START == INSTR) { /* throw away old string */ @@ -3990,27 +4018,27 @@ YY_RULE_SETUP return '\n'; } /* return newline */ YY_BREAK -case 77: +case 79: YY_RULE_SETUP -#line 790 "toke.l" +#line 800 "toke.l" { /* throw away space/tabs */ sawspace = true; /* but remember for fill_args */ } YY_BREAK -case 78: -/* rule 78 can match eol */ +case 80: +/* rule 80 can match eol */ YY_RULE_SETUP -#line 794 "toke.l" +#line 804 "toke.l" { sawspace = true; /* remember for fill_args */ sudolineno++; continued = true; } /* throw away EOL after \ */ YY_BREAK -case 79: -/* rule 79 can match eol */ +case 81: +/* rule 81 can match eol */ YY_RULE_SETUP -#line 800 "toke.l" +#line 810 "toke.l" { if (sudoerstext[sudoersleng - 1] == '\n') { /* comment ending in a newline */ @@ -4026,9 +4054,9 @@ YY_RULE_SETUP return '\n'; } /* comment, not uid/gid */ YY_BREAK -case 80: +case 82: YY_RULE_SETUP -#line 815 "toke.l" +#line 825 "toke.l" { LEXTRACE("NOMATCH "); return NOMATCH; @@ -4043,18 +4071,18 @@ case YY_STATE_EOF(INSTR): case YY_STATE_EOF(WANTDIGEST): case YY_STATE_EOF(GOTINC): case YY_STATE_EOF(EXPECTPATH): -#line 820 "toke.l" +#line 830 "toke.l" { if (!pop_include()) yyterminate(); } YY_BREAK -case 81: +case 83: YY_RULE_SETUP -#line 825 "toke.l" +#line 835 "toke.l" ECHO; YY_BREAK -#line 4052 "toke.c" +#line 4080 "toke.c" case YY_END_OF_BUFFER: { @@ -4348,7 +4376,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1126 ) + if ( yy_current_state >= 1184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -4376,11 +4404,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1126 ) + if ( yy_current_state >= 1184 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1125); + yy_is_jam = (yy_current_state == 1183); return yy_is_jam ? 0 : yy_current_state; } @@ -5015,7 +5043,7 @@ void sudoersfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 825 "toke.l" +#line 835 "toke.l" struct path_list { diff --git a/plugins/sudoers/toke.l b/plugins/sudoers/toke.l index d4a5a95af..7f381d526 100644 --- a/plugins/sudoers/toke.l +++ b/plugins/sudoers/toke.l @@ -2,7 +2,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2020 + * Copyright (c) 1996, 1998-2005, 2007-2021 * Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any @@ -446,6 +446,16 @@ EXEC[[:blank:]]*: { return EXEC; } +INTERCEPT[[:blank:]]*: { + LEXTRACE("INTERCEPT "); + return INTERCEPT; + } + +NOINTERCEPT[[:blank:]]*: { + LEXTRACE("NOINTERCEPT "); + return NOINTERCEPT; + } + SETENV[[:blank:]]*: { LEXTRACE("SETENV "); return SETENV; diff --git a/plugins/sudoers/tsdump.c b/plugins/sudoers/tsdump.c index a46a27c05..8abe667fa 100644 --- a/plugins/sudoers/tsdump.c +++ b/plugins/sudoers/tsdump.c @@ -116,7 +116,7 @@ main(int argc, char *argv[]) if (user == NULL) { if ((pw = getpwuid(geteuid())) == NULL) - sudo_fatalx(U_("unknown uid: %u"), (unsigned int)geteuid()); + sudo_fatalx(U_("unknown uid %u"), (unsigned int)geteuid()); user = pw->pw_name; } if (asprintf(&fname, "%s/%s", _PATH_SUDO_TIMEDIR, user) == -1) diff --git a/plugins/sudoers/visudo.c b/plugins/sudoers/visudo.c index 04bbf468c..a2b8b3877 100644 --- a/plugins/sudoers/visudo.c +++ b/plugins/sudoers/visudo.c @@ -1015,6 +1015,7 @@ new_sudoers(const char *path, bool doedit) bad: if (entry->fd != -1) close(entry->fd); + free(entry->path); free(entry); debug_return_ptr(NULL); } Binary files differ@@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-03 21:24+01:00\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-29 21:52+02:00\n" "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" "Language: cs\n" @@ -32,75 +32,78 @@ msgid "unable to restore registry" msgstr "registr nelze obnovit" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "nelze alokovat paměť" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%s nelze otevÅ™Ãt" @@ -110,7 +113,7 @@ msgstr "%s nelze otevÅ™Ãt" msgid "unable to mkdir %s" msgstr "adresář %s nelze vytvoÅ™it" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "nelze zÃskat údaje o %s" @@ -125,7 +128,7 @@ msgid "Unknown signal" msgstr "Neznámý signál" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "neplatná hodnota" @@ -137,43 +140,43 @@ msgstr "hodnota je pÅ™ÃliÅ¡ velká" msgid "value too small" msgstr "hodnota je pÅ™ÃliÅ¡ malá" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "neplatná hodnota Path „%s“ v %s, řádek %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "neplatná hodnota pro %s „%s“ v %s, řádek %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "nepodporovaný zdroj skupin „%s“ v %s, řádek %u" # This is about maximal GID. English text "max groups" is wrong. -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "neplatné maximum skupin „%s“ v %s, řádek %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s nenà obyÄejný soubor" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s je vlastnÄ›n UID %u, avÅ¡ak UID by mÄ›lo být %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s je zapisovatelný pro vÅ¡echny" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s je zapisovatelný pro skupinu" @@ -193,12 +196,12 @@ msgstr "%s nebude pÅ™epsáno" msgid "unable to read from %s" msgstr "z %s nelze ÄÃst" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "do %s nelze zapsat" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: nejedná se o obyÄejný soubor" @@ -212,50 +215,112 @@ msgstr "%s: chybná práva souboru: 0%o" msgid "unable to restore current working directory" msgstr "souÄasný pracovnà adresář nelze obnovit" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "neznámá pÅ™ihlaÅ¡ovacà tÅ™Ãda %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "nelze nastavit kontext uživatele" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "nelze nastavit prioritu procesu" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "koÅ™enový adresář nelze zmÄ›nit na %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "nelze zmÄ›nit UID na (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "pracovnà adresář nelze zmÄ›nit na %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "zaÄÃná se od %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "obsluhu pro signál %d nelze nastavit" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "z PRIV_LIMIT nelze odstranit PRIV_PROC_EXEC" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "zachycený deskriptor souboru nelze zduplikovat" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "neplatný požadavek PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "pÅ™Ãkaz zamÃtnut politikou" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "chyba modulu s politikou" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "zpráva klienta je pÅ™ÃliÅ¡ dlouhá: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neÄekaná hodnota type_case %d v %s od %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "událost nelze pÅ™idat do fronty" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "zpráva serveru je pÅ™ÃliÅ¡ dlouhá: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: chybà hlaviÄka zprávy" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: oÄekávaný typ zprávy %d, obdržen %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "chyba pÅ™i Ätenà z dvojice socketů" @@ -265,204 +330,180 @@ msgstr "chyba pÅ™i Ätenà z dvojice socketů" msgid "unexpected reply type on backchannel: %d" msgstr "neoÄekávaný druh odpovÄ›di na zpÄ›tném kanálu: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "událost nelze pÅ™idat do fronty" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "Å™Ãdicà terminál nelze nastavit" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "nelze vytvoÅ™it rouru" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "od rodiÄe nelze pÅ™ijmout zprávu" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "nelze vytvoÅ™it potomka" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "nelze obnovit znaÄku TTY" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "%s nelze spustit" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "modul s politikami zruÅ¡il inicializaci relace" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "nelze vytvoÅ™it sockety" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "chyba ve smyÄce s událostmi" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "nelze obnovit obsluhu signálu %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "nelze alokovat PTY" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "chyba vstupnÄ›-výstupnÃho modulu" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "pÅ™Ãkaz zamÃtnut vstupnÄ›-výstupnÃm modulem" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "chyba pozastavovánà protokolu" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "chyba pÅ™i mÄ›nÄ›nà velikosti okna" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "nelze vytvoÅ™it sockety" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "dohlÞejÃcÃmu procesu nelze odeslat zprávu" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "chyba v %s na řádku %d pÅ™i zavádÄ›nà modulu „%s“" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s musà být vlastnÄ›n UID %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s musà být zapisovatelný jen vlastnÃkem" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ignoruje je opakovaný modul „%s“ v %s na řádku %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "%s nelze zavést: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "v %s nelze nalézt symbol „%s“" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "nesluÄitelná hlavnà verze modulu %d (oÄekáváno %d) nalezena v %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ignoruje se modul politiky „%s“ v %s na řádku %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "lze zadat pouze jeden modul s politikou" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "v %2$s nalezen neznámý druh modulu %1$d" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "modul s politikou %s neobsahuje metodu check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "vnitÅ™nà chyba, pÅ™eteÄenà v %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "neplatný název promÄ›nné prostÅ™edÃ: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argument u -C musà být ÄÃslo vÄ›tÅ¡Ã nebo rovno 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "nesmÃte zadávat pÅ™epÃnaÄe -i a -s spolu" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "nesmÃte zadávat pÅ™epÃnaÄe -i a -E spolu" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "pÅ™epÃnaÄ -E nenà platný v režimu úprav" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "v režimu úprav nesmÃte zadávat promÄ›nné prostÅ™edÃ" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "pÅ™epÃnaÄ -U smà být použit jen s pÅ™epÃnaÄem -l" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "pÅ™epÃnaÄe -A a -S smà nesmà být použity spolu" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "na této platformÄ› nenà sudoedit podporován" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Smà být zadán pouze jeden z pÅ™epÃnaÄů -e, -h, -i, -K, -l, -s, -v nebo -V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s – upravà soubory jako jiný uživatel\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s – vykoná pÅ™Ãkaz jako jiný uživatel\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "PÅ™epÃnaÄe:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "dotazuje se na heslo prostÅ™ednictvÃm pomocného programu" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "použije zadaný druh BSD autentizace" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "spustà pÅ™Ãkaz na pozadÃ" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "pÅ™i výzvÄ› vydá zvukové znamenÃ" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "uzavÅ™e vÅ¡echny deskriptory souboru >= ÄÃslu" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "spustà pÅ™Ãkaz se zadanou pÅ™ihlaÅ¡ovacà tÅ™Ãdou BSD" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "zmÄ›nà pracovnà adresář pÅ™ed spuÅ¡tÄ›nÃm pÅ™Ãkazu" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "pÅ™i spuÅ¡tÄ›nà pÅ™Ãkazu zachová uživatelské prostÅ™edÃ" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "zachová urÄité promÄ›nné prostÅ™edÃ" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "mÃsto spuÅ¡tÄ›nà pÅ™Ãkazu upravà soubory" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "spustà pÅ™Ãkaz jako skupina urÄenà názvem nebo ID" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "nastavà promÄ›nnou HOME na domovský adresář uživatele" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "zobrazà nápovÄ›du a skonÄÃ" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "spustà pÅ™Ãkaz na stroji (je-li podporováno modulem)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "spustà pÅ™ihlaÅ¡ovacà shell jako cÃlový uživatel; pÅ™Ãkaz lze rovněž zadat" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "úplnÄ› odstranà soubor s Äasovými údaji" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "zneplatnà soubor s Äasovými údaji" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "vypÃÅ¡e oprávnÄ›nà uživatele nebo zkontroluje urÄitý pÅ™Ãkaz; pro delÅ¡Ã výstup použijte dvakrát" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "neinteraktivnà režim, nepoužijà se žádné dotazy" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "zachová vektor skupin namÃsto nastavenà na skupiny cÃle" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "použije urÄený dotaz na heslo" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "zmÄ›nà koÅ™enový adresář pÅ™es spuÅ¡tÄ›nÃm pÅ™Ãkazu" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "vytvořà selinuxový bezpeÄnostnà kontext se zadanou rolÃ" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "naÄte heslo ze standardnà vstupu" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "spustà shell jako cÃlový uživatel; pÅ™Ãkaz lze rovněž zadat" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "vytvořà selinuxový bezpeÄnostnà kontext se zadaným typem" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "po uplynutà zadaného Äasu ukonÄà pÅ™Ãkaz" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "v režimu výpisu zobrazà oprávnÄ›nà uživatele" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "spustà pÅ™Ãkaz (nebo upravà soubor) jako uživatel urÄený jménem nebo ID" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "zobrazà údaje o verzi a skonÄÃ" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "aktualizuje Äasové údaje uživatele bez spuÅ¡tÄ›nà pÅ™Ãkazu" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "pÅ™estane zpracovávat argumenty pÅ™Ãkazového řádku" @@ -721,33 +762,33 @@ msgstr "nepodaÅ™ilo se nastavit kontext pro vytvářenà klÃÄů na %s" msgid "requires at least one argument" msgstr "je tÅ™eba alespoň jeden argument" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "neplatné ÄÃslo deskriptoru souboru: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "%s nelze spustit jako pÅ™ihlaÅ¡ovacà shell" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: úprava symbolických odkazů nenà dovolena" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: úprava souborů v adresáři, do kterého lze zapisovat, nenà dovolena" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "obsah relace s úpravami ponechán v %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "nelze zÃskat seznam skupin" @@ -799,195 +840,191 @@ msgstr "volánà setproject selhalo u projektu „%s“" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "pozor, nepodaÅ™ilo se pÅ™iÅ™adit Å™Ãzenà zdrojů projektu „%s“" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo verze %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "PÅ™epÃnaÄe configure: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "nepÅ™ekonatelná chyba, moduly nelze zavést" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "modul nevrátil pÅ™Ãkaz k provedenÃ" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "neoÄekávaný režim programu sudo 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "neexistujete v databázi %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "nelze urÄit terminál" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s musà být vlastnÄ›n UID %d a mÃt nastaven bit setuid" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "efektivnà UID nenà %d, nalézá se %s na souborovém systému s nastavenou volbou „nosuid“ nebo na souborovém systému NFS bez práv roota?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "efektivnà UID nenà %d, je sudo nainstalované jako setuid vlastnÄ›né rootem?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "nelze nastavit ID doplňkových skupin" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "efektivnà GID nelze nastavit na %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "GID nelze nastavit na %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "neoÄekávaný důvod ukonÄenà potomka: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "modul s politikami nelze inicializovat" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "modulu s politikami %s chybà metoda „check_policy“" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "pÅ™Ãkaz zamÃtnut politikou" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "chyba modulu s politikou" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "modul s politikami %s nepodporuje zÃskánà seznamu oprávnÄ›nÃ" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "modul s politikami %s nepodporuje pÅ™epÃnaÄ -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "modul s politikami %s nepodporuje pÅ™epÃnaÄe -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "chyba pÅ™i inicializaci vstupnÄ›-výstupnÃho modulu %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "chyba pÅ™i inicializaci vstupnÄ›-výstupnÃho modulu" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "chyba pÅ™i inicializaci auditnÃho modulu %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s nelze zaznamenat chybovou událost%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s nelze zaznamenat pÅ™ijÃmacà událost%s%s " -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "chyba auditnÃho modulu" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s nelze zaznamenat zamÃtacà událost%s%s " -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "chyba pÅ™i inicializaci schvalovacÃho modulu %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "pÅ™Ãkaz zamÃtnut schvalovatelem" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "chyba schvalovacÃho modulu" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "nenalezen žádný doÄasný adresář, do kterého lze zapisovat" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s ponechán nezmÄ›nÄ›n" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s nezmÄ›nÄ›n" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: vnitÅ™nà chyba: lichý poÄet cest" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: nelze vytvoÅ™it doÄasné soubory" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: zabit signálem" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: neznámá chyba %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "doÄasné soubory nelze zkopÃrovat zpÄ›t na jejich původnà mÃsto" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "nÄ›které z doÄasných souborů nelze zkopÃrovat zpÄ›t na jejich původnà mÃsto" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "UID nelze zmÄ›nit na roota (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "chyba modulu: programu sudoedit chybà seznam souborů" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "nelze pÅ™eÄÃst hodiny" @@ -1011,33 +1048,36 @@ msgstr "po terminálu se vyžaduje naÄtenà hesla; buÄ jej pÅ™eÄtÄ›te ze stan msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "program pro dotazovánà se na heslo nebyl zadán, zkuste nastavit SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "GID nelze nastavit na %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "UID nelze nastavit na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "%s nelze spustit" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "standardnà vstup nelze uložit" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "standardnà vstup nelze zduplikovat volánÃm dup2" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "standardnà vstup nelze obnovit" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: krátký zápis" @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 12:09-0500\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-20 12:44-0400\n" "Last-Translator: Keith Bowes <zooplah@gmail.com>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" "Language: eo\n" @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "ne eblas restarigi registrejon" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "ne eblas generi memoron" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "ne eblas malfermi %s" @@ -111,7 +114,7 @@ msgstr "ne eblas malfermi %s" msgid "unable to mkdir %s" msgstr "ne eblas apliki mkdir al %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "ne eblas apliki stat al %s" @@ -126,7 +129,7 @@ msgid "Unknown signal" msgstr "Nekonata signalo" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "nevalida valoro" @@ -138,42 +141,42 @@ msgstr "valoro tro grandas" msgid "value too small" msgstr "valoro tro malgrandas" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "nevalida voja valoro \"%s\" en %s, linio %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "nevalida valoro por %s \"%s\" en %s, linio %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "nekomprenata grupa fonto \"%s\" en %s, linio %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "nevalidaj maksimumaj grupoj \"%s\" en %s, linio %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s estas ne regula dosiero" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s estas estrata de uid %u, devas esti %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s estas skribebla de ĉiuj" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s estas skribebla de la tuta grupo" @@ -193,12 +196,12 @@ msgstr "ne anstataÅigos je %s" msgid "unable to read from %s" msgstr "ne eblas legi ell %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "ne eblas skribi al %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: ne regula dosiero" @@ -212,50 +215,112 @@ msgstr "%s: malbona dosiera reÄimo: 0%o" msgid "unable to restore current working directory" msgstr "ne eblas restarigi nune kurantan dosierujon" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "nekonata ensaluta klaso %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "ne eblas elekti uzanto-kuntekston" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "ne eblas elekti procezan prioritaton" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "ne eblas ÅanÄi ĉefuzanton al %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "ne eblas ÅanÄi al plenumigkiela uid (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "ne eblas ÅanÄi dosierujon al %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "komenciÄas de %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "ne eblas difini traktilon por la signalo %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "ne eblas forigi PRIV_PROC_EXEC-on de PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "ne eblas duobligi interkaptan dosierpriskribilon" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "nevalida PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "komando rifuzita pro konduto-regularo" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "eraro de konduta kromprogramo" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "klienta mesaÄo tro granda: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neatendita valoro %d de type_case en %s el %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "ne eblas aldoni al la atendovico eventon" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "servila mesaÄo tro granda: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: mankanta mesaÄo-ĉapo" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s/atendita mesaÄtipo %d, ricevita %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "eraro dum legi la konektingan paron" @@ -265,204 +330,180 @@ msgstr "eraro dum legi la konektingan paron" msgid "unexpected reply type on backchannel: %d" msgstr "neatendita respondotipo ĉe la postkanalo: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "ne eblas aldoni al la atendovico eventon" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "ne eblas elekti la regan tty-on" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "ne eblas krei tubon" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "ne eblas ricevi mesaÄon el supre" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "ne eblas forki" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "ne eblis reatingi tty-etikedon" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "ne eblas plenumigi: %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "konduta kromprogramo fiaskis dum seanca komenciÄo" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "ne eblas krei konektingojn" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "eraro en la eventa iteracio" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "ne eblas restarigi traktilon por la signalo %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "ne eblis generi pty-on" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "En/eliga kromprograma eraro" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "komando rifuzita de en/eliga kromprogramo" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "ni paÅzas la protokoladon de eraroj" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "eraro dum ÅanÄo de fenestro-grando" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "ne eblas krei konektingojn" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "ne eblas sendi mesaÄon al observa procezo" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "eraro en %s, linio %d dum Åargi kromprogramon \"%s\"" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s devas esti estrita de uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s estas skribebla nur de estro" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ni malatentas duobligitan kromprogramon \"%s\" en %s, linio %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "maleblas ÅarÄi je %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "ne eblas trovi simbolon \"%s\" en %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "malkongrua granda versio %d de kromprogramo (atendite %d) trovita en %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ni malatentas kondutan kromprogramon \"%s\" en %s, linio %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "nur unu konduta kromprogramo povas esti indikata" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nekonata kromprograma tipo %d trovita en %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "konduta kromprogramo %s ne inkluzivas la metodon check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "interna eraro, superfluo en %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "malvalida medivariabla nomo: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "la parametro de -C devas esti nombron almenaÅ 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "vi ne rajtas specifi ambaÅ parametrojn -i kaj -s" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "vi ne rajtas specifi ambaÅ parametrojn -i kaj -E" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "la parametro -E ne validas en redakta reÄimo" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "vi ne rajtas specifi medivariablojn en redakta reÄimo" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "la parametro '-U' nur povas esti uzata kun '-l'" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "vi ne rajtas kune uzi la parametrojn '-A' kaj '-S'" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit ne estas havebla en ĉi tiu platformon" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Vi rajtas specifi nur unu el -e, -h, -i, -K, -l, -s, -v aÅ -V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s - redakti dosierojn kiel alia uzanto\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s - plenumigi komandon kiel alia uzanto\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "Parametroj:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "uzi helpoprogrogramon por pasvortilo" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "uzi specifitan BSD-konstatan tipon" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "plenumigi komandon fone" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "sonigi pepon kiam invitanta" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "fermi ĉiujn dosierpriskribilojn >= numeron" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "plenumigi komandon per specifita BSD-ensaluta klaso" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "ÅanÄu la kurantan dosierujon antaÅ plenumi komandon" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "konservi uzanto-medivariablojn dum plenumigi komandon" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "konservi specifajn medivariablojn" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "redakti dosierojn anstataÅ plenumigi komandon" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "plenumigi komandon kiel la specifitan grupnomon aÅ identigilon" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "valorizi medivariablon HOME je la hejma dosierujo de la cela uzanto" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "elmontri helpan mesaÄon kaj eliri" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "plenumigi komandon en gastiganto (se permesata de kromprogramo)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "plenumigi ensalutan Åelon kiel celan uzanton; komando ankaÅ enmeteblas" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "tute forigi tempo-indikilan dosieron" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "eksvalidigi tempo-indikilan dosieron" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "listigi privilegiojn de la uzanto aÅ kontroli specifan komandon; uzu dufoje por pli longa formato" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "neinteraga reÄimo, ne demandos al uzanto" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "konservi grupan vektoron anstataÅ elekti celan" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "uzi specifitan pasvortilon" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "ÅanÄu la radikan dosierujon antaÅ ol plenumigi komandon" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "krei SELinux-sekurecan kuntekston kun specifita rolo" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "legi pasvorton el norma enigo" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "plenumigi Åelon kiel cela uzanto; komando ankaÅ specifebla" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "krei SELinux-sekurecan kuntekston kun specifita rolo" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "finigi la komandon post la specifita tempolimo" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "en lista reÄimo elmontri privilegiojn por uzanto" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "plenumigi komandon (aÅ redakti dosieron) kiel specifita uzanto" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "elmontri eldonan informon kaj eliri" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "Äisdatigi la tempo-indikilon de la uzanto, sed ne plenumigi komandon" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "ĉesigi procedi komandliniajn parametrojn" @@ -721,33 +762,33 @@ msgstr "ne eblas elekti kuntekston de kreo de Ålosilo al %s" msgid "requires at least one argument" msgstr "postulas almenaÅ unu parametron" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "malvalida dosierpriskribila numero: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "ne eblas lanĉi %s kiel ensalut-Åelo" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: redakto de simbolaj ligoj ne estas permesata" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: redakto de dosieroj en skribebla dosierujo ne estas permesata" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "enhavo de redakta seanco restas en %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "ne eblas atingi grupan liston" @@ -799,195 +840,191 @@ msgstr "setproject malsukcesis por projekto \"%s\"" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "averto, rimedo-rega asigno malsukcesis por projekto \"%s\"" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo: eldono %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Muntaj parametroj: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "ĉesiga eraro: ne eblas Åargi kromprogramojn" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "kromprogramo ne liveris komandon por plenumi" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "neatendita sudo-reÄimon 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "vi ne ekzistas en la datumbazo %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "ne eblas determini tty-on" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s devas esti posedata de uid %d kaj la setuid-bito devas esti markita" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "efektiva uid ne estas %d; ĉu %s estas en dosiersistemo kun la elekto 'nosuid' aÅ reta dosiersistemo sen ĉefuzanto-privilegioj?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "efektiva uid ne estas %d; ĉu sudo estas instalita kiel setuid-radiko?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "ne eblas elekti suplementajn grupajn identigilojn" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "ne eblas elekti efikan gid-on al plenumigkiela gid %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "ne eblas elekti gid-on kiel plenumigkielan gid-on %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "neatendita ido finiÄis laÅ la kondiĉo: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "ne eblas komenci konduktan kromprogramon" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "konduta kromprogramo %s ne inkluzivas la metodon \"check_policy\"" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "komando rifuzita pro konduto-regularo" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "eraro de konduta kromprogramo" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "konduta kromprogramo %s ne komprenas listigon de privilegioj" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "konduta kromprogramo %s ne komprenas la parametron -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "konduta kromprogramo %s ne komprenas la parametrojn -k kaj -K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "eraro dum lanĉo de eneliga kromprogramo %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "eraro dum lanĉo de eneliga kromprogramo" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "eraro dum lanĉo de ekzamena kromprogramo %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%smaleblas protokoli eraro-eventon%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: maleblas protokoli akcepto-eventon%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "Kontrolo-kromprograma eraro" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: neeblas protokoli malakcepto-eventon%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "eraro dum lanĉo de aproba kromprogramo %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "komando rifuzita de aprobanto" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "eraro de aproba kromprogramo" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "neniu skribebla provizora dosierujo estis trovata" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s restas ne modifita" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s ne ÅanÄita" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: interna eraro: malpara nombro da vojoj" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: ne eblas krei provizorajn dosierojn" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: mortigita de signalo" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nekonata eraro %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "ne eblas retrokopii provizorajn dosierojn al ilia originala loko" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "ne eblas retrokopii kelkajn el la provizoraj dosieroj al ilia originala loko" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "ne eblas ÅanÄi uid-on al ĉefuzanto (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "kromprograma eraro: malhavas dosieran liston por sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "ne eblas legi la horloÄon" @@ -1011,110 +1048,29 @@ msgstr "terminalo estas postulata por legi la pasvorton; uzu la parametron -S po msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "neniu programo askpass indikita, provu difini SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "ne eblas elekti gid-on al %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "ne eblas elekti uid-on al %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "ne eblas plenumigi: %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "ne eblas konservi norman enigon" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "ne eblas dup2 el norma enigo" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "ne eblas restarigi norman enigon" - -#~ msgid "%s: short write" -#~ msgstr "%s: mallonga skribado" - -#~ msgid "unable to read temporary file" -#~ msgstr "ne eblas legi provizoran dosieron" - -#~ msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" -#~ msgstr "ni malatentas duobligantan kondutan kromprogramon \"%s\" en %s, linio %d" - -#~ msgid "no tty present and no askpass program specified" -#~ msgstr "neniu tty ĉeestas kaj neniu pasvorto-programo specifita" - -#~ msgid "unknown uid %u: who are you?" -#~ msgstr "nekonata uid %u: kiu vi estas?" - -#~ msgid "error reading from signal pipe" -#~ msgstr "eraro dum legi la signalan tubon" - -#~ msgid "internal error, tried allocate zero bytes" -#~ msgstr "interna eraro, provo rezervi neniun bajton" - -#~ msgid "unable to set terminal to raw mode" -#~ msgstr "ne eblas elekti nudan reÄimon ĉe la terminalo" - -#~ msgid "unable to open socket" -#~ msgstr "ne eblas malfermi konektingon" - -#~ msgid "%s: %s: %s\n" -#~ msgstr "%s: %s: %s\n" - -#~ msgid "%s: %s\n" -#~ msgstr "%s: %s\n" - -#~ msgid "internal error, tried to emalloc2(0)" -#~ msgstr "interna eraro, provis je emalloc2(0)" - -#~ msgid "internal error, tried to ecalloc(0)" -#~ msgstr "interna eraro, provis je ecalloc(0)" - -#~ msgid "internal error, tried to erealloc(0)" -#~ msgstr "interna eraro, provis je erealloc(0)" - -#~ msgid "internal error, tried to erealloc3(0)" -#~ msgstr "interna eraro, provis je erealloc3(0)" - -#~ msgid "internal error, tried to erecalloc(0)" -#~ msgstr "interna eraro, provis je erealloc(0)" - -#~ msgid "load_interfaces: overflow detected" -#~ msgstr "load_interfaces: superfluo malkovrita" - -#~ msgid "value out of range" -#~ msgstr "valoro ne en permesata skalo" - -#~ msgid "select failed" -#~ msgstr "elekto malsukcesis" - -#~ msgid "list user's available commands\n" -#~ msgstr "listigi disponeblajn komandojn de uzanto\n" - -#~ msgid "run a shell as target user\n" -#~ msgstr "plenumigi Åelon kiel cela uzanto\n" - -#~ msgid "when listing, list specified user's privileges\n" -#~ msgstr "dum listigo, listigi privilegiojn de specifita uzanto\n" - -#~ msgid ": " -#~ msgstr ": " - -#~ msgid "internal error, emalloc2() overflow" -#~ msgstr "interna eraro, emalloc2() superfluo" - -#~ msgid "internal error, erealloc3() overflow" -#~ msgstr "interna eraro, erealloc3() superfluo" - -#~ msgid "%s: at least one policy plugin must be specified" -#~ msgstr "%s: almenaÅ unu konduku devas esti specifita" - -#~ msgid "must be setuid root" -#~ msgstr "devas esti ĉefuzanto setuid" Binary files differ@@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 13:03+0100\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-22 19:45+0200\n" "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "impossible de rétablir le registre" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "impossible d'allouer la mémoire" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "impossible d'ouvrir %s" @@ -111,7 +114,7 @@ msgstr "impossible d'ouvrir %s" msgid "unable to mkdir %s" msgstr "impossible d'exécuter mkdir %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "impossible d'évaluer par stat() %s" @@ -126,7 +129,7 @@ msgid "Unknown signal" msgstr "Signal inconnu" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "valeur incorrecte" @@ -138,42 +141,42 @@ msgstr "valeur trop grande" msgid "value too small" msgstr "valeur trop petite" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "valeur de chemin « %s » incorrecte dans %s, ligne %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "valeur « %2$s » incorrecte pour %1$s dans %3$s, ligne %4$u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "source de groupe « %s » non supportée dans %s, ligne %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "groupes max « %s » incorrects dans %s, ligne %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s n'est pas un fichier régulier" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s est la propriété du uid %u alors que ça devrait être %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s peut être écrit par tout le monde" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s peut être écrit par le groupe" @@ -193,12 +196,12 @@ msgstr "n'écrase pas %s" msgid "unable to read from %s" msgstr "impossible de lire depuis %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "impossible d'écrire dans %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: pas un fichier régulier" @@ -212,50 +215,112 @@ msgstr "%s: mauvais mode de fichier : 0%o" msgid "unable to restore current working directory" msgstr "impossible de rétablir le répertoire de travail actuel" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "classe de login %s inconnue" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "impossible de changer le contexte utilisateur" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "impossible de changer la priorité du processus" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "impossible de changer root en %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "impossible de changer vers runas uid (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "impossible de changer le répertoire vers %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "au départ de %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "impossible de spécifier le gestionnaire pour le signal %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "impossible de supprimer PRIV_PROC_EXEC de PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "impossible de dupliquer le fd intercepté" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "PolicyCheckRequest invalide" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "commande rejetée par la politique" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "erreur du greffon de politique" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "message client trop grand : %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "valeur %d inattendue pour type_case dans %s de %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "impossible d'ajouter l'événement à la queue" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "message serveur trop grand : %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: en-tête de message manquant" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: type de message %d attendu, %d obtenu" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "erreur de lecture sur la paire de sockets" @@ -265,204 +330,180 @@ msgstr "erreur de lecture sur la paire de sockets" msgid "unexpected reply type on backchannel: %d" msgstr "réponse inattendue sur le backchannel : %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "impossible d'ajouter l'événement à la queue" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "impossible de choisir le tty de contrôle" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "impossible de créer le tube" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "impossible de recevoir un message du parent" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "erreur de fork" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "impossible de rétablir l'étiquette du tty" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "impossible d'exécuter %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "le greffon de règles a échoué lors de l'initialisation de la session" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "impossible de créer des sockets" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "erreur dans la boucle des événements" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "impossible de rétablir le gestionnaire pour le signal %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "impossible d'allouer le pty" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "erreur du greffon d'E/S" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "commande rejetée par le greffon d'E/S" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "l'enregistrement des erreurs est suspendu" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "erreur lors du changement de la taille de la fenêtre" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "impossible de créer des sockets" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "impossible d'envoyer le message au processus de monitoring" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "erreur dans %s, ligne %d lors du chargement du greffon « %s »" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s doit être la propriété du uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "seul le propriétaire doit pouvoir écrire dans %s" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ignore le greffon en double « %s » dans %s, ligne %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "impossible de charger %s : %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "impossible de trouver le symbole « %s » dans %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "greffon à la version majeure %d incompatible (%d attendu) trouvé dans %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ignore le greffon de règles « %s » dans %s, ligne %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "un seul greffon de règles peut être spécifié" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "type de greffon %d inconnu dans %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "le greffon de règles %s ne contient pas de méthode check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "erreur interne, débordement %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "nom de variable d'environnement invalide: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "l'argument à -C doit être un nombre plus grand ou égal à 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "vous ne pouvez pas spécifier les options -i et -s en même temps" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "vous ne pouvez pas spécifier les options -i et -E en même temps" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "l'option -E n'est pas valable en mode édition" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "vous ne pouvez pas spécifier de variable d'environnement en mode édition" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "l'option -U ne peut être utilisée qu'avec l'option -l" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "les options -A et -S ne peuvent pas être utilisées ensemble" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit n'est pas pris en charge sur cette plate-forme" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Seule une des options -e, -h, -i, -K, -l, -s, -v ou -V peut être spécifiée" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s – édite les fichiers en tant qu'un autre utilisateur\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s – exécute une commande en tant qu'un autre utilisateur\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "Options:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "utiliser un programme adjoint pour demander le mot de passe" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "utiliser le type d'authentification BSD spécifié" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "exécuter la commande en arrière-plan" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "émettre un signal sonore lors d'une demande" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "fermer tous les descripteurs de fichiers >= n°" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "exécuter la commande avec la classe de login BSD" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "changer le répertoire de travail avant d'exécuter la commande" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "préserver l'environnement de l'utilisateur en exécutant la commande" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "préserver les variables d'environnement spécifiques" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "éditer les fichiers au lieu d'exécuter une commande" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "exécuter la commande en tant que le nom ou ID de groupe spécifié" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "assigner à la variable HOME le répertoire personnel de l'utilisateur cible" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "afficher le message d'aide et terminer" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "exécuter la commande sur l'hôte (si supporté par le greffon)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "exécuter le shell de login comme l'utilisateur cible. Une commande peut aussi être spécifiée" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "supprime complètement le fichier d'horodatage" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "invalide le fichier d'horodatage" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "afficher les privilèges de l'utilisateur ou vérifie une commande spécifique. Utilisez deux fois pour une forme plus longue" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "mode non interactif, aucune invite utilisée" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "préserve le vecteur des groupes au lieu de le changer en celui de la cible" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "utiliser l'invite de mot de passe spécifié" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "changer le répertoire racine avant d'exécuter la commande" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "créer le contexte de sécurité SELinux avec le rôle spécifié" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "lire le mot de passe depuis l'entrée standard" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "exécuter le shell en tant que l'utilisateur cible. Une commande peut aussi être spécifiée" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "créer le contexte de sécurité SELinux avec le type spécifié" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "terminer la commande après la limite de temps spécifiée" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "en mode liste, afficher les privilèges de l'utilisateur" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "exécuter la commande (ou éditer le fichier) sous le nom d'utilisateur ou le ID spécifié" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "afficher les informations de version et terminer" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "mettre à jour l'horodatage de l'utilisateur sans exécuter de commande" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "arrêter de traiter les arguments en ligne de commande" @@ -721,33 +762,33 @@ msgstr "impossible de changer le contexte de création de clé en %s" msgid "requires at least one argument" msgstr "exige au moins un argument" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "numéro de descripteur de fichier invalide: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "impossible d'exécuter %s comme un shell de login" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: l'édition de liens symboliques n'est pas permise" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: l'édition de fichiers dans un répertoire accessible en écriture n'est pas permis" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "contenu de la session d'édition laissé dans %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "impossible d'obtenir la liste des groupes" @@ -799,195 +840,191 @@ msgstr "setproject a échoué pour le projet « %s »" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "attention, l'assignement du contrôle de ressources a échoue pour le projet « %s »" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo version %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Options de configuration : %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "erreur fatale, impossible de charger les greffons" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "le greffon n'a pas retourné une commande à exécuter" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "mode sudo 0x%x inattendu" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "vous n'existez pas dans la base de données %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "impossible de déterminer le tty" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s doit être la propriété du uid %d et avoir le bit setuid mis" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "le uid effectif n'est pas %d. Est-ce que %s est sur un système de fichiers avec l'option « nosuid » ou un système de fichiers NFS sans privilèges root ?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "le uid effectif n'est pas %d. Est-ce que sudo est installé setuid root ?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "impossible d'attribuer les ID de groupe supplémentaires" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "impossible de changer le gid effectif à runas gid %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "impossible de changer le gid à runas gid %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "condition de fin de l'enfant inconnue: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "impossible d'initialiser le greffon de règles" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "le greffon de règles %s n'a pas de méthode « check_policy »" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "commande rejetée par la politique" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "erreur du greffon de politique" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "le greffon de règles %s ne supporte pas les privilèges de listage" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "le greffon de règles %s ne supporte pas l'option -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "le greffon de règles %s ne supporte pas les options -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "erreur à l'initialisation du greffon E/S %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "erreur à l'initialisation du greffon E/S" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "erreur à l'initialisation du greffon d'audit %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: impossible d'enregistrer dans le journal l'événement d'erreur%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: impossible d'enregistrer dans le journal l'événement d'acceptation%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "erreur du greffon d'audit" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: impossible d'enregistrer dans le journal l'événement de rejet%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "erreur à l'initialisation du greffon d'approbation %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "commande rejetée par l'approbateur" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "erreur du greffon d'approbation" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "aucun répertoire temporaire est disponible en écriture" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s laissé tel quel" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s non modifié" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: erreur interne: nombre impaire de chemins" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: impossible de créer des fichiers temporaires" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: tué par un signal" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: erreur %d inconnue" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "impossible de copier les fichiers temporaires à leurs emplacements d'origine" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "impossible de copier quelques fichiers temporaires à leurs emplacements d'origine" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "impossible de changer le uid en root (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "erreur de greffon : liste de fichiers manquantes pour sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "impossible de lire l'horloge" @@ -1011,33 +1048,36 @@ msgstr "un terminal est requis pour lire le mot de passe; utilisez soit l'option msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "pas de programme askpass spécifié, essayez avec SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "impossible de changer le gid en %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "impossible de changer le uid en %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "impossible d'exécuter %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "impossible de sauvegarder stdin" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "impossible d'exécuter dup2 sur stdin" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "impossible de rétablir stdin" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: écriture trop courte" @@ -4,10 +4,10 @@ # Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.6b1\n" +"Project-Id-Version: sudo-1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 18:40-0800\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-20 17:15+0200\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" "Language: hr\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\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: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" "X-Poedit-Basepath: sources/sudo-1.8.26b1\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: .\n" @@ -35,75 +35,78 @@ msgid "unable to restore registry" msgstr "nije moguće obnoviti registar" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "nije moguće dodijeliti memoriju" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "nije moguće otvoriti %s" @@ -113,7 +116,7 @@ msgstr "nije moguće otvoriti %s" msgid "unable to mkdir %s" msgstr "nije moguće izvrÅ¡iti mkdir %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "nije moguće dobiti status od %s" @@ -128,7 +131,7 @@ msgid "Unknown signal" msgstr "Nepoznati signal" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "nevaljana vrijednost" @@ -140,42 +143,42 @@ msgstr "veliÄina je prevelika" msgid "value too small" msgstr "veliÄina je premala" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "nevaljana Path vrijednost „%s“ u %s, redak %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "nevaljana vrijednost za %s „%s“ u %s, redak %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "nepodržani izvor grupe „%s“ u %s, redak %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "nevaljani maksimalni broj grupa „%s“ u %s, redak %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s nije obiÄna datoteka" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "vlasnik %s je UID %u, a treba biti %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s može svatko mijenjati/pisati" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s može svaki Älan grupe mijenjati/pisati" @@ -195,12 +198,12 @@ msgstr "ne piÅ¡e preko %s" msgid "unable to read from %s" msgstr "nije moguće proÄitati %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "nije moguće pisati u %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obiÄna datoteka" @@ -214,51 +217,113 @@ msgstr "%s: loÅ¡ datoteÄni naÄin: 0%o" msgid "unable to restore current working directory" msgstr "nije moguće obnoviti trenutni radni direktorij" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "nepoznata prijavniÄka klasa %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "nije moguće uspostaviti korisniÄki kontekst" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "nije moguće uspostaviti prioritet procesa" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "nije moguće promijeniti root na %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "nije moguće promijeniti na runas UID (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "nije moguće promijeniti direktorij na %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "poÄevÅ¡i od %s" # Handler, an asynchronous callback (computer programming) subroutine in computing -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "nije moguće postaviti rukovatelja za signal %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "nije moguće ukloniti PRIV_PROC_EXEC iz PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "nije uspjelo duplicirati deskriptor presrele datoteke" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "nevaljani PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "pravilnik (policy) je odbio izvrÅ¡iti naredbu" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "greÅ¡ka plugina s pravilima (policy plugin)" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "poruka klijenta je prevelika: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "neoÄekivana vrijednost type_case %d in %s od %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "nije moguće dodati dogaÄ‘aj u red Äekanja" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "poruka servera je prevelika: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: poruci nedostaje zaglavlje" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: oÄekivana je poruka vrste %d, a dobivena je %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "greÅ¡ka pri Äitanju iz para utiÄnica" @@ -268,205 +333,181 @@ msgstr "greÅ¡ka pri Äitanju iz para utiÄnica" msgid "unexpected reply type on backchannel: %d" msgstr "neoÄekivana vrsta odgovora na povratnom kanalu: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "nije moguće dodati dogaÄ‘aj u red Äekanja" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "nije moguće uspostaviti upravljaÄki TTY" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "nije moguće napraviti cijev" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "nije moguće primiti poruku od pretka (roditelja)" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "nije moguće kreirati potomka (dijete)" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "nije moguće obnoviti TTY etiketu" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "nije moguće izvrÅ¡iti %s" # initialization > inicirati > dati/davati inicijativu, pobudu; pokrenuti/pokretati, zapoÄeti/zapoÄinjati -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "plugin s pravilima nije uspio pokrenuti inicijalizaciju sesije" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "nije moguće napraviti utiÄnice" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "greÅ¡ka u petlji dogaÄ‘aja" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "nije moguće obnoviti rukovatelja za signal %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "nije moguće dodijeliti PTY" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "greÅ¡ka I/O plugina (plugin za U/I)" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "U/I plugin je odbio izvrÅ¡iti naredbu" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "obustava evidentiranja greÅ¡ki" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "pogreÅ¡ka pri mijenjanju veliÄine prozora" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "nije moguće napraviti utiÄnice" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "nije moguće poslati poruku za praćenje procesa" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "greÅ¡ka u %s, redak %d pri uÄitavanju plugina „%s“" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "vlasnik %s mora biti UID %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s za pisanje mora biti dostupan samo vlasniku" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ignorira se duplikat plugina „%s“ u %s, redak %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "nije moguće uÄitati %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nije moguće pronaći simbol „%s“ u %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "nekompatibilni plugin inaÄica %d (oÄekivana %d) pronaÄ‘en u %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ignorira se plugin s pravilima „%s“ u %s, redak %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "smije se navesti samo jedan plugin s pravilima" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nepoznata vrsta %d plugina pronaÄ‘ena u %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "plugin s pravilima %s ne sadrži metodu check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "**interna greÅ¡ka**, %s prelijevanje" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "nevaljano ime varijable okoline: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argument za -C mora biti broj veći ili jednak 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "ne smijete navesti istovremeno opcije -i i -s" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "ne smijete navesti istovremeno opcije -i i -E" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "opcija -E nije valjana kad se redigira (in edit mode)" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "ne smijete specificirati varijable okoline kad se redigira (in edit mode)" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "opciju -U smijete koristiti samo uz -l opciju" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "opcije -A i -S ne smiju se koristiti zajedno" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit nije podržan na ovoj platformi" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Smije se navesti samo jedna od opcija -e, -h, -i, -K, -l, -s, -v i -V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -475,7 +516,7 @@ msgstr "" "%s - redigira datoteku kao neki drugi korisnik\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -484,7 +525,7 @@ msgstr "" "%s - izvrÅ¡i naredbu kao neki drugi korisnik\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -492,131 +533,131 @@ msgstr "" "\n" "Opcije:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "zahtjev za lozinku koristi pomoćni program" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "rabi navedenu BSD autentifikaciju" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "pokrene naredbu u pozadini" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "pozvoni kad treba ulaz ili kad neÅ¡to pita" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "zatvara sve deskriptore datoteka >= num" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "pokrene naredbu s navedenom BSD klasom prijave" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "promijenite radni direktorij prije pokretanja naredbe" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "saÄuva okolinu korisnika pri izvrÅ¡enju naredbe" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "saÄuva specifiÄne varijable okoline" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "redigira datoteke umjesto pokretanja naredbe" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "izvrÅ¡i naredbu kao navedeno group ime ili ID" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "var HOME postavi na osobni direktorij korisnika" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "pokaže ovu pomoć i iziÄ‘e" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "pokrene naredbu na host raÄunalu (ako to plugin podržava)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "pokrene prijavnu ljusku kao ciljani korisnik; može se navesti i naredba" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "sasvim ukloni datoteku s vremenskim oznakama" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "poniÅ¡ti datoteku s vremenskim oznakama" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "privilegije korisnika ili test specifiÄne naredbe; rabite -ll za duži popis" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "ne-interaktivni mÈd; bez prompta" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "saÄuva grupni vektor umjesto postavljanja na ciljanu grupu" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "koristi navedeni prompt za unos lozinke" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "promijenite root direktorij prije pokretanja naredbe" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "stvori SELinux sigurnosni kontekst s navedenom role ulogom" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "Äita lozinku iz standardnog ulaza" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "pokrene ljusku kao ciljani korisnik; može se navesti i naredba" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "stvori SELinux sigurnosni kontekst s navedenom type ulogom" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "naredba zavrÅ¡i nakon navedenoga vremenskog ograniÄenja" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "izlista popis privilegija user korisnika" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "pokreni naredbu (ili redigira datoteku) kao navedeni user korisnik" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "informira o inaÄici ovog programa i iziÄ‘e" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "obnovi vremensku oznaku korisnika bez pokretanja naredbe" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "prestane s obradom argumenata na naredbenom retku" @@ -725,35 +766,35 @@ msgstr "nije moguće postaviti kontekst stvaranja kljuÄa na %s" msgid "requires at least one argument" msgstr "zahtijeva barem jedan argument" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "nevaljani broj deskriptora datoteke: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "nije moguće pokrenuti %s kao prijavnu ljusku" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: simboliÄke veze nije dopuÅ¡teno redigirati" # writable> zapisiv, upisiv, u kojem je dopuÅ¡teno pisati # http://hjp.znanje.hr/ > upisiv > koji se može upisati, koji ispunjava uvjete upisa -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: datoteke nije dopuÅ¡teno redigirati u direktoriju koji dopuÅ¡ta pisanje" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "sadržaj sesije redigiranja je ostavljen u %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "nije moguće dobiti popis grupa" @@ -805,195 +846,191 @@ msgstr "neuspjeÅ¡na setproject() za projekt „%s“" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "upozorenje: nije uspjelo dodijeliti upravljanje resursima projekta „%s“" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo inaÄica %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Konfiguracijske opcije: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "kobna greÅ¡ka, nije moguće uÄitati plugine" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "plugin nije uzvratio naredbu za izvrÅ¡iti" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "neoÄekivani sudo mÈd 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "vas nema u %s bazi podataka" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "nije moguće odrediti TTY" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "vlasnik %s mora biti UID %d i mora imati postavljeni setuid bit" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "efektivni UID nije %d; je li %s na datoteÄnom sustavu s postavljenom opcijom „nosuid“ ili NFS datoteÄnom sustavu bez root privilegija?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "efektivni UID nije %d; je li sudo instaliran sa setuid root?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "nije moguće postaviti ID dodatnih grupa" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "nije moguće postaviti efektivni GID na runas GID %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "nije moguće postaviti GID na runas GID %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "neoÄekivano stanje zavrÅ¡etka potomka (dijete-procesa) : %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "nije moguće inicijalizirati plugin s pravilima" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "pluginu s pravilima %s nedostaje metoda „check_policy“" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "pravilnik (policy) je odbio izvrÅ¡iti naredbu" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "greÅ¡ka plugina s pravilima (policy plugin)" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "plugin s pravilima %s ne podržava ispis ovlasti" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "plugin s pravilima %s ne podržava opciju -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "plugin s pravilima %s ne podržava -k/-K opcije" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "greÅ¡ka pri inicijalizaciji U/I plugina %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "greÅ¡ka pri inicijalizaciji U/I plugina" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "greÅ¡ka pri inicijalizaciji plugina za reviziju %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: nije uspjelo zabilježiti pogreÅ¡ku dogaÄ‘aja%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: nije uspjelo zabilježiti dogaÄ‘aj prihvaćanja%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "pogreÅ¡ka u pluginu za reviziju" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: nije uspjelo zabilježiti dogaÄ‘aj odbijanja%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "greÅ¡ka pri inicijalizaciji plugina za odobrenje %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "odobravatelj je odbio izvrÅ¡iti naredbu" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "greÅ¡ka plugina za odobravanje" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "nije pronaÄ‘en privremeni direktorij u koji je moguće pisati" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s nije izmijenjeno" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s nije promijenjeno" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: interna greÅ¡ka: neparni broj staza" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: nije moguće Äitati privremenu datoteku" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: ubijen signalom" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nepoznata greÅ¡ka: %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "nije moguće kopirati privremene datoteke u njihovu originalnu lokaciju" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "nije moguće kopirati neke od privremenih datoteka u njihovu originalnu lokaciju" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "nije moguće promijeniti UID na root (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "greÅ¡ka plugina: nedostaje popis datoteka za sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "nije moguće proÄitati vrijeme (clock)" @@ -1017,33 +1054,36 @@ msgstr "za Äitanje lozinke trebate terminal; rabite opciju -S za Äitanje sa st msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "nije specificiran askpass program, pokuÅ¡ajte postaviti SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "nije moguće postaviti GID na %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "nije moguće postaviti UID na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "nije moguće pokrenuti %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "nije moguće saÄuvati stdin" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "dup2 nije moguće primijeniti na stdin" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "nije moguće obnoviti stdin" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: nepotpuni zapis" @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 10:38+0900\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-23 01:38+0900\n" "Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n" "Language-Team: Korean <translation-team-ko@googlegroups.com>\n" "Language: ko\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3.1\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "ë ˆì§€ìŠ¤íŠ¸ë¦¬ë¥¼ ë³µì›í• 수 없습니다" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "메모리를 í• ë‹¹í• ìˆ˜ 없습니다" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%sì„(를) ì—´ 수 없습니다" @@ -111,7 +114,7 @@ msgstr "%sì„(를) ì—´ 수 없습니다" msgid "unable to mkdir %s" msgstr "%s ë””ë ‰í„°ë¦¬ë¥¼ 새로 만들 수 없습니다" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "%sì˜ ìƒíƒœë¥¼ ê°€ì ¸ì˜¬ 수 없습니다" @@ -126,9 +129,9 @@ msgid "Unknown signal" msgstr "ì•Œ 수 없는 시그ë„" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" -msgstr "ìž˜ëª»ëœ ê°’" +msgstr "부ì ì ˆí•œ ê°’" #: lib/util/strtomode.c:58 lib/util/strtonum.c:160 msgid "value too large" @@ -138,42 +141,42 @@ msgstr "ê°’ì´ ë„ˆë¬´ í½ë‹ˆë‹¤" msgid "value too small" msgstr "ê°’ì´ ë„ˆë¬´ 작습니다" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" -msgstr "%2$sì˜ %3$u번째 ì¤„ì— ìž˜ëª»ëœ ê²½ë¡œ ê°’ \"%1$s\"" +msgstr "%2$sì˜ %3$u번째 ì¤„ì— ë¶€ì ì ˆí•œ 경로 ê°’ \"%1$s\"" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" -msgstr "%3$sì˜ %4$u번째 ì¤„ì— %1$sì˜ ìž˜ëª»ëœ ê°’ \"%2$s\"" +msgstr "%3$sì˜ %4$u번째 ì¤„ì— %1$sì˜ ë¶€ì ì ˆí•œ ê°’ \"%2$s\"" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "%2$sì˜ %3$u번째 ì¤„ì— ì§€ì›í•˜ì§€ 않는 그룹 ì›ë³¸ \"%1$s\"" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" -msgstr "%2$sì˜ %3$u번째 ì¤„ì— ìž˜ëª»ëœ ìµœëŒ€ 그룹 ê°’ \"%1$s\"" +msgstr "%2$sì˜ %3$u번째 ì¤„ì— ë¶€ì ì ˆí•œ 최대 그룹 ê°’ \"%1$s\"" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%sì€(는) ì¼ë°˜ 파ì¼ì´ 아닙니다" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%sì€(는) %u uidì—ì„œ ì†Œìœ í•˜ê³ ìžˆì§€ë§Œ %u uidê°€ ì†Œìœ í•´ì•¼ 합니다" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%sì— ëª¨ë‘ê°€ 기ë¡í• 수 있습니다" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%sì— ê·¸ë£¹ 구성ì›ì´ 기ë¡í• 수 있습니다" @@ -193,12 +196,12 @@ msgstr "%s ë®ì–´ì“°ì§€ ì•ŠìŒ" msgid "unable to read from %s" msgstr "%sì„(를) ì½ì„ 수 없습니다" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "%sì— ê¸°ë¡í• 수 없습니다" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: ì¼ë°˜ íŒŒì¼ ì•„ë‹˜" @@ -212,50 +215,112 @@ msgstr "%s: ìž˜ëª»ëœ íŒŒì¼ ëª¨ë“œ: 0%o" msgid "unable to restore current working directory" msgstr "현재 ìž‘ì—… ë””ë ‰í„°ë¦¬ë¥¼ ë³µì›í• 수 없습니다" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "ì•Œ 수 없는 ë¡œê·¸ì¸ í´ëž˜ìŠ¤ %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "ì‚¬ìš©ìž ì»¨í…스트를 ì„¤ì •í• ìˆ˜ 없습니다" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "프로세스 ìš°ì„ ìˆœìœ„ë¥¼ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "루트를 %s(으)ë¡œ 바꿀 수 없습니다" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "실행 uidë¡œ 바꿀 수 없습니다 (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "%s ë””ë ‰í„°ë¦¬ë¡œ 바꿀 수 없습니다" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "%sì—ì„œ 시작 중" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "%d 시그ë„ì˜ í•¸ë“¤ëŸ¬ë¥¼ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "PRIV_LIMITì—ì„œ PRIV_PROC_EXEC를 ì œê±°í• ìˆ˜ 없습니다" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "가로채기 íŒŒì¼ ì„œìˆ ìžë¥¼ ë³µì œí• ìˆ˜ 없습니다" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "부ì ì ˆí•œ PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "ì •ì±…ì„ í†µí•´ ëª…ë ¹ì„ ê±°ë¶€ 했습니다" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "ì •ì±… í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "í´ë¼ì´ì–¸íŠ¸ 메시지가 너무 ê¹ë‹ˆë‹¤: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "%3$sì˜ %2$sì—ì„œ 예기치 못한 type_case ê°’ %1$d번" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "íì— ì´ë²¤íŠ¸ë¥¼ ì¶”ê°€í• ìˆ˜ 없습니다" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "서버 메시지 길ì´ê°€ 너무 ê¹ë‹ˆë‹¤: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: 메시지 í—¤ë”ê°€ ë¹ ì¡ŒìŠµë‹ˆë‹¤" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: 메시지 í˜•ì‹ %dë²ˆì„ ê¸°ëŒ€í–ˆìœ¼ë‚˜, %dë²ˆì´ ë‚˜íƒ€ë‚¬ìŠµë‹ˆë‹¤" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "ì†Œì¼“ìŒ ì½ê¸° 오류" @@ -265,205 +330,181 @@ msgstr "ì†Œì¼“ìŒ ì½ê¸° 오류" msgid "unexpected reply type on backchannel: %d" msgstr "ë°± 채ë„ì— ìž˜ëª»ëœ ì‘답 형ì‹: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "íì— ì´ë²¤íŠ¸ë¥¼ ì¶”ê°€í• ìˆ˜ 없습니다" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "처리 tty를 ì„¤ì •í• ìˆ˜ 없습니다" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "파ì´í”„를 만들 수 없습니다" # parentê°€ ì •í™•ížˆ 무슨 ì˜ë¯¸ì¸ì§€ ì•Œ 수 ì—†ìŒ -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "ìƒìœ„로부터 메시지를 ë°›ì„ ìˆ˜ 없습니다" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "í¬í‚¹í• 수 없습니다" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "tty ë ˆì´ë¸”ì„ ë³µì›í• 수 없습니다" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "%sì„(를) ì‹¤í–‰í• ìˆ˜ 없습니다" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "ì •ì±… 플러그ì¸ì—ì„œ 세션 ì´ˆê¸°í™”ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "ì´ë²¤íŠ¸ ë£¨í”„ì— ì˜¤ë¥˜" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "%d 시그ë„ì˜ í•¸ë“¤ëŸ¬ë¥¼ ë³µì›í• 수 없습니다" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "pty를 í• ë‹¹í• ìˆ˜ 없습니다" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "ìž…ì¶œë ¥ í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "ìž…ì¶œë ¥ 플러그ì¸ì—ì„œ ëª…ë ¹ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "오류 로깅 대기" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "윈ë„ìš° í¬ê¸° 변경 오류" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "ì†Œì¼“ì„ ë§Œë“¤ 수 없습니다" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "ê°ì‚¬ í”„ë¡œì„¸ìŠ¤ì— ë©”ì‹œì§€ë¥¼ 보낼 수 없습니다" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "%sì˜ %d번째 줄ì—ì„œ \"%s\" 플러그ì¸ì„ 불러오는 중 오류" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%sì€(는) uid %dì—ì„œ ì†Œìœ í•´ì•¼ 합니다" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%sì€(는) ì†Œìœ ìžë§Œ 기ë¡í• 수 있어야 합니다" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "%2$sì˜ %3$d번째 줄ì—ì„œ \"%1$s\" 중복 í”ŒëŸ¬ê·¸ì¸ ë¬´ì‹œ" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "%sì„(를) 불러올 수 없습니다: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "%2$sì—ì„œ \"%1$s\" ì‹¬ë³¼ì„ ì°¾ì„ ìˆ˜ 없습니다" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "%3$sì— ì£¼ ë²„ì „ì´(%2$dì„(를) 기대했지만) %1$dì¸ ë¹„í˜¸í™˜ 플러그ì¸ì´ 있습니다" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "%2$sì˜ %3$d번째 줄ì—ì„œ \"%1$s\" ì •ì±… í”ŒëŸ¬ê·¸ì¸ ë¬´ì‹œ" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "ë‹¨ì¼ ì •ì±… 플러그ì¸ì„ ì§€ì •í•˜ì‹ì‹œì˜¤" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "%2$sì— ì•Œ 수 없는 ì •ì±… ìœ í˜• %1$dì´(ê°€) 있습니다" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "%s ì •ì±… 플러그ì¸ì— check_policy 메서드가 없습니다" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "내부 오류, %s 오버플로우" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" -msgstr "ìž˜ëª»ëœ í™˜ê²½ 변수 ì´ë¦„: %s" +msgstr "부ì ì ˆí•œ 환경 변수 ì´ë¦„: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-Cì˜ ì¸ìž ê°’ì€ 3보다 í¬ê±°ë‚˜ 같아야 합니다" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "-i 옵션과 -s ì˜µì…˜ì„ í•¨ê»˜ ì§€ì •í• ìˆ˜ 없습니다" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "-i 옵션과 -E ì˜µì…˜ì„ í•¨ê»˜ ì§€ì •í• ìˆ˜ 없습니다" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "-E ì˜µì…˜ì€ íŽ¸ì§‘ 모드ì—ì„œ ìœ íš¨í•˜ì§€ 않습니다" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "편집 모드ì—ì„œ 환경 변수를 ì§€ì •í• ìˆ˜ 없습니다" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "-U 옵션ì—는 -l 옵션만 함께 쓸 수 있습니다" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "-A 옵션과 -S ì˜µì…˜ì„ í•¨ê»˜ 쓸 수 없습니다" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "ì´ í”Œëž«í¼ì—ì„œ sudoedit를 지ì›í•˜ì§€ 않습니다" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "-e, -h, -i, -K, -l, -s, -v, -V 옵션 중 하나를 ì§€ì •í•´ì•¼ 합니다" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -472,7 +513,7 @@ msgstr "" "%s - 다른 ì‚¬ìš©ìž ê¶Œí•œìœ¼ë¡œ 파ì¼ì„ 편집합니다\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -481,7 +522,7 @@ msgstr "" "%s - 다른 ì‚¬ìš©ìž ê¶Œí•œìœ¼ë¡œ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -489,131 +530,131 @@ msgstr "" "\n" "옵션:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "암호 ì§ˆë¬¸ì— ë³´ì¡° 프로그램 활용" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "ì§€ì • BSD ì¸ì¦ í˜•ì‹ í™œìš©" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "백그ë¼ìš´ë“œì—ì„œ ëª…ë ¹ 실행" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "프롬프트를 ë„울 ë•Œ 알림 소리를 냅니다" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "num 보다 í¬ê±°ë‚˜ ê°™ì€ ëª¨ë“ íŒŒì¼ ì„œìˆ ìžë¥¼ 닫습니다" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "ì§€ì • BSD ë¡œê·¸ì¸ í´ëž˜ìŠ¤ë¡œ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "ëª…ë ¹ 실행 ì „ ìž‘ì—… ë””ë ‰í„°ë¦¬ë¥¼ 바꿉니다" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "ëª…ë ¹ì„ ì‹¤í–‰í• ë•Œ ì‚¬ìš©ìž í™˜ê²½ì„ ìœ ì§€í•©ë‹ˆë‹¤" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "ì§€ì • 환경 변수 ê°’ì„ ìœ ì§€í•©ë‹ˆë‹¤" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "ëª…ë ¹ì„ ì‹¤í–‰í•˜ëŠ” ëŒ€ì‹ íŒŒì¼ì„ 편집합니다" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "ì§€ì • 그룹 ì´ë¦„ ë˜ëŠ” IDë¡œ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "ëŒ€ìƒ ì‚¬ìš©ìžì˜ ë‚´ í´ë”ì— HOME 변수를 ì§€ì •í•©ë‹ˆë‹¤" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "ë„움ë§ì„ ë³´ì—¬ì£¼ê³ ë¹ ì ¸ë‚˜ê°‘ë‹ˆë‹¤" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "(플러그ì¸ì—ì„œ 지ì›í•œë‹¤ë©´)호스트ì—ì„œ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "ëŒ€ìƒ ì‚¬ìš©ìž ìžê²©ìœ¼ë¡œ ì…¸ì— ë¡œê·¸ì¸í•˜ë©° ëª…ë ¹ì„ ì§€ì •í• ìˆ˜ 있습니다" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "타임스탬프 파ì¼ì„ ì™„ì „ížˆ ì œê±°í•©ë‹ˆë‹¤" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "타임스탬프 파ì¼ì„ 초기화합니다" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "ì‚¬ìš©ìž ê¶Œí•œì„ ë³´ì—¬ì£¼ê±°ë‚˜ ì§€ì • ëª…ë ¹ì„ í™•ì¸í•©ë‹ˆë‹¤. 긴 형ì‹ìœ¼ë¡œ ë³´ë ¤ë©´ ì˜µì…˜ì„ ë‘ ë²ˆ 사용하ì‹ì‹œì˜¤" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "비대화형 모드. 프롬프트를 사용하지 않습니다" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "대ìƒì„ ì„¤ì •í•˜ëŠ” ëŒ€ì‹ ê·¸ë£¹ 벡터를 ìœ ì§€í•©ë‹ˆë‹¤" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "ì§€ì • 암호 프롬프트를 활용합니다" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "ëª…ë ¹ 실행 ì „ 루트 ë””ë ‰í„°ë¦¬ë¥¼ 바꿉니다" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "ì§€ì • ì—í• ì„ ì§€ë‹Œ SELinux 보안 컨í…스트를 만ë“니다" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "표준 ìž…ë ¥ìœ¼ë¡œ 암호를 ìž…ë ¥ 받습니다" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "ì…¸ì„ ëŒ€ìƒ ì‚¬ìš©ìž ëª…ì˜ë¡œ 실행하며 ëª…ë ¹ì„ ì§€ì •í• ìˆ˜ 있습니다" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "ì§€ì • ìœ í˜•ì˜ SELinux 보안 컨í…스트를 만ë“니다" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "ì§€ì • ì œí•œ 시간 ì´í›„ë¡œ ëª…ë ¹ ì‹¤í–‰ì„ ë©ˆì¶¥ë‹ˆë‹¤" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "ëª©ë¡ ëª¨ë“œì—ì„œ ì‚¬ìš©ìž ê¶Œí•œì„ ë³´ì—¬ì¤ë‹ˆë‹¤" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "ì§€ì •í•œ ì‚¬ìš©ìž ì´ë¦„ ë˜ëŠ” IDë¡œ ëª…ë ¹ì„ ì‹¤í–‰(ë˜ëŠ” íŒŒì¼ íŽ¸ì§‘)" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "ë²„ì „ ì •ë³´ë¥¼ ë³´ì—¬ì£¼ê³ ë‚˜ê°‘ë‹ˆë‹¤" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ ì•Šê³ ì‚¬ìš©ìž íƒ€ìž„ìŠ¤íƒ¬í”„ë¥¼ ì—…ë°ì´íŠ¸í•©ë‹ˆë‹¤" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "ëª…ë ¹í–‰ ì¸ìž 처리를 멈춥니다" @@ -722,33 +763,33 @@ msgstr "키 ìƒì„± 컨í…스트를 %s(으)ë¡œ ì„¤ì •í• ìˆ˜ 없습니다" msgid "requires at least one argument" msgstr "최소한 í•˜ë‚˜ì˜ ì¸ìžê°€ 필요합니다" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" -msgstr "ìž˜ëª»ëœ íŒŒì¼ ì„œìˆ ìž ë²ˆí˜¸: %s" +msgstr "부ì ì ˆí•œ íŒŒì¼ ì„œìˆ ìž ë²ˆí˜¸: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "%s(ì„)를 ë¡œê·¸ì¸ ì‰˜ë¡œ ì‹¤í–‰í• ìˆ˜ 없습니다" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: ì‹¬ë³¼ë¦ ë§í¬ íŽ¸ì§‘ì„ í—ˆìš©í•˜ì§€ 않습니다" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: ê¸°ë¡ ê°€ëŠ¥í•œ ë””ë ‰í„°ë¦¬ì—ì„œ íŒŒì¼ íŽ¸ì§‘ì„ í—ˆìš©í•˜ì§€ 않습니다" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "%sì— íŽ¸ì§‘ 세션 ë‚´ìš© 남ìŒ" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "그룹 목ë¡ì„ ê°€ì ¸ì˜¬ 수 없습니다" @@ -800,195 +841,191 @@ msgstr "\"%s\" 프로ì 트ì—ì„œ setprojectì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "ê²½ê³ ! \"%s\" 프로ì íŠ¸ì— ìžì› 처리 í• ë‹¹ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "sudo ë²„ì „ %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "ì„¤ì • 옵션: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "치명ì ì¸ ì˜¤ë¥˜. 플러그ì¸ì„ 불러올 수 없습니다" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "플러그ì¸ì—ì„œ ì‹¤í–‰í• ëª…ë ¹ì„ ë°˜í™˜í•˜ì§€ 않았습니다" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "예ìƒì¹˜ 못한 sudo 모드 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "%s ë°ì´í„°ë² ì´ìŠ¤ì— 없는 사용ìžìž…니다" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "tty를 ì§€ì •í• ìˆ˜ 없습니다" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%sì€(는) %d uid를 ì†Œìœ í•´ì•¼ 하며 setuid 비트를 ì„¤ì •í•´ì•¼ 합니다" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "%dì€(는) ìœ íš¨í•œ uidê°€ 아닙니다. %sì€(는) 'nosuid' ì˜µì…˜ì„ ì„¤ì •í•œ íŒŒì¼ ì‹œìŠ¤í…œì´ê±°ë‚˜ 루트 ê¶Œí•œì´ ì—†ëŠ” NFS íŒŒì¼ ì‹œìŠ¤í…œìž…ë‹ˆê¹Œ?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "%dì€(는) ìœ íš¨í•œ uidê°€ 아닙니다. sudoì— setuid root를 설치했습니까?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "추가 그룹 ID를 ì„¤ì •í• ìˆ˜ 없습니다" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "ìœ íš¨í•œ gid를 %u 실행 gidë¡œ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "gid를 실행 gid %u(으)ë¡œ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "예ìƒì¹˜ 못한 하위 프로세스 중단 ìƒíƒœ: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "ì •ì±… 플러그ì¸ì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "%s ì •ì±… 플러그ì¸ì— \"check_policy\" 메서드가 ë¹ ì¡ŒìŠµë‹ˆë‹¤" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "ì •ì±…ì„ í†µí•´ ëª…ë ¹ì„ ê±°ë¶€ 했습니다" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "ì •ì±… í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "%s ì •ì±… 플러그ì¸ì—ì„œ 권한 조회를 지ì›í•˜ì§€ 않습니다" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "%s ì •ì±… 플러그ì¸ì—ì„œ -v ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않습니다" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "%s ì •ì±… 플러그ì¸ì—ì„œ -k/-K ì˜µì…˜ì„ ì§€ì›í•˜ì§€ 않습니다" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "%s ìž…ì¶œë ¥ í”ŒëŸ¬ê·¸ì¸ ì´ˆê¸°í™” 오류" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "ìž…ì¶œë ¥ í”ŒëŸ¬ê·¸ì¸ ì´ˆê¸°í™” 오류" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "%s ê°ì‚¬ í”ŒëŸ¬ê·¸ì¸ ì´ˆê¸°í™” 오류" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: %s%s 오류 ì´ë²¤íŠ¸ë¥¼ 기ë¡í• 수 없습니다" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: %s%s 허용 ì´ë²¤íŠ¸ë¥¼ 기ë¡í• 수 없습니다" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "ê°ì‚¬ í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: %s%s 거부 ì´ë²¤íŠ¸ë¥¼ 기ë¡í• 수 없습니다" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "%s ìŠ¹ì¸ í”ŒëŸ¬ê·¸ì¸ ì´ˆê¸°í™” 오류" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "승ì¸ìžê°€ ëª…ë ¹ì„ ê±°ë¶€í–ˆìŠµë‹ˆë‹¤" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "ìŠ¹ì¸ í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "ê¸°ë¡ ê°€ëŠ¥í•œ ìž„ì‹œ ë””ë ‰í„°ë¦¬ë¥¼ ì°¾ì„ ìˆ˜ 없습니다" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s ìˆ˜ì •í•˜ì§€ ì•Šì€ ìƒíƒœë¡œ 남ìŒ" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s 바꾸지 ì•ŠìŒ" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: 내부 오류: ê²½ë¡œì— ìž˜ëª»ëœ íŒŒì¼" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: ìž„ì‹œ 파ì¼ì„ 만들 수 없습니다" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: 시그ë„ì„ ë°›ì•„ 죽ìŒ" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: ìž˜ëª»ëœ ì˜¤ë¥˜ %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "ì›ìœ„ì¹˜ì— ìž„ì‹œ 파ì¼ì„ ë³µì‚¬í• ìˆ˜ 없습니다" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "ì› ìœ„ì¹˜ì— ìž„ì‹œ íŒŒì¼ ì¼ë¶€ë¥¼ ë³µì‚¬í• ìˆ˜ 없습니다" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "uid를 루트로 바꿀 수 없습니다(%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "í”ŒëŸ¬ê·¸ì¸ ì˜¤ë¥˜: sudoeditì— íŒŒì¼ ëª©ë¡ì´ ë¹ ì§" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "í´ë¡ì„ ì½ì„ 수 없습니다" @@ -1012,33 +1049,36 @@ msgstr "암호를 ì½ìœ¼ë ¤ë©´ 터미ë„ì´ í•„ìš”í•©ë‹ˆë‹¤. -S ì˜µì…˜ì„ ì‚¬ìš© msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "askpass í”„ë¡œê·¸ëž¨ì„ ì§€ì •í•˜ì§€ 않았습니다. SUDO_ASKPASS를 ì„¤ì •í•´ë³´ì‹ì‹œì˜¤" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "gid를 %u(으)ë¡œ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "uid를 %u(으)ë¡œ ì„¤ì •í• ìˆ˜ 없습니다" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "%sì„(를) ì‹¤í–‰í• ìˆ˜ 없습니다" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "표준 ìž…ë ¥ì„ ì €ìž¥í• ìˆ˜ 없습니다" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "표준 ìž…ë ¥ì„ dup2 ì²˜ë¦¬í• ìˆ˜ 없습니다" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "표준 ìž…ë ¥ì„ ë³µì›í• 수 없습니다" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" #~ msgstr "%2$sì˜ %3$d번째 줄ì—ì„œ \"%1$s\" 중복 ì •ì±… í”ŒëŸ¬ê·¸ì¸ ë¬´ì‹œ" @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-03 20:38+0100\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-20 16:53+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" "Language: pl\n" @@ -30,75 +30,78 @@ msgid "unable to restore registry" msgstr "nie udaÅ‚o siÄ™ odtworzyć rejestru" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "nie udaÅ‚o siÄ™ otworzyć %s" @@ -108,7 +111,7 @@ msgstr "nie udaÅ‚o siÄ™ otworzyć %s" msgid "unable to mkdir %s" msgstr "nie udaÅ‚o siÄ™ utworzyć katalogu %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "nie udaÅ‚o siÄ™ wykonać stat na %s" @@ -123,7 +126,7 @@ msgid "Unknown signal" msgstr "Nieznany sygnaÅ‚" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "bÅ‚Ä™dna wartość" @@ -135,42 +138,42 @@ msgstr "wartość zbyt duża" msgid "value too small" msgstr "wartość zbyt maÅ‚a" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "bÅ‚Ä™dna wartość Path \"%s\" w %s, w linii %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "bÅ‚Ä™dna wartość opcji %s \"%s\" w %s, w linii %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "nieobsÅ‚ugiwane źródÅ‚o grup \"%s\" w %s, w linii %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "bÅ‚Ä™dna maksymalna liczba grup \"%s\" w %s, w linii %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s nie jest zwykÅ‚ym plikiem" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "wÅ‚aÅ›cicielem %s jest uid %u, powinien być %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s jest zapisywalny dla Å›wiata" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s jest zapisywalny dla grupy" @@ -190,12 +193,12 @@ msgstr "bez nadpisywania %s" msgid "unable to read from %s" msgstr "nie można czytać z %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "nie można pisać do %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: nie jest zwykÅ‚ym plikiem" @@ -209,50 +212,112 @@ msgstr "%s: bÅ‚Ä™dny tryb pliku: 0%o" msgid "unable to restore current working directory" msgstr "nie udaÅ‚o siÄ™ odtworzyć bieżącego kartalogu roboczego" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "nieznana klasa logowania %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "nie udaÅ‚o siÄ™ ustawić kontekstu użytkownika" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "nie udaÅ‚o siÄ™ ustawić priorytetu procesu" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "nie udaÅ‚o siÄ™ zmienić katalogu głównego na %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "nie udaÅ‚o siÄ™ zmienić uid-ów, aby dziaÅ‚ać jako (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "nie udaÅ‚o siÄ™ zmienić katalogu na %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "zaczynajÄ…c od %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "nie udaÅ‚o siÄ™ ustawić procedury obsÅ‚ugi dla sygnaÅ‚u %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "nie udaÅ‚o siÄ™ usunąć PRIV_PROC_EXEC z PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "nie udaÅ‚o siÄ™ wykonać dup deskryptora przechwycenia" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "bÅ‚Ä™dne żądanie PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "polecenie odrzucone przez politykÄ™" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "bÅ‚Ä…d wtyczki polityki" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "komunikat klienta zbyt duży: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "nieoczekiwana wartość type_case %d w %s od %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "nie udaÅ‚o siÄ™ dodać zdarzenia do kolejki" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "komunikat serwera zbyt duży: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: brak nagłówka komunikatu" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: oczekiwano komunikatu typu %d, otrzymano %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "bÅ‚Ä…d odczytu z pary gniazd" @@ -262,204 +327,180 @@ msgstr "bÅ‚Ä…d odczytu z pary gniazd" msgid "unexpected reply type on backchannel: %d" msgstr "nieoczekiwany typ odpowiedzi z kanaÅ‚u zwrotnego: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "nie udaÅ‚o siÄ™ dodać zdarzenia do kolejki" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "nie udaÅ‚o siÄ™ ustawić sterujÄ…cego tty" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "nie udaÅ‚o siÄ™ utworzyć potoku" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "nie udaÅ‚o siÄ™ odebrać komunikatu od rodzica" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "nie udaÅ‚o siÄ™ wykonać fork" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "nie udaÅ‚o siÄ™ przywrócić etykiety tty" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "nie udaÅ‚o siÄ™ wykonać %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "nie udaÅ‚o siÄ™ zainicjować sesji przez wtyczkÄ™ polityki" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "nie udaÅ‚o siÄ™ utworzyć gniazd" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "bÅ‚Ä…d w pÄ™tli zdarzeÅ„" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "nie udaÅ‚o siÄ™ przywrócić procedury obsÅ‚ugi dla sygnaÅ‚u %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "nie udaÅ‚o siÄ™ przydzielić pty" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "bÅ‚Ä…d wtyczki we/wy" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "polecenie odrzucone przez wtyczkÄ™ we/wy" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "bÅ‚Ä…d logowania odroczenia" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "bÅ‚Ä…d zmiany rozmiaru okna" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "nie udaÅ‚o siÄ™ utworzyć gniazd" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "nie udaÅ‚o siÄ™ wysÅ‚ać komunikatu do procesu monitorujÄ…cego" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "bÅ‚Ä…d w %s, w linii %d podczas wczytywania wtyczki \"%s\"" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "wÅ‚aÅ›cicielem %s musi być uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "prawo zapisu do %s może mieć tylko wÅ‚aÅ›ciciel" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "zignotowano powtórzonÄ… wtyczkÄ™ \"%s\" w %s, w linii %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "nie udaÅ‚o siÄ™ zaÅ‚adować %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nie udaÅ‚o siÄ™ odnaleźć symbolu \"%s\" w %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "niezgodna główna wersja polityki %d (zamiast oczekiwanej %d) napotkana w %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "zignorowano wtyczkÄ™ polityki \"%s\" w %s, w linii %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "może być podana tylko jedna wtyczka polityki" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nieznany typ wtyczki %d napotkany w %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "wtyczka polityki %s nie zawiera metody check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "bÅ‚Ä…d wewnÄ™trzny, przepeÅ‚nienie %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "bÅ‚Ä™dna nazwa zmiennej Å›rodowiskowej: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argument opcji -C musi być wiÄ™kszy lub równy 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "nie można podać jednoczeÅ›nie opcji -i oraz -s" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "nie można podać jednoczeÅ›nie opcji -i oraz -E" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "opcja -E nie jest poprawna w trybie edycji" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "w trybie edycji nie można przekazywać zmiennych Å›rodowiskowych" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "opcji -U można używać tylko wraz z opcjÄ… -l" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "opcji -A oraz -S nie można używać jednoczeÅ›nie" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit nie jest obsÅ‚ugiwane na tej platformie" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Można podać tylko jednÄ… z opcji -e, -h, -i, -K, -l, -s, -v lub -V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -468,7 +509,7 @@ msgstr "" "%s - modyfikowanie plików jako inny użytkownik\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -477,7 +518,7 @@ msgstr "" "%s - wykonywanie poleceÅ„ jako inny użytkownik\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -485,131 +526,131 @@ msgstr "" "\n" "Opcje:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "użycie programu pomocniczego do pytaÅ„ o hasÅ‚o" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "użycie podanego rodzaju uwierzytelnienia BSD" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "uruchomienie polecenia w tle" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "dzwonek przy zapytaniu" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "zamkniÄ™cie wszystkich deskryptorów >= fd" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "uruchomienie polecenia z podanÄ… klasÄ… logowania BSD" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "zmiana katalogu roboczego przed uruchomieniem polecenia" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "zachowanie Å›rodowiska użytkownika przy uruchamianiu polecenia" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "zachowanie okreÅ›lonych zmiennych Å›rodowiskowych" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "modyfikowanie plików zamiast uruchomienia polecenia" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "wywoÅ‚anie polecenia jako okreÅ›lona grupa lub ID" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "ustawienie zmiennej HOME na katalog domowy użytkownika docelowego" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "wyÅ›wietlenie opisu i zakoÅ„czenie" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "uruchomienie polecenia na hoÅ›cie (jeÅ›li obsÅ‚ugiwane przez wtyczkÄ™)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "uruchomienie powÅ‚oki logowania jako użytkownik docelowy; można także podać polecenie" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "caÅ‚kowite usuniÄ™cie pliku znacznika czasu" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "unieważnienie pliku znacznika czasu" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "wypisanie uprawnieÅ„ użytkownika lub sprawdzenie okreÅ›lonego polecenia; dwukrotne użycie to dÅ‚uższy format" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "tryb nieinteraktywny, bez pytaÅ„" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "zachowanie wektora grup zamiast ustawiania docelowych" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "użycie podanego pytania o hasÅ‚o" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "zmiana katalogu głównego przed uruchomieniem polecenia" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "utworzenie kontekstu bezpieczeÅ„stwa SELinuksa z podanÄ… rolÄ…" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "odczyt hasÅ‚a ze standardowego wejÅ›cia" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "uruchomienie powÅ‚oki jako użytkownik docelowy; można także podać polecenie" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "utworzenie kontekstu bezpieczeÅ„stwa SELinuksa z podanym typem" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "zakoÅ„czenie polecenia po zadanym limicie czasu" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "w trybie listy - wyÅ›wietlenie uprawnieÅ„ użytkownika" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "uruchomienie polecenia (lub modyfikowanie pliku) jako podany użytkownik lub ID" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "wyÅ›wietlenie informacji o wersji i zakoÅ„czenie" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "uaktualnienie znacznika czasu użytkownika bez uruchamiania polecenia" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "zakoÅ„czenie przetwarzania argumentów linii poleceÅ„" @@ -718,33 +759,33 @@ msgstr "nie udaÅ‚o siÄ™ ustawić kontekstu tworzenia klucza na %s" msgid "requires at least one argument" msgstr "wymagany jest przynajmniej jeden argument" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "bÅ‚Ä™dny numer deskryptora pliku: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "nie udaÅ‚o siÄ™ uruchomić %s jako powÅ‚oki logowania" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: edycja dowiÄ…zaÅ„ symbolicznych nie jest dozwolona" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: edycja plików w katalogu zapisywalnym nie jest dozwolona" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "zawartość sesji edycji pozostawiono w %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "nie udaÅ‚o siÄ™ uzyskać listy grup" @@ -796,195 +837,191 @@ msgstr "setproject dla projektu \"%s\" nie powiodÅ‚o siÄ™" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "uwaga: przypisanie kontroli zasobów dla projektu \"%s\" nie powiodÅ‚o siÄ™" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo wersja %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Opcje konfiguracji: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "bÅ‚Ä…d krytyczny, nie udaÅ‚o siÄ™ zaÅ‚adować wtyczek" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "wtyczka nie zwróciÅ‚a polecenia do wykonania" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "nieoczekiwany tryb sudo 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "nie istniejesz w bazie danych %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "nie udaÅ‚o siÄ™ okreÅ›lić tty" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s musi mieć uid %d jako wÅ‚aÅ›ciciela oraz ustawiony bit setuid" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "efektywny uid nie wynosi %d, czy %s jest na systemie plików z opcjÄ… 'nosuid' albo systemie plików NFS bez uprawnieÅ„ roota?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "efektywny uid nie wynosi %d, czy sudo jest zainstalowane z setuid root?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "nie udaÅ‚o siÄ™ ustawić ID dodatkowych grup" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "nie udaÅ‚o siÄ™ ustawić efektywnego gid-a w celu dziaÅ‚ania jako gid %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "nie udaÅ‚o siÄ™ ustawić gid-a w celu dziaÅ‚ania jako gid %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "nieoczekiwane zakoÅ„czenie procesu potomnego: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "nie udaÅ‚o siÄ™ zainicjować wtyczki polityki" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "wtyczka polityki %s nie zawiera metody \"check_policy\"" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "polecenie odrzucone przez politykÄ™" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "bÅ‚Ä…d wtyczki polityki" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "wtyczka polityki %s nie obsÅ‚uguje wypisywania uprawnieÅ„" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "wtyczka polityki %s nie obsÅ‚uguje opcji -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "wtyczka polityki %s nie obsÅ‚uguje opcji -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "bÅ‚Ä…d inicjalizacji wtyczki we/wy %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "bÅ‚Ä…d inicjowania wtyczki we/wy" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "bÅ‚Ä…d inicjowania wtyczki audytu %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: nie udaÅ‚o siÄ™ zalogować zdarzenia bÅ‚Ä™du%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: nie udaÅ‚o siÄ™ zalogować zdarzenia akceptacji%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "bÅ‚Ä…d wtyczki audytu" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: nie udaÅ‚o siÄ™ zalogować zdarzenia odrzucenia%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "bÅ‚Ä…d inicjowania wtyczki zgody %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "polecenie odrzucone przez wtyczkÄ™ zgody" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "bÅ‚Ä…d wtyczki zgody" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "nie znaleziono katalogu tymczasowego z prawem zapisu" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "pozostawiono bez zmian: %s" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "nie zmieniono: %s" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: bÅ‚Ä…d wewnÄ™trzny: nieparzysta liczba Å›cieżek" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: nie udaÅ‚o siÄ™ utworzyć plików tymczasowych" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: zabito sygnaÅ‚em" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nieznany bÅ‚Ä…d %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "nie udaÅ‚o siÄ™ skopiować plików tymczasowych z powrotem w ich oryginalne miejsce" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "nie udaÅ‚o siÄ™ skopiować części plików tymczasowych z powrotem w ich oryginalne miejsce" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "nie udaÅ‚o siÄ™ zmienić uid-a na roota (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "bÅ‚Ä…d wtyczki: brak listy plików dla sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "nie udaÅ‚o siÄ™ odczytać zegara" @@ -1008,29 +1045,29 @@ msgstr "do odczytu hasÅ‚a wymagany jest terminal; należy użyć opcji -S, aby c msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "nie podano programu pytajÄ…cego o hasÅ‚o, proszÄ™ spróbować ustawić SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "nie udaÅ‚o siÄ™ ustawić gid-a na %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "nie udaÅ‚o siÄ™ ustawić uid-a na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "nie udaÅ‚o siÄ™ uruchomić %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "nie udaÅ‚o siÄ™ zapisać standardowego wejÅ›cia" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "nie udaÅ‚o siÄ™ wykonać dup2 na standardowym wejÅ›ciu" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "nie udaÅ‚o siÄ™ przywrócić standardowego wejÅ›cia" Binary files differ@@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.6b1\n" +"Project-Id-Version: sudo-1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 08:02+0000\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-22 06:55+0100\n" "Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n" "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" "Language: pt\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Geany / PoHelper 1.37\n" +"X-Generator: Poedit 2.3\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "impossÃvel restaurar o registo" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "impossÃvel alocar memória" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "impossÃvel abrir %s" @@ -111,7 +114,7 @@ msgstr "impossÃvel abrir %s" msgid "unable to mkdir %s" msgstr "impossÃvel executar mkdir %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "impossÃvel obter informações de %s" @@ -126,7 +129,7 @@ msgid "Unknown signal" msgstr "Sinal desconhecido" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "valor inválido" @@ -138,42 +141,42 @@ msgstr "valor muito grande" msgid "value too small" msgstr "valor muito pequeno" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "valor de caminho inválido \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "valor inválido %s \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "fonte de grupo não suportada \"%s\" em %s, linna %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "máximo de grupos inválido \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s não é um ficheiro normal" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s é propriedade de uid %u, deveria ser %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s é escrito universalmente" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s é escrito pelo grupo" @@ -193,12 +196,12 @@ msgstr "não sobrescrever %s" msgid "unable to read from %s" msgstr "impossÃvel ler de %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "impossÃvel escrever em %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s não é um ficheiro normal" @@ -212,50 +215,112 @@ msgstr "%s: modo de ficheiro errado: 0%o" msgid "unable to restore current working directory" msgstr "impossÃvel restaurar pasta de trabalho actual" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "classe de sessão %s desconhecida" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "impossÃvel definir contexto de utilizador" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "impossÃvel processar prioridade" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "impossÃvel alterar root para %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "impossÃvel alterar para runas uid (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "impossÃvel alterar pasta para %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "começando em %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "impossÃvel definir gestor para sinal %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "impossÃvel remover PRIV_PROC_EXEC de PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "impossÃvel dup interceptar fd" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "PolicyCheckRequest inválido" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "cpmando rejeitado pela polÃtica" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "erro da extensão de polÃtica" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "mensagem do cliente muito grande: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "valor type_case %d inesperado em %s de %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "impossÃvel adicionar evento à fila" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "mensagem do servidor muito grande: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: cabeçalho da mensagem em falta" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: esperado tipo de mensagem %d, obtido %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "erro ao ler de socketpair" @@ -265,204 +330,180 @@ msgstr "erro ao ler de socketpair" msgid "unexpected reply type on backchannel: %d" msgstr "tipo de resposta inesperada no canal secundário: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "impossÃvel adicionar evento à fila" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "impossÃvel definir tty de controlo" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "impossÃvel criar túnel" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "impossÃvel receber mensagem de pai" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "impossÃvel bifurcar" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "impossÃvel restaurar rótulo tty" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "impossÃvel executar %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "a extensão de polÃtica falhou a inicialização de sessão" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "impossÃvel criar sockets" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "erro em ciclo de evento" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "impossÃvel restaurar gestor para o sinal %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "impossÃvel alocar pty" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "Erro da extensão E/S" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "comando rejeitado pela extensão E/S" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "erro ao registar suspensão" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "erro ao alterar o tamanho da janela" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "impossÃvel criar sockets" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "impossÃvel enviar mensagem para monitorizar processo" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "erro em %s, linha %d ao carregar a extensão \"%s\"" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s tem de ser propriedade de uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s só pode ter permissão de escrita para o dono" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "a ignorar extensão duplicada \"%s\" em %s, linha %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "impossÃvel carregar %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "impossÃvel encontrar sÃmbolo \"%s\" em %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "versão principal de extensão %d incompatÃvel (esperada %d) encontrada em %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "a ignorar extensão de polÃtica \"%s\" em %s, linha %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "só pode especificar um tipo de extensão de polÃtica" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "tipo de extensão %d desconhecida encontrada em %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "extensão de polÃtica %s não inclui um método check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "erro interno, transporte %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "nome de variável de ambiente inválido: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "o argumento para -C tem de ser um número maior ou igual a 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "não pode especificar ambas as opções \"-i\" e \"-s\"" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "não pode especificar ambas as opções \"-i\" e \"-E\"" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "a opção \"-E\" não é válida em modo de edição" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "não pode especificar variáveis de ambiente em modo de edição" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "a opção \"-U\" só pode ser usada com a opção \"-l\"" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "não pode especificar ambas as opções \"-A\" e \"-S\"" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit não é suportado nesta plataforma" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Só uma das opções -e, -h, -i, -K, -l, -s, -v ou -V pode ser especificada" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s - edita ficheiros como outro utilizador\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s - executa um comando como outro utilizador\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "Opções:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "usa um programa de ajuda para pedir a senha" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "usa um tipo de autenticação BSD especificado" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "executa o comando em 2º plano" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "tocar campainha ao pedir" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "fecha todos os descritores de ficheiros >= num" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "executa o comando com a classe de sessão BSD especificada" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "alterar a pasta de trabalho antes de executar o comando" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "preserva o ambiente de utilizador ao executar o comando" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "preserva variáveis de ambiente especÃficas" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "edita ficheiros em vez de executar um comando" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "executa o comando como nome de grupo ou ID especificados" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "define a variável HOME para a pasta home do utilizador alvo" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "mostra a ajuda e sai" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "executa o comando no anfitrião (se suportado pela extensão)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "executa a shell de sessão como utilizador alvo; também pode especificar um comando" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "remove completamente o ficheiro de datação" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "invalida o ficheiro de datação" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "lista privilégios do utilizador ou verifica um comando especÃfico; use duas vezes para formato mais longo" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "modo não-interactivo, não usa prompts" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "preserva vector de grupo em vez de o definir para o do alvo" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "usa o pedido de senha especificado" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "alterar a pasta raiz antes de executar o comando" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "cria contexto de segurnaça SELinux com o papel especificado" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "lê a senha da entrada padrão" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "executa a shell como utilizador alvo; também pode especificar um comando" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "cria contexto de segurnaça SELinux com o tipo especificado" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "termina o comando após o tempo limite especificado" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "em modo Lista, mostra os privilégios do utilizador" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "executa o comando (ou edita o ficheiro) como nome ou ID de utilizador especificados" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "mostra informação da versão e sai" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "actualiza datação do utilizador sem executar um comando" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "pára o processamento de argumentos da linha de comandos" @@ -721,33 +762,33 @@ msgstr "impossÃvel definir contexto de criação de chave para %s" msgid "requires at least one argument" msgstr "requer pelo menos um argumento" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "número de descritor de ficheiro inválido: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "impossÃvel executar %s como shell de sessão" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: não é permitido editar ligações simbólicas" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: não é permitido editar ficheiros numa pasta onde se pode escrever" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "conteúdo da sessão de edição deixados em %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "impossÃvel obter lista de grupo" @@ -799,195 +840,191 @@ msgstr "falha setproject para o projecto \"%s\"" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "aviso: falha na atribuição de controlo de recursos para o projecto \"%s\"" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo versão %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Opções de configuração: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "erro fatal, impossÃvel carregar extensões" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "a extensão não devolveu um comando a executar" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "modo sudo 0x%x inesperado" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "utilizador não existente na base de dados %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "impossÃvel determinar tty" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s tem ser propriedade de uid %d e ter o bit setuid definido" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "a uid efectiva não é %d, é %s num sistema de ficheiros com a opção 'nosuid' definida ou um sistema de ficheiros NFS sem privilégios root?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "a uid efectiva não é %d, tem sudo instalado com setuid root?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "impossÃvel definir IDs de grupo suplementares" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "impossÃvel definir gid efectiva para gid runas %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "impossÃvel definir gid para gid runas %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "condição de terminação de filho inesperada: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "impossÃvel inicializar a extensão de polÃtica" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "a extensão de polÃtica %s tem o método \"check_policy\" em falta" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "cpmando rejeitado pela polÃtica" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "erro da extensão de polÃtica" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "a extensão de polÃtica %s não suporta privilégios de listagem" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "a extensão de polÃtica %s não suporta a opção -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "a extensão de polÃtica %s não suporta as opções -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "erro ao inicializar a extensão E/S %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "erro ao inicializar a extensão E/S" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "erro ao inicializar a extensão de auditoria %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: impossÃvel registar evento%s%s de erro" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: impossÃvel registar evento%s%s de aceitação" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "erro da extensão de auditoria" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: impossÃvel registar evento%s%s de rejeição" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "erro ao inicializar a extensão de aprovação %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "comando rejeitado pelo aprovador" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "erro da extensão de aprovação" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "sem pasta temporária onde possa escrever" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s deixado sem alterações" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s não alterado" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: erro interno: número de caminhos Ãmpar" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: impossÃvel criar ficheiros temporários" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: morto por um sinal" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: erro %d desconhecido" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "impossÃvel copiar ficheiros temporários de volta à localização original" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "impossÃvel copiar alguns ficheiros temporários de volta à localização original" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "impossÃvel alterar uid para root (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "erro de extensão: lista de ficheiros para sudoedit em falta" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "impossÃvel ler o relógio" @@ -1011,33 +1048,36 @@ msgstr "é necessário um terminal para ler a senha; use a opção -S para ler d msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "sem programa askpass especificado, tente definir SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "impossÃvel definir gid para %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "impossÃvel definir uid para %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "impossÃvel executar %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "impossÃvel gravar stdin" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "impossÃvel dup2 stdin" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "impossÃvel restaurar stdin" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: escrita curta" diff --git a/po/pt_BR.mo b/po/pt_BR.mo Binary files differindex 93c8d7c5c..aba8c2dc6 100644 --- a/po/pt_BR.mo +++ b/po/pt_BR.mo diff --git a/po/pt_BR.po b/po/pt_BR.po index d93507ed9..7891d0492 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-04 04:47-0300\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-22 09:59-0300\n" "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n" "Language: pt_BR\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" -"X-Generator: Gtranslator 3.38.0\n" +"X-Generator: Gtranslator 40.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -34,75 +34,78 @@ msgid "unable to restore registry" msgstr "não foi possÃvel restaurar registro" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "não foi possÃvel alocar memória" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "não foi possÃvel abrir %s" @@ -112,7 +115,7 @@ msgstr "não foi possÃvel abrir %s" msgid "unable to mkdir %s" msgstr "não foi possÃvel criar diretório %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "não foi possÃvel obter o estado de %s" @@ -127,7 +130,7 @@ msgid "Unknown signal" msgstr "Sinal desconhecido" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "valor inválido" @@ -139,42 +142,42 @@ msgstr "valor grande demais" msgid "value too small" msgstr "valor pequeno demais" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "Path inválido com valor \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "Valor inválido para %s \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "fonte de grupo sem suporte \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "máximo de grupos inválido \"%s\" em %s, linha %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s não é um arquivo comum" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s tem como dono o uid %u, deveria ser %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s é gravável globalmente" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s é gravável pelo grupo" @@ -194,12 +197,12 @@ msgstr "não vou sobrescrever %s" msgid "unable to read from %s" msgstr "não foi possÃvel ler de %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "não foi possÃvel gravar em %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: não é um arquivo comum" @@ -213,50 +216,112 @@ msgstr "%s: mode inválido de arquivo: 0%o" msgid "unable to restore current working directory" msgstr "não foi possÃvel restaurar o diretório de trabalho atual" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "classe de login desconhecida %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "não foi possÃvel definir contexto de usuário" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "não foi possÃvel definir prioridade do processo" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "não foi possÃvel alterar a raiz para %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "não foi possÃvel alterar para uid de \"runas\" (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "não foi possÃvel alterar diretório para %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "iniciando a partir de %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "não foi possÃvel definir manipulador para sinal %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "não foi possÃvel remover PRIV_PROC_EXEC de PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "não foi possÃvel realizar dup de interceptação de fd" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "PolicyCheckRequest inválida" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "comando rejeitado pela polÃtica" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "erro de plug-in de polÃtica" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "mensagem do cliente grande demais: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "type_case com valor inesperado %d em %s de %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "não foi possÃvel adicionar um evento à fila" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "mensagem do servidor grande demais: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: faltando o cabeçalho de mensagens" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: esperava mensagem do tipo %d, obteve %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "erro ao ler do par de soquetes" @@ -266,204 +331,180 @@ msgstr "erro ao ler do par de soquetes" msgid "unexpected reply type on backchannel: %d" msgstr "tipo de resposta inesperada no canal de retorno: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "não foi possÃvel adicionar um evento à fila" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "não foi possÃvel definir tty de controle" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "não foi possÃvel criar um encadeamento (pipe)" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "não foi possÃvel receber mensagem de pai" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "não foi possÃvel fazer fork" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "não foi possÃvel restaurar rótulo de tty" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "não foi possÃvel executar %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "plug-in de polÃtica falhou ao inicializar da sessão" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "não foi possÃvel criar soquetes" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "erro em loop de evento" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "não foi possÃvel restaurar manipulador para sinal %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "não foi possÃvel alocar pty" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "erro no plug-in de E/S" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "comando rejeitado pelo plug-in de E/S" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "erro a registrar a suspensão" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "erro ao alterar o tamanho da janela" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "não foi possÃvel criar soquetes" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "não foi possÃvel enviar mensagem para monitorar processo" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "erro em %s, linha %d ao carregar plug-in \"%s\"" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s deve ter como dono o uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s deve ser gravável apenas pelo dono" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ignorando plug-in \"%s\" duplicado em %s, linha %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "não foi possÃvel carregar %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "não foi possÃvel localizar sÃmbolo \"%s\" em %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "versão maior %d do plug-in incompatÃvel (esperava %d) localizada em %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ignorando plug-in de polÃtica \"%s\" em %s, linha %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "apenas um plug-in de polÃtica pode ser especificado" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "tipo de plug-in %d desconhecido localizado em %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "plug-in de polÃtica %s não inclui um método de check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "erro interno, estouro de pilha de %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "nome de variável de ambiente inválida: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "o argumento do -C deve ser um número maior ou igual a 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "você não pode especificar as opções -i e -s ao mesmo tempo" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "você não pode especificar as opções -i e -E ao mesmo tempo" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "a opção -E não é válida no modo de edição" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "você não pode especificar variáveis de ambiente no modo de edição" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "a opção -U pode ser usada apenas com a opção -l" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "as opções -A e -S não podem ser usadas ao mesmo tempo" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "não há suporte a sudoedit nesta plataforma" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Apenas uma das opções -e, -h, -i, -K, -l, -s, -v ou -V pode ser especificada" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -472,7 +513,7 @@ msgstr "" "%s - edita arquivos como outro usuário\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -482,7 +523,7 @@ msgstr "" "\n" # Deixei minúsculo para seguir o padrão das demais linhas do "sudo -h" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -490,131 +531,131 @@ msgstr "" "\n" "opções:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "usa um programa auxiliar para pedir senha" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "usa o tipo de autenticação BSD especificado" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "executa um comando em plano de fundo" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "toca campainha ao solicitar senha" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "fecha todos os descritores, de arquivos, >= num" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "executa um comando com uma classe de login BSD especificada" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "altera o diretório de trabalho antes de executar o comando" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "preserva um ambiente de usuário ao executar um comando" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "preserva variáveis de ambiente especÃficas" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "edita arquivos em vez de executar um comando" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "executa um comando como o ID ou nome de grupo especificado" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "define a variável HOME para a pasta pessoal do usuário alvo" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "exibe uma mensagem de ajuda e sai" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "executa o comando na máquina (se houver suporte pelo plug-in)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "executa um shell de login como usuário alvo; um comando também pode ser especificado" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "remove arquivo de marca de tempo completamente" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "invalida arquivo de marca de tempo" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "lista os privilégios do usuário ou verifica um comando especÃfico; use duas vezes para um formato maior" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "modo não interativo, não pergunta para o usuário" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "preserva vetor de grupos ao invés de definir para o do alvo" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "usa a senha especificada" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "altera o diretório raiz antes de executar o comando" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "cria um contexto de segurança SELinux com o papel especificado" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "lê a senha da entrada padrão" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "executa o shell como o usuário alvo; um comando também pode ser especificado" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "cria um contexto de segurança SELinux com o tipo especificado" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "termina o comando após o tempo limite especificado" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "no modo lista, exibe os privilégios por usuário" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "executa um comando (ou edita um arquivo) como o nome ou ID do usuário especificado" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "exibe as informações de versão e sai" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "atualiza a marca de tempo do usuário sem executar um comando" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "interrompe processamento de argumentos de linha de comando" @@ -723,33 +764,33 @@ msgstr "não foi possÃvel definir contexto de criação de chave para %s" msgid "requires at least one argument" msgstr "requer ao menos um argumento" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "número de descritor de arquivos inválido: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "não foi possÃvel executar %s como shell de login" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: edição de links simbólicos não é permitida" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: edição de arquivos em um diretório gravável não é permitida" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "conteúdo da sessão de edição deixado em %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "não foi possÃvel obter lista de grupos" @@ -801,195 +842,191 @@ msgstr "setproject falhou para o projeto \"%s\"" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "aviso, atribuição de controle de recursos falhou para o projeto \"%s\"" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo versão %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Opções de configuração: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "erro fatal, não foi possÃvel carregar os plug-ins" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "o plug-in não retornou um comando para ser executado" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "modo de sudo inesperado 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "você não existe no banco de dados %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "não foi possÃvel determinar o tty" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s deve ter como dono o uid %d e tem definido o bit setuid" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "uid efetivo não é %d, é %s em um sistema de arquivos com a opção \"nosuid\" defina ou um sistema de arquivos NFS sem privilégios de root?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "uid efetivo não é %d, sudo está instalado em uma raiz com setuid?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "não foi possÃvel definir IDs de grupo suplementares" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "não foi possÃvel definir gid efetivo para executar como gid %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "não foi possÃvel definir gid para executar como gid %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "condição inesperada de término de filho: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "não foi possÃvel inicializar plug-in de polÃtica" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "plug-in de polÃtica %s é sem o método \"check_policy\"" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "comando rejeitado pela polÃtica" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "erro de plug-in de polÃtica" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "plug-in de polÃtica %s não tem suporte a listagem de privilégios" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "plug-in de polÃtica %s não tem suporte à opção -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "plug-in de polÃtica %s não tem suporte à s opções -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "erro ao inicializar o plug-in de E/S %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "erro ao inicializar o plug-in de E/S" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "erro ao inicializar o plug-in de auditoria %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: não foi possÃvel registrar evento de erro%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: não foi possÃvel registrar evento de aceite%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "erro no plug-in de auditoria" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: não foi possÃvel registrar evento de rejeição%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "erro ao inicializar o plug-in de aprovação %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "comando rejeitado pelo aprovador" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "erro no plug-in de aprovação" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "nenhum diretório temporário gravável encontrado" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s não foi modificado" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s sem alteração" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: erro interno: número Ãmpar de caminhos" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: não foi possÃvel criar arquivos temporários" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: morto por um sinal" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: erro desconhecido: %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "não foi possÃvel copiar arquivos temporários de volta para sua localização original" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "não foi possÃvel copiar alguns dos arquivos temporários de volta para sua localização original" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "não foi possÃvel alterar uid de root (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "erro no plug-in: faltando lista de arquivo para sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "não foi possÃvel ler o relógio" @@ -1013,33 +1050,36 @@ msgstr "um terminal é necessário para ler a senha; use a opção -S para ler a msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "nenhum programa de askpass especificado, tente definir SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "não foi possÃvel definir gid para %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "não foi possÃvel definir uid para %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "não foi possÃvel executar %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "não foi possÃvel salvar a entrada padrão" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "não foi possÃvel realizar dup2 da entrada padrão" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "não foi possÃvel restaurar a entrada padrão" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: escrita curta" diff --git a/po/sudo.pot b/po/sudo.pot index f08c0d750..f04788a03 100644 --- a/po/sudo.pot +++ b/po/sudo.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.5\n" +"Project-Id-Version: sudo 1.9.8\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" +"POT-Creation-Date: 2021-09-01 13:39-0600\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" @@ -30,74 +30,79 @@ msgid "unable to restore registry" msgstr "" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1053 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:52 src/load_plugins.c:65 -#: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223 -#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181 -#: src/parse_args.c:202 src/parse_args.c:275 src/parse_args.c:616 -#: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46 -#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 -#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:143 src/sesh.c:149 -#: src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 src/sudo.c:632 src/sudo.c:702 -#: src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 src/sudo.c:761 src/sudo.c:770 -#: src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:218 +#: lib/util/sudo_conf.c:304 lib/util/sudo_conf.c:381 lib/util/sudo_conf.c:665 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:219 src/exec_nopty.c:228 +#: src/exec_nopty.c:235 src/exec_nopty.c:242 src/exec_nopty.c:249 +#: src/exec_nopty.c:256 src/exec_nopty.c:263 src/exec_nopty.c:270 +#: src/exec_nopty.c:277 src/exec_nopty.c:284 src/exec_nopty.c:291 +#: src/exec_nopty.c:298 src/exec_nopty.c:306 src/exec_nopty.c:500 +#: src/exec_preload.c:143 src/exec_preload.c:204 src/exec_pty.c:840 +#: src/exec_pty.c:849 src/exec_pty.c:906 src/exec_pty.c:1059 +#: src/exec_pty.c:1231 src/exec_pty.c:1240 src/exec_pty.c:1247 +#: src/exec_pty.c:1254 src/exec_pty.c:1261 src/exec_pty.c:1268 +#: src/exec_pty.c:1275 src/exec_pty.c:1282 src/exec_pty.c:1289 +#: src/exec_pty.c:1296 src/exec_pty.c:1303 src/exec_pty.c:1311 +#: src/exec_pty.c:1771 src/load_plugins.c:156 src/load_plugins.c:181 +#: src/load_plugins.c:217 src/load_plugins.c:449 src/load_plugins.c:455 +#: src/parse_args.c:190 src/parse_args.c:211 src/parse_args.c:285 +#: src/parse_args.c:630 src/parse_args.c:652 src/parse_args.c:677 +#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:113 +#: src/sesh.c:146 src/sesh.c:152 src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 +#: src/sudo.c:636 src/sudo.c:706 src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 +#: src/sudo.c:769 src/sudo.c:778 src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 +#: src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 src/sudo.c:1374 +#: src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:429 src/sudo_edit.c:438 +#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:686 +#: src/sudo_edit.c:706 src/sudo_intercept_common.c:113 +#: src/sudo_intercept_common.c:311 #, c-format msgid "%s: %s" msgstr "" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1225 -#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248 -#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269 -#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290 -#: src/exec_pty.c:1297 src/exec_pty.c:1305 src/exec_pty.c:1747 -#: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223 -#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181 -#: src/parse_args.c:203 src/parse_args.c:275 src/parse_args.c:616 -#: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46 -#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 -#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:408 src/sudo.c:236 -#: src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 -#: src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 -#: src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:219 lib/util/sudo_conf.c:304 +#: lib/util/sudo_conf.c:381 lib/util/sudo_conf.c:665 src/conversation.c:81 +#: src/exec_intercept.c:99 src/exec_intercept.c:315 src/exec_intercept.c:339 +#: src/exec_intercept.c:362 src/exec_intercept.c:370 src/exec_intercept.c:395 +#: src/exec_intercept.c:401 src/exec_intercept.c:410 src/exec_intercept.c:416 +#: src/exec_intercept.c:550 src/exec_intercept.c:691 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:219 src/exec_nopty.c:228 +#: src/exec_nopty.c:235 src/exec_nopty.c:242 src/exec_nopty.c:249 +#: src/exec_nopty.c:256 src/exec_nopty.c:263 src/exec_nopty.c:270 +#: src/exec_nopty.c:277 src/exec_nopty.c:284 src/exec_nopty.c:291 +#: src/exec_nopty.c:298 src/exec_nopty.c:306 src/exec_preload.c:143 +#: src/exec_preload.c:204 src/exec_pty.c:840 src/exec_pty.c:849 +#: src/exec_pty.c:906 src/exec_pty.c:1231 src/exec_pty.c:1240 +#: src/exec_pty.c:1247 src/exec_pty.c:1254 src/exec_pty.c:1261 +#: src/exec_pty.c:1268 src/exec_pty.c:1275 src/exec_pty.c:1282 +#: src/exec_pty.c:1289 src/exec_pty.c:1296 src/exec_pty.c:1303 +#: src/exec_pty.c:1311 src/exec_pty.c:1771 src/load_plugins.c:156 +#: src/load_plugins.c:181 src/load_plugins.c:217 src/load_plugins.c:449 +#: src/load_plugins.c:455 src/parse_args.c:190 src/parse_args.c:212 +#: src/parse_args.c:285 src/parse_args.c:630 src/parse_args.c:652 +#: src/parse_args.c:677 src/preserve_fds.c:46 src/preserve_fds.c:131 +#: src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 +#: src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 src/sudo.c:636 src/sudo.c:876 +#: src/sudo.c:1061 src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 +#: src/sudo.c:1770 src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 +#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:539 +#: src/sudo_edit.c:546 src/sudo_edit.c:686 src/sudo_edit.c:706 +#: src/sudo_intercept_common.c:113 src/sudo_intercept_common.c:311 msgid "unable to allocate memory" msgstr "" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:704 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "" @@ -107,7 +112,7 @@ msgstr "" msgid "unable to mkdir %s" msgstr "" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:681 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "" @@ -122,7 +127,7 @@ msgid "Unknown signal" msgstr "" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "" @@ -134,42 +139,42 @@ msgstr "" msgid "value too small" msgstr "" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:237 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:403 lib/util/sudo_conf.c:419 lib/util/sudo_conf.c:472 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:440 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:456 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is not a regular file" msgstr "" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:687 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:691 #, c-format msgid "%s is world writable" msgstr "" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:694 #, c-format msgid "%s is group writable" msgstr "" @@ -189,12 +194,12 @@ msgstr "" msgid "unable to read from %s" msgstr "" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "" @@ -208,50 +213,98 @@ msgstr "" msgid "unable to restore current working directory" msgstr "" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:558 src/exec_pty.c:581 src/exec_pty.c:1408 +#: src/exec_pty.c:1410 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "" +#: src/exec_intercept.c:111 src/exec_intercept.c:115 src/exec_intercept.c:652 +#: src/exec_intercept.c:656 src/exec_intercept.c:842 src/exec_intercept.c:846 +#: src/exec_intercept.c:856 src/exec_intercept.c:860 src/exec_monitor.c:464 +#: src/exec_monitor.c:472 src/exec_monitor.c:480 src/exec_monitor.c:487 +#: src/exec_monitor.c:494 src/exec_monitor.c:501 src/exec_monitor.c:508 +#: src/exec_monitor.c:515 src/exec_monitor.c:522 src/exec_monitor.c:529 +#: src/exec_nopty.c:221 src/exec_nopty.c:230 src/exec_nopty.c:237 +#: src/exec_nopty.c:244 src/exec_nopty.c:251 src/exec_nopty.c:258 +#: src/exec_nopty.c:265 src/exec_nopty.c:272 src/exec_nopty.c:279 +#: src/exec_nopty.c:286 src/exec_nopty.c:293 src/exec_nopty.c:300 +#: src/exec_nopty.c:308 src/exec_pty.c:706 src/exec_pty.c:711 +#: src/exec_pty.c:808 src/exec_pty.c:815 src/exec_pty.c:912 src/exec_pty.c:1233 +#: src/exec_pty.c:1242 src/exec_pty.c:1249 src/exec_pty.c:1256 +#: src/exec_pty.c:1263 src/exec_pty.c:1270 src/exec_pty.c:1277 +#: src/exec_pty.c:1284 src/exec_pty.c:1291 src/exec_pty.c:1298 +#: src/exec_pty.c:1305 src/exec_pty.c:1724 src/exec_pty.c:1734 +#: src/exec_pty.c:1779 src/exec_pty.c:1786 src/exec_pty.c:1813 +msgid "unable to add event to queue" +msgstr "" + +#: src/exec_intercept.c:299 +msgid "invalid PolicyCheckRequest" +msgstr "" + +#: src/exec_intercept.c:347 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "" + +#: src/exec_intercept.c:440 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "" + +#: src/exec_intercept.c:546 +#, c-format +msgid "client request too large: %zu" +msgstr "" + +#: src/exec_intercept.c:644 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "" + +#: src/exec_intercept.c:679 +#, c-format +msgid "server message too large: %zu" +msgstr "" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "" @@ -261,351 +314,327 @@ msgstr "" msgid "unexpected reply type on backchannel: %d" msgstr "" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:366 src/exec_pty.c:1487 +#: src/exec_pty.c:1508 src/exec_pty.c:1528 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:404 src/exec_pty.c:1566 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:468 msgid "unable to restore tty label" msgstr "" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:360 src/exec_pty.c:1417 msgid "policy plugin failed session initialization" msgstr "" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:374 src/exec_pty.c:1388 src/exec_pty.c:1396 +msgid "unable to create sockets" +msgstr "" + +#: src/exec_nopty.c:456 src/exec_pty.c:1663 msgid "error in event loop" msgstr "" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:566 src/exec_pty.c:619 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "" -#: src/exec_pty.c:152 +#: src/exec_pty.c:158 msgid "unable to allocate pty" msgstr "" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:222 src/exec_pty.c:262 src/exec_pty.c:302 src/exec_pty.c:353 +#: src/exec_pty.c:404 msgid "I/O plugin error" msgstr "" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "command rejected by I/O plugin" msgstr "" -#: src/exec_pty.c:449 +#: src/exec_pty.c:455 msgid "error logging suspend" msgstr "" -#: src/exec_pty.c:483 +#: src/exec_pty.c:489 msgid "error changing window size" msgstr "" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1612 msgid "unable to send message to monitor process" msgstr "" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "" "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" "\n" msgstr "" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" "\n" msgstr "" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" msgstr "" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "" "list user's privileges or check a specific command; use twice for longer " "format" msgstr "" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "" @@ -714,33 +743,33 @@ msgstr "" msgid "requires at least one argument" msgstr "" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "" @@ -792,201 +821,201 @@ msgstr "" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "" "effective uid is not %d, is %s on a file system with the 'nosuid' option set " "or an NFS file system without root privileges?" msgstr "" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "" "unable to copy some of the temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "" +#: src/sudo_intercept_common.c:335 +msgid "intercept port not set" +msgstr "" + #: src/tgetpass.c:95 msgid "timed out reading password" msgstr "" @@ -1009,29 +1038,29 @@ msgstr "" msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "" Binary files differ@@ -4,10 +4,10 @@ # Mehmet Kececi <mkececi@mehmetkececi.com>, 2016, 2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-08 11:10+0300\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-22 16:57+0300\n" "Last-Translator: Mehmet Kececi <mkececi@mehmetkececi.com>\n" "Language-Team: Turkish <gnome-turk@gnome.org>\n" "Language: tr\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -32,75 +32,78 @@ msgid "unable to restore registry" msgstr "kayıt geri yüklenemiyor" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "bellek ayırma baÅŸarısız" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%s açılamıyor" @@ -110,7 +113,7 @@ msgstr "%s açılamıyor" msgid "unable to mkdir %s" msgstr "mkdir %s için olanaksız" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "%s durumlanamıyor" @@ -125,7 +128,7 @@ msgid "Unknown signal" msgstr "Bilinmeyen sinyal" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "geçersiz deÄŸer" @@ -137,42 +140,42 @@ msgstr "deÄŸer çok büyük" msgid "value too small" msgstr "deÄŸer çok küçük" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "geçersiz Yol deÄŸeri %s içinde \"%s\", satır %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "%s \"%s\" için geçersiz deÄŸer, %s içinde, satır %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "\"%s\" desteklenmeyen grup kaynağı, %s içinde, satır %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "`\"%s\" geçersiz azami grubu, %s içinde, satır %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s düzenli bir dosya deÄŸil" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s, %u kullanıcı kimliÄŸi tarafından sahiplenmiÅŸ, %u olmalı" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s genel yazılabilir" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s grup yazılabilir" @@ -192,12 +195,12 @@ msgstr "%s üzerine yazılmıyor" msgid "unable to read from %s" msgstr "%s öğesinden okunamıyor" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "%s dosyasına yazılamıyor" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: düzenli bir dosya deÄŸil" @@ -211,50 +214,112 @@ msgstr "%s: bozuk dosya modu: 0%o" msgid "unable to restore current working directory" msgstr "geçerli çalışma klasörü geri yüklenemiyor" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "bilinmeyen %s oturum sınıfı" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "kullanıcı baÄŸlamı ayarlama baÅŸarısız" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "süreç önceliÄŸi ayarlanamıyor" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "kök %s olarak deÄŸiÅŸtirilemiyor" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "runas uid (%u, %u) olarak deÄŸiÅŸtirilemiyor" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "%s dizinine deÄŸiÅŸtirilemiyor" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "%s'den baÅŸlayarak" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "sinyal %d için iÅŸleyici ayarlanamıyor" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "kaynak PRIV_LIMIT'dan PRIV_PROC_EXEC kaldırılamıyor" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "dup fd'yi engelleyemiyor" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "geçersiz PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "komut politika tarafından reddedildi" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "politika eklentisi hatası" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "istemci iletisi çok büyük: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "type_case deÄŸeri %d %s içinde %s öğesinden beklenmeyen" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "olay kuyruÄŸa eklenemedi" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "sunucu iletisi çok büyük: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: ileti üstbilgisi eksik" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: %d beklenen ileti türü, %d alındı" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "sockerpair'den okuma hatası" @@ -264,204 +329,180 @@ msgstr "sockerpair'den okuma hatası" msgid "unexpected reply type on backchannel: %d" msgstr "backchannel'da beklenmeyen yanıt türü: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "olay kuyruÄŸa eklenemedi" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "tty denetleme ayarlaması baÅŸarısız" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "iletiÅŸim tüneli oluÅŸturulamıyor" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "ebeveynden mesaj alamıyor" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "çatallanamıyor" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "tty etiketi geri yüklenemiyor" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "%s çalıştırılamıyor" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "oturum baÅŸlatma için ilke eklentisi baÅŸarısız" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "soket oluÅŸturulamıyor" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "olay döngüsünde hata" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "sinyal %d için iÅŸleyici geri yüklenemiyor" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "pty ayırma baÅŸarısız" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "G/Ç eklenti hatası" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "komut G/Ç eklentisi tarafından reddedildi" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "günlüğü askıya alma hatası" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "pencere boyutunu deÄŸiÅŸtirme hatası" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "soket oluÅŸturulamıyor" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "süreci izlemek için mesaj gönderilemiyor" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "\"%s\" eklentisi yüklenirken satır %d, %s içerisinde hata" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s, %d kullanıcı kimliÄŸi tarafından sahiplenmeli" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s sadece sahibi tarafından yazılabilir olmalı" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "%s içinde \"%s\" yinelenen eklentisini yok sayılıyor, %d satırı" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "%s yüklenemedi: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "%s içerisinde \"%s\" sembolü bulunamıyor" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "uyumsuz temel ilke sürümü %d bulundu (beklenen %d) %s içerisinde" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "\"%s\" ilke eklentisi ihmal ediliyor, %s içinde, satır %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "sadece tek ilke eklentisi belirtilebilir" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "bilinmeyen eklenti türü %d %s içinde bulundu" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "%s ilke eklentisi, bir check_policy yöntemi içermiyor" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "dahili hata, %s taÅŸması" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "geçersiz çevre deÄŸiÅŸken adı: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-C argümanı 3 veya daha büyük bir sayı olmalıdır" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "-i ve -s seçeneklerini aynı anda belirtemezsiniz" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "-i ve -E seçeneklerini aynı anda belirtemezsiniz" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "düzenleme kipinde -E seçeneÄŸi geçerli deÄŸil" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "düzenleme kipinde ortam deÄŸiÅŸkenlerini belirtemezsiniz" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "-U seçeneÄŸi sadece -l seçeneÄŸi ile kullanılabilir" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "-A ve -S seçenekleri birlikte kullanılamaz" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "sudoedit bu platformda desteklenmiyor" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "-e, -h, -i, -K, -l, -s, -v veya -V seçeneklerinden sadece biri belirtilebilir" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -470,7 +511,7 @@ msgstr "" "%s - dosyaları farklı kullanıcı olarak düzenle\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -479,7 +520,7 @@ msgstr "" "%s - bir komutu farklı kullanıcı olarak çalıştır\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -487,131 +528,131 @@ msgstr "" "\n" "Seçenekler:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "parola sorgulaması için bir yardımcı program kullan" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "belirtilen BSD kimlik doÄŸrulama türünü kullan" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "arkaalanda komutu çalıştır" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "istendiÄŸinde zili çal" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr ">= sayı olan tüm dosya tanımlayıcılarını kapat" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "komutu belirtilen BSD oturum sınıfı ile çalıştır" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "komutu çalıştırmadan önce çalışma dizinini deÄŸiÅŸtirin" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "komut çalıştırılırken kullanıcı ortamını koru" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "özel çevre deÄŸiÅŸkenlerini koru" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "komut çalıştırmak yerine dosyaları düzenleyiniz" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "grup adı veya ID olarak tanımlanan komutu çalıştır" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "kullanıcının HOME deÄŸiÅŸkenini ana dizinini hedefleyecek ÅŸekilde ayarlama" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "yardım mesajını görüntüle ve çık" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "komutunuzu hostta çalıştırın (eÄŸer plugin tarafından destekleniyorsa)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "oturum kabuÄŸunu hedef kullanıcı olarak çalıştır; bir komut da belirtilebilir" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "zaman damgası dosyasını kalıcı olarak kaldır" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "zaman damgası dosyasının geçerliliÄŸini kaldır" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "kullanıcı yetkilerini listele veya özel bir komut denetle; daha uzun biçim için iki kez kullanın" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "etkileÅŸimsiz kip, sorgu yapılmaz" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "hedefe atamak yerine grup vektörünü koru" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "belirtilen parola sorgusunu kullan" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "komutu çalıştırmadan önce kök dizini deÄŸiÅŸtirin" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "belirtilen rolle SELinux güvenlik baÄŸlamı oluÅŸturma" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "standart girdiden ÅŸifreyi okuyun" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "kabuÄŸu hedef kullanıcı olarak çalıştır; bir komut da belirtilebilir" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "belirtilen türde SELinux güvenlik baÄŸlamı oluÅŸturma" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "belirtilen süre sonunda komutu sonlandır" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "liste modunda, kullanıcıların ayrıcalıklarını görüntüle" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "belirtilen kullanıcı adı veya ID ile komutu çalıştırın (veya dosyayı düzenleyin)" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "sürüm bilgisini göster ve çık" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "kullanıcı zaman damgasını bir komut çalıştırmadan güncelle" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "komut satırı argümanlarını iÅŸlemeyi durdur" @@ -720,33 +761,33 @@ msgstr "%s için anahtar oluÅŸturma baÄŸlamı ayarlanamıyor" msgid "requires at least one argument" msgstr "en az bir argüman gerektirir" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "geçersiz dosya tanımlayıcı sayısı: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "bir oturum açma kabuÄŸu gibi %s çalıştırılamıyor" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: sembolik baÄŸlantı düzenlemesine izin verilmemiÅŸtir" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: yazılabilir klasördeki düzenleme dosyalarına izin verilmemiÅŸtir" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "düzenleme oturumu içerikleri %s içinde bırakıldı" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "grup listesi alınamıyor" @@ -798,195 +839,191 @@ msgstr "\"%s\" projesi için setproject baÅŸarısız" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "uyarı, \"%s\" projesi için kaynak denetim ataması baÅŸarısız" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo sürüm %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Yapılandırma seçenekleri: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "ölümcül hata, eklentiler yüklenemiyor" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "eklenti çalıştırmak için bir komut döndürmedi" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "beklenmeyen 0x%x sudo kipi" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "sen %s veritabanında yoksun" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "tty belirlenemiyor" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s, %d kullanıcı kimliÄŸi tarafından sahiplenmeli ve setuid biti ayarlanmış olmalı" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "etkin kullanıcı kimliÄŸi %d deÄŸil, %s 'nosuid' seçeneÄŸi ayarlanmış bir dosya sisteminde veya yetkisiz haklara sahip bir NFS dosya sisteminde mi?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "etkin kullanıcı kimliÄŸi %d deÄŸil, sudo setuid root ile mi yüklendi?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "ek grup kimlikleri ayarlanamıyor" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "etkin grup kimliÄŸi, runas gid %u olarak ayarlanamıyor" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "grup kimliÄŸi, runas gid %u olarak ayarlanamıyor" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "beklenmeyen alt sonlandırma ÅŸartı: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "ilke eklentisi baÅŸlatılamıyor" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "%s ilke eklentisi, bir \"check_policy\" yöntemi içermiyor" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "komut politika tarafından reddedildi" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "politika eklentisi hatası" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "%s ilke eklentisi listeleme yetkilerini desteklemiyor" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "%s ilke eklentisi -v seçeneÄŸini desteklemiyor" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "%s ilke eklentisi -k/-K seçeneklerini desteklemiyor" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "baÅŸlatma hatası G/Ç eklentisi %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "eklenti I/O baÅŸlatırken hata oluÅŸtu" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "baÅŸlatma hatası I/O eklentisi %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: hata etkinlik kaydı yüklenemiyor%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: kabul etkinlik kaydı yüklenemiyor%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "denetim eklentisi hatası" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: reddetme etkinlik kaydı yüklenemiyor%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "onay eklentisini %s baÅŸlatma hatası" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "onaylayan tarafından komut reddedildi" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "onay eklentisi hatası" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "yazılabilir geçici dizin bulunamadı" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s düzenlenmemiÅŸ olarak bırakıldı" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s deÄŸiÅŸtirilmemiÅŸ" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: iç hata: yolların tek sayısı" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: geçici dosyalar oluÅŸturulamıyor" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: bir sinyal tarafından ortadan kaldırıldı" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: bilinmeyen hata %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "geçici dosyalar onların özgün konumlarına kopyalanamıyor" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "bazı geçici dosyalar onların özgün konumlarına kopyalanamıyor" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "kullanıcı kimliÄŸi yetkili (%u) olarak deÄŸiÅŸtirilemiyor" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "eklenti hatası: sudoedit için eksik dosya listesi" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "saat okunamıyor" @@ -1010,33 +1047,36 @@ msgstr "ÅŸifreyi okumak için bir terminal gereklidir; ya standart girdiden okum msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "askpass programı belirtilmemiÅŸ, SUDO_ASKPASS ayarlamayı deneyin" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "grup kimliÄŸi %u olarak ayarlanamıyor" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "kullanıcı kimliÄŸi %u olarak ayarlanamıyor" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "%s çalıştırılamıyor" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "stdin kaydedilemiyor" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "dup2 stdin yapılamıyor" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "stdin geri yüklenemiyor" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: kısa yazım" @@ -4,10 +4,10 @@ # Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-03 20:33+0200\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-20 13:14+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" "Language: uk\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Lokalize 20.11.70\n" +"X-Generator: Lokalize 20.12.0\n" "Plural-Forms: nplurals=1; plural=0;\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -32,75 +32,78 @@ msgid "unable to restore registry" msgstr "не вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ регіÑÑ‚Ñ€" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ потрібний об’єм пам’ÑÑ‚Ñ–" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s" @@ -110,7 +113,7 @@ msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ %s" msgid "unable to mkdir %s" msgstr "не вдалоÑÑ Ñтворити каталог %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ stat Ð´Ð»Ñ %s" @@ -125,7 +128,7 @@ msgid "Unknown signal" msgstr "Ðевідомий Ñигнал" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "некоректне значеннÑ" @@ -137,42 +140,42 @@ msgstr "надто велике значеннÑ" msgid "value too small" msgstr "надто мале значеннÑ" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Path, «%s», у %s, Ñ€Ñдок %u" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s, «%s», у %s, Ñ€Ñдок %u" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "непідтримуване джерело групи, «%s», у %s, Ñ€Ñдок %u" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "некоректна макÑимальна кількіÑÑ‚ÑŒ груп, «%s», у %s, Ñ€Ñдок %u" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s не Ñ” звичайним файлом" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s належить uid %u, має належати %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ «%s» можливий Ð´Ð»Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ кориÑтувача" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ «%s» може здійÑнювати будь-Ñкий кориÑтувач з групи" @@ -192,12 +195,12 @@ msgstr "не перезапиÑуємо %s" msgid "unable to read from %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: не Ñ” звичайним файлом" @@ -211,50 +214,112 @@ msgstr "%s: помилковий режим доÑтупу до файла: 0%o" msgid "unable to restore current working directory" msgstr "не вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ поточний робочий каталог" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "невідомий ÐºÐ»Ð°Ñ Ð²Ñ…Ð¾Ð´Ñƒ %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "не вдалоÑÑ Ð²Ñтановити контекÑÑ‚ кориÑтувача" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "не вдалоÑÑ Ð²Ñтановити пріоритет процеÑу" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ root на %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ uid кориÑтувача, від імені Ñкого відбуваєтьÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ каталог на %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "починаючи з %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "не вдалоÑÑ Ð²Ñтановити обробник Ð´Ð»Ñ Ñигналу %d" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ PRIV_PROC_EXEC з PRIV_LIMIT" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ перехоплений деÑкриптор файла" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "у виконанні команди відмовлено згідно правил" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "помилка у додатку правил" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "надто велике Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð°: %zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "неочікуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ type_case %d у %s від %s" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ подію до черги обробки" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "надто велике Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñервера: %zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s: не виÑтачає заголовка повідомленнÑ" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s: очікуваний тип Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ â€” %d, маємо — %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· пари Ñокетів" @@ -264,204 +329,180 @@ msgstr "помилка під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· пари ÑÐ msgid "unexpected reply type on backchannel: %d" msgstr "неочікуваний тип відповіді на зворотному каналі: %d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ подію до черги обробки" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "не вдалоÑÑ Ð²Ñтановити tty Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "не вдалоÑÑ Ñтворити канал" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ батьківÑького процеÑу" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "не вдалоÑÑ Ñтворити відгалуженнÑ" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "не вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ позначку tty" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ ініціалізацію ÑеанÑу через додаток правил" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "не вдалоÑÑ Ñтворити Ñокети" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "помилка у циклі обробки подій" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "не вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ обробник Ð´Ð»Ñ Ñигналу %d" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити pty" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "Помилка у додатку введеннÑ-виведеннÑ" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "відмова у Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ від додатка введеннÑ-виведеннÑ" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "помилка під Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "помилка під Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ розмірів вікна" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "не вдалоÑÑ Ñтворити Ñокети" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "не вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾ процеÑу аудиту" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "помилка у %s, Ñ€Ñдок %d під Ñ‡Ð°Ñ Ñпроби Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ° «%s»" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s має належати кориÑтувачеві з uid %d" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s має бути доÑтупним до запиÑу лише Ð´Ð»Ñ Ð²Ð»Ð°Ñника" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ігноруємо повторний Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ°, «%s», у %s, Ñ€Ñдок %d" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ %s: %s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñимвол «%s» у %s" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "неÑуміÑна оÑновна верÑÑ–Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ°, %d, (мало бути %d) у %s" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ігноруємо додаток правил, «%s», у %s, Ñ€Ñдок %d" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "можна визначати лише один додаток обробки правил" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "у %2$s виÑвлено невідомий тип додатка, %1$d" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "до додатка правил %s не включено метод check_policy" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ %s" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "некоректна назва змінної Ñередовища: %s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "аргументом параметра -C mмає бути чиÑло не менше за 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "не можна одночаÑно вказувати параметри -i Ñ– -s" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "не можна одночаÑно вказувати параметри -i Ñ– -E" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "не можна викориÑтовувати -E у режимі редагуваннÑ" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "не можна вказувати змінні Ñередовища у режимі редагуваннÑ" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "параметр -U можна викориÑтовувати лише разом з параметром -l" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "параметри -A Ñ– -S не можна викориÑтовувати одночаÑно" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "підтримки sudoedit Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи не передбачено" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Можна викориÑтовувати лише такі параметри: -e, -h, -i, -K, -l, -s, -v та -V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -470,7 +511,7 @@ msgstr "" "%s — редагувати файли від імені іншого кориÑтувача\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -479,7 +520,7 @@ msgstr "" "%s — виконати команду від імені іншого кориÑтувача\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -487,131 +528,131 @@ msgstr "" "\n" "Параметри:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "викориÑтовувати допоміжну програму Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² щодо паролÑ" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "викориÑтовувати вказаний тип Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ BSD" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "виконати команду у фоновому режимі" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "звук дзвінка під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "закрити вÑÑ– деÑкриптори файлів >= num" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "виконати команду з вказаним клаÑом доÑтупу BSD" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "змінити робочий каталог перед виконаннÑм команди" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "зберегти Ñередовище кориÑтувача на Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "зберегти вказані змінні Ñередовища" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "редагувати файли заміÑÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "виконати команду від імені групи кориÑтувачів, вказаної за назвою або ідентифікатором" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "вÑтановити Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— HOME Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð¼Ð°ÑˆÐ½ÑŒÐ¾Ð³Ð¾ каталогу вказаного кориÑтувача." -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "показати довідкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– завершити роботу" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "виконати команду на комп’ютері (Ñкщо підтримуєтьÑÑ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð¼)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "запуÑтити оболонку Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ до ÑиÑтеми від імені вказаного кориÑтувача; Ñлід вказати команду запуÑку" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "повніÑÑ‚ÑŽ вилучити файл чаÑової позначки" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "позбавити чинноÑÑ‚Ñ– файл чаÑової позначки" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "показати ÑпиÑок прав доÑтупу кориÑтувача або перевірити певну команду; Ð¿Ð¾Ð´Ð²Ð¾Ñ”Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° призводить до Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… даних" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "неінтерактивний режим, не проÑити кориÑтувача відповідати на питаннÑ" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "зберегти вектор групи, не вÑтановлювати вектор вказаного кориÑтувача" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "викориÑтовувати вказаний інÑтрумент Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ–Ð²" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "змінити кореневий каталог перед виконаннÑм команди" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "Ñтворити контекÑÑ‚ захиÑту SELinux з вказаною роллю" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "прочитати пароль зі Ñтандартного джерела вхідних даних" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "виконати командну оболонку від імені вказаного кориÑтувача; Ñлід також вказати команду" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "Ñтворити контекÑÑ‚ захиÑту SELinux вказаного типу" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "перервати Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ щойно буде перевищено вказане Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° чаÑом" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "у режимі ÑпиÑку, показати права доÑтупу кориÑтувача" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "виконати команду (або редагувати файл) від імені кориÑтувача, вказаного за іменем або ідентифікатором" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "показати дані щодо верÑÑ–Ñ— Ñ– завершити роботу" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "оновити штамп чаÑу кориÑтувача без Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "зупинити обробку аргументів командного Ñ€Ñдка" @@ -720,33 +761,33 @@ msgstr "не вдалоÑÑ Ð²Ñтановити контекÑÑ‚ ключа ÑÑ msgid "requires at least one argument" msgstr "потребує принаймні одного аргументу" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "некоректний номер деÑкриптора файла: %s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "%s не можна працювати Ñк оболонка Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: не можна редагувати Ñимволічні поÑиланнÑ" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: не можна редагувати файли у непридатному до запиÑу каталозі" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "дані ÑеанÑу Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¸ÑÑ Ñƒ %s" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑпиÑок груп" @@ -798,195 +839,191 @@ msgstr "помилка під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ setproject Ð´Ð»Ñ Ð¿Ñ€Ð¾ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "попередженнÑ, помилка Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑами проекту «%s»" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "ВерÑÑ–Ñ sudo %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "Параметри налаштуваннÑ: %s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "критична помилка, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ додатки" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "додатком не повернуто команди, Ñку Ñлід виконати" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "неочікуваний режим sudo 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” у базі даних %s" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ tty" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s має належати кориÑтувачеві з uid %d, крім того, має бути вÑтановлено біт setuid" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "поточним uid не Ñ” %d. Можливо %s зберігаєтьÑÑ Ñƒ файловій ÑиÑтемі зі вÑтановленим параметром «nosuid» або у файловій ÑиÑтемі NFS без прав доÑтупу root?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "поточним uid не Ñ” %d, sudo вÑтановлено з ідентифікатором кориÑтувача root?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "не вдалоÑÑ Ð²Ñтановити ідентифікатори додаткових груп" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "не вдалоÑÑ Ð²Ñтановити ефективний ідентифікатор групи Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° групи запуÑку %u" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "не вдалоÑÑ Ð²Ñтановити ідентифікатор групи Ð´Ð»Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ð° групи запуÑку %u" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "неочікувана умова Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу: %d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "не вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ додаток правил" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "до додатка правил %s не включено метод check_policy" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "у виконанні команди відмовлено згідно правил" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "помилка у додатку правил" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "у додатку правил %s не передбачено підтримки побудови ÑпиÑку прав доÑтупу" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "у додатку правил %s не передбачено підтримки параметра -v" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "у додатку правил %s не передбачено підтримки параметрів -k/-K" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби ініціалізації додатка введеннÑ/Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… %s" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "помилка під Ñ‡Ð°Ñ Ñпроби ініціалізації додатка введеннÑ/Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби ініціалізації додатка аудиту %s" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до журналу подію помилки%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до журналу подію прийнÑÑ‚Ñ‚Ñ%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "помилка у додатку аудиту" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до журналу подію відмови%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "помилка під Ñ‡Ð°Ñ Ñпроби ініціалізації додатка Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ %s" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "у виконанні команди відмовлено заÑобом підтвердженнÑ" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "помилка у додатку підтвердженнÑ" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "не знайдено придатного до запиÑу тимчаÑового каталогу" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s залишено без змін" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s не змінено" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: непарна кількіÑÑ‚ÑŒ шлÑхів" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "sesh: не вдалоÑÑ Ñтворити тимчаÑові файли" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh: завершено надÑиланнÑм Ñигналу" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: невідома помилка %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "не вдалоÑÑ Ñкопіювати тимчаÑові файли назад до початкового міÑÑ†Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "не вдалоÑÑ Ñкопіювати деÑкі з тимчаÑових файлів назад до початкового міÑÑ†Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ uid на Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ root (%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "помилка додатка: не виÑтачає ÑпиÑку файлів Ð´Ð»Ñ sudoedit" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ‡Ð°Ñ Ð½Ð° годиннику" @@ -1010,33 +1047,36 @@ msgstr "у терміналі Ñлід прочитати пароль; або Ñ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "не вказано програми askpass, Ñпробуйте вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ— SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "не вдалоÑÑ Ð²Ñтановити gid у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "не вдалоÑÑ Ð²Ñтановити uid у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "не вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ stdin" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ dup2 Ð´Ð»Ñ stdin" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "не вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdin" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + #~ msgid "%s: short write" #~ msgstr "%s: короткий запиÑ" diff --git a/po/zh_CN.mo b/po/zh_CN.mo Binary files differindex fdfc0ac53..399a5e083 100644 --- a/po/zh_CN.mo +++ b/po/zh_CN.mo diff --git a/po/zh_CN.po b/po/zh_CN.po index e6b22b8c6..51d3f74c5 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.6b1\n" +"Project-Id-Version: sudo-1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-03 20:17-0500\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-22 18:37-0400\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "æ— æ³•æ¢å¤æ³¨å†Œè¡¨" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s:%s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "æ— æ³•åˆ†é…内å˜" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "æ— æ³•æ‰“å¼€ %s" @@ -111,7 +114,7 @@ msgstr "æ— æ³•æ‰“å¼€ %s" msgid "unable to mkdir %s" msgstr "æ— æ³•åˆ›å»ºç›®å½• %s" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "æ— æ³• stat %s" @@ -126,7 +129,7 @@ msgid "Unknown signal" msgstr "未知信å·" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "å€¼æ— æ•ˆ" @@ -138,42 +141,42 @@ msgstr "值过大" msgid "value too small" msgstr "值过å°" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "%2$s 第 %3$u 行的路径值“%1$sâ€æ— 效" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "%3$s 第 %4$u 行的 %1$s 的值“%2$sâ€æ— 效" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "ä¸æ”¯æŒ %2$s 第 %3$u 行的组æ¥æºâ€œ%1$sâ€" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "%2$s 第 %3$u 行的最大组数“%1$sâ€æ— 效" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s ä¸æ˜¯å¸¸è§„文件" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s 属于用户 ID %u,应为 %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s å¯è¢«ä»»ä½•äººå†™" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s å¯è¢«ç”¨æˆ·ç»„写" @@ -193,12 +196,12 @@ msgstr "ä¸è¦†ç›– %s" msgid "unable to read from %s" msgstr "æ— æ³•è¯»å– %s" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "æ— æ³•å†™å…¥ %s" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s:ä¸æ˜¯å¸¸è§„文件" @@ -212,50 +215,112 @@ msgstr "%s:ä¸æ£ç¡®çš„文件模å¼ï¼š0%o" msgid "unable to restore current working directory" msgstr "æ— æ³•æ¢å¤å½“å‰å·¥ä½œç›®å½•" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "未知的登录类别 %s" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "æ— æ³•è®¾ç½®ç”¨æˆ·çŽ¯å¢ƒ" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "æ— æ³•è®¾ç½®è¿›ç¨‹ä¼˜å…ˆçº§" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "æ— æ³•ä»Ž root 切æ¢åˆ° %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "æ— æ³•åˆ‡æ¢åˆ°ä»¥ç”¨æˆ· ID(%u,%u)è¿è¡Œ" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "æ— æ³•å°†ç›®å½•åˆ‡æ¢åˆ° %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "起始于 %s" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "æ— æ³•è®¾ç½® %d ä¿¡å·çš„处ç†ç¨‹åº" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "æ— æ³•ä»Ž PRIV_LIMIT ä¸ç§»é™¤ PRIV_PROC_EXEC" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "æ— æ•ˆçš„ PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "命令被ç–略拒ç»" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "ç–ç•¥æ’件错误" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "客户端消æ¯è¿‡å¤§ï¼š%zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "æ— æ³•å°†äº‹ä»¶æ·»åŠ åˆ°é˜Ÿåˆ—" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "æœåŠ¡å™¨æ¶ˆæ¯è¿‡å¤§ï¼š%zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s:缺失消æ¯å¤´" + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s:期望的消æ¯ç±»åž‹æ˜¯ %d,但得到了 %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "从套接å—对读å–出错" @@ -265,204 +330,180 @@ msgstr "从套接å—对读å–出错" msgid "unexpected reply type on backchannel: %d" msgstr "è”络通é“的回应类型异常:%d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "æ— æ³•å°†äº‹ä»¶æ·»åŠ åˆ°é˜Ÿåˆ—" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "æ— æ³•è®¾ç½®æŽ§åˆ¶ç»ˆç«¯" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "æ— æ³•åˆ›å»ºç®¡é“" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "æ— æ³•ä»Žçˆ¶(进程)接收消æ¯" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "æ— æ³•æ‰§è¡Œ fork" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "æ— æ³•æ¢å¤ç»ˆç«¯æ ‡ç¾" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "æ— æ³•æ‰§è¡Œ %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "ç–ç•¥æ’件会è¯åˆå§‹åŒ–失败" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "æ— æ³•åˆ›å»ºå¥—æŽ¥å—" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "事件循环ä¸æœ‰é”™è¯¯" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "æ— æ³•æ¢å¤ %d ä¿¡å·çš„处ç†ç¨‹åº" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "æ— æ³•åˆ†é…伪终端" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "I/O æ’件错误" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "命令被 I/O æ’件拒ç»" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "记录挂起事件时出错" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "å˜æ›´çª—å£å¤§å°å‡ºé”™" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "æ— æ³•åˆ›å»ºå¥—æŽ¥å—" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "æ— æ³•å‘监视进程å‘é€æ¶ˆæ¯" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "åœ¨åŠ è½½æ’件“%3$sâ€æ—¶åœ¨ %1$s 第 %2$d 行出错" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s:%s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s 必须属于用户 ID %d(的用户)" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s å¿…é¡»åªå¯¹å…¶æ‰€æœ‰è€…å¯å†™" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "忽略ä½äºŽ %2$s 第 %3$d 行的é‡å¤æ’件“%1$sâ€" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "æ— æ³•åŠ è½½ %s:%s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "在 %2$s ä¸æ‰¾ä¸åˆ°ç¬¦å·â€œ%1$sâ€" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "%3$s ä¸å‘现ä¸å…¼å®¹çš„æ’ä»¶ä¸»ç‰ˆæœ¬å· %1$d(应为 %2$d)" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "忽略ä½äºŽ %2$s 第 %3$d 行的ç–ç•¥æ’件“%1$sâ€" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "åªèƒ½æŒ‡å®šä¸€ä¸ªç–ç•¥æ’件" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "未知的æ’件类型 %d,在 %s" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "ç–ç•¥æ’件 %s ä¸åŒ…å« check_policy 方法" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "内部错误,%s 溢出" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "æ— æ•ˆçš„çŽ¯å¢ƒå˜é‡å:%s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-C 选项的å‚数必须是一个大于ç‰äºŽ 3 çš„æ•°å—" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "您ä¸èƒ½åŒæ—¶æŒ‡å®š -i å’Œ -s 选项" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "您ä¸èƒ½åŒæ—¶æŒ‡å®š -i å’Œ -E 选项" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "-E 选项在编辑模å¼ä¸æ— 效" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "在编辑模å¼ä¸æ‚¨ä¸èƒ½æŒ‡å®šçŽ¯å¢ƒå˜é‡" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "-U 选项åªèƒ½ä¸Ž -l 选项一起使用" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "-A å’Œ -S 选项ä¸å¯åŒæ—¶ä½¿ç”¨" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "æ¤å¹³å°ä¸æ”¯æŒ sudoedit" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "åªèƒ½æŒ‡å®š -eã€-hã€-iã€-Kã€-lã€-sã€-v 或 -V 选项ä¸çš„一个" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s - 以其他用户身份编辑文件\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s - 以其他用户身份执行一æ¡å‘½ä»¤\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "选项:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "使用助手程åºè¿›è¡Œå¯†ç æ示" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "使用指定的 BSD 认è¯ç±»åž‹" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "在åŽå°è¿è¡Œå‘½ä»¤" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "æ示时å“铃" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "å…³é—所有 >= num 的文件æ述符" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "以指定的 BSD 登录类别è¿è¡Œå‘½ä»¤" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "è¿è¡Œå‘½ä»¤å‰æ”¹å˜å·¥ä½œç›®å½•" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "在执行命令时ä¿ç•™ç”¨æˆ·çŽ¯å¢ƒ" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "ä¿ç•™ç‰¹å®šçš„环境å˜é‡" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "编辑文件而éžæ‰§è¡Œå‘½ä»¤" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "以指定的用户组或 ID 执行命令" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "å°† HOME å˜é‡è®¾ä¸ºç›®æ ‡ç”¨æˆ·çš„主目录" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "显示帮助消æ¯å¹¶é€€å‡º" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "在主机上è¿è¡Œå‘½ä»¤(如果æ’件支æŒ)" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "ä»¥ç›®æ ‡ç”¨æˆ·èº«ä»½è¿è¡Œä¸€ä¸ªç™»å½• shellï¼›å¯åŒæ—¶æŒ‡å®šä¸€æ¡å‘½ä»¤" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "完全移除时间戳文件" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "æ— æ•ˆçš„æ—¶é—´æˆ³æ–‡ä»¶" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "列出用户æƒé™æˆ–检查æŸä¸ªç‰¹å®šå‘½ä»¤ï¼›å¯¹äºŽé•¿æ ¼å¼ï¼Œä½¿ç”¨ä¸¤æ¬¡" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "éžäº¤äº’模å¼ï¼Œä¸æ示" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "ä¿ç•™ç»„å‘é‡ï¼Œè€Œéžè®¾ç½®ä¸ºç›®æ ‡çš„组å‘é‡" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "使用指定的密ç æ示" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "è¿è¡Œå‘½ä»¤å‰æ”¹å˜æ ¹ç›®å½•" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "以指定的角色创建 SELinux 安全环境" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "ä»Žæ ‡å‡†è¾“å…¥è¯»å–密ç " -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "ä»¥ç›®æ ‡ç”¨æˆ·è¿è¡Œ shellï¼›å¯åŒæ—¶æŒ‡å®šä¸€æ¡å‘½ä»¤" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "以指定的类型创建 SELinux 安全环境" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "在达到指定时间é™åˆ¶åŽç»ˆæ¢å‘½ä»¤" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "在列表模å¼ä¸æ˜¾ç¤ºç”¨æˆ·çš„æƒé™" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "以指定用户或 ID è¿è¡Œå‘½ä»¤(或编辑文件)" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "显示版本信æ¯å¹¶é€€å‡º" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "更新用户的时间戳而ä¸æ‰§è¡Œå‘½ä»¤" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "åœæ¢å¤„ç†å‘½ä»¤è¡Œå‚æ•°" @@ -721,33 +762,33 @@ msgstr "æ— æ³•å‘ %s 设置键创建环境" msgid "requires at least one argument" msgstr "è¦æ±‚至少有一个å‚æ•°" -#: src/sesh.c:101 +#: src/sesh.c:104 #, c-format msgid "invalid file descriptor number: %s" msgstr "æ— æ•ˆçš„æ–‡ä»¶æ述符数å—:%s" -#: src/sesh.c:115 +#: src/sesh.c:118 #, c-format msgid "unable to run %s as a login shell" msgstr "æ— æ³•ä»¥ç™»å½• shell 执行 %s" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s:ä¸å…许编辑符å·é“¾æŽ¥" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s:ä¸å…许编辑å¯å†™ç›®å½•ä¸çš„文件" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "编辑会è¯çš„内容留在了 %s ä¸" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "æ— æ³•èŽ·å–组列表" @@ -799,195 +840,191 @@ msgstr "对项目“%sâ€æ‰§è¡Œ setproject 失败" msgid "warning, resource control assignment failed for project \"%s\"" msgstr "è¦å‘Šï¼Œå¯¹é¡¹ç›®â€œ%sâ€çš„资æºæŽ§åˆ¶åˆ†é…失败" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" msgstr "Sudo 版本 %s\n" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" msgstr "当å‰é€‰é¡¹ï¼š%s\n" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" msgstr "è‡´å‘½é”™è¯¯ï¼Œæ— æ³•åŠ è½½æ’件" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" msgstr "æ’件未返回能执行的命令" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "异常的 sudo æ¨¡å¼ 0x%x" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" msgstr "%s æ•°æ®åº“ä¸æ²¡æœ‰æ‚¨" -#: src/sudo.c:603 +#: src/sudo.c:607 msgid "unable to determine tty" msgstr "æ— æ³•ç¡®å®šç»ˆç«¯" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s 必须属于用户 ID %d(的用户)并且设置 setuid ä½" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" msgstr "有效用户 ID ä¸æ˜¯ %d,%s ä½äºŽä¸€ä¸ªè®¾ç½®äº†â€œnosuidâ€é€‰é¡¹çš„文件系统或没有 root æƒé™çš„ NFS 文件系统ä¸å—?" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "有效用户 ID ä¸æ˜¯ %d,sudo 属于 root 并设置了 setuid ä½å—?" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 msgid "unable to set supplementary group IDs" msgstr "æ— æ³•è®¾ç½®è¡¥å……ç»„ ID" -#: src/sudo.c:946 +#: src/sudo.c:954 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "æ— æ³•è®¾ç½®æœ‰æ•ˆç»„ ID æ¥ä»¥ç»„ ID %u è¿è¡Œ" -#: src/sudo.c:952 +#: src/sudo.c:960 #, c-format msgid "unable to set gid to runas gid %u" msgstr "æ— æ³•è®¾ç½®ç»„ ID æ¥ä»¥ç»„ ID %u è¿è¡Œ" -#: src/sudo.c:995 +#: src/sudo.c:1003 #, c-format msgid "unexpected child termination condition: %d" msgstr "异常的å进程终æ¢æ¡ä»¶ï¼š%d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" msgstr "æ— æ³•åˆå§‹åŒ–ç–ç•¥æ’件" -#: src/sudo.c:1167 +#: src/sudo.c:1172 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "check_policy 方法ä¸ç¼ºå°‘ç–ç•¥æ’件 %s" -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "命令被ç–略拒ç»" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "ç–ç•¥æ’件错误" - -#: src/sudo.c:1221 +#: src/sudo.c:1218 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "ç–ç•¥æ’件 %s ä¸æ”¯æŒåˆ—出æƒé™" -#: src/sudo.c:1265 +#: src/sudo.c:1262 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "ç–ç•¥æ’件 %sä¸æ”¯æŒ -v 选项" -#: src/sudo.c:1303 +#: src/sudo.c:1300 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "ç–ç•¥æ’件 %s ä¸æ”¯æŒ -k/-K 选项" -#: src/sudo.c:1436 +#: src/sudo.c:1428 #, c-format msgid "error initializing I/O plugin %s" msgstr "åˆå§‹åŒ– I/O æ’件 %s 出错" -#: src/sudo.c:1590 +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "åˆå§‹åŒ– I/O æ’件出错" + +#: src/sudo.c:1580 #, c-format msgid "error initializing audit plugin %s" msgstr "åˆå§‹åŒ–审计æ’件 %s 出错" -#: src/sudo.c:1668 +#: src/sudo.c:1659 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%sï¼šæ— æ³•è®°å½•é”™è¯¯äº‹ä»¶%s%s" -#: src/sudo.c:1703 +#: src/sudo.c:1695 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%sï¼šæ— æ³•è®°å½•æŽ¥å—事件%s%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 msgid "audit plugin error" msgstr "审计æ’件错误" -#: src/sudo.c:1741 +#: src/sudo.c:1733 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%sï¼šæ— æ³•è®°å½•æ‹’ç»äº‹ä»¶%s%s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" msgstr "åˆå§‹åŒ–批准æ’件 %s 出错" -#: src/sudo.c:1875 +#: src/sudo.c:1863 msgid "command rejected by approver" msgstr "命令被批准者拒ç»" -#: src/sudo.c:1884 +#: src/sudo.c:1873 msgid "approval plugin error" msgstr "批准æ’件出错" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "未找到å¯å†™çš„临时目录" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" msgstr "%s 并未修改" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s 已更改" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" msgstr "sesh:内部错误:路径数é‡å¼‚常" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 msgid "sesh: unable to create temporary files" msgstr "seshï¼šæ— æ³•åˆ›å»ºä¸´æ—¶æ–‡ä»¶" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" msgstr "sesh:被信å·æ€æ»" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" msgstr "sesh:未知错误 %d" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" msgstr "æ— æ³•å°†ä¸´æ—¶æ–‡ä»¶å¤åˆ¶å›žå…¶åŽŸä½ç½®" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" msgstr "æ— æ³•å°†æŸäº›ä¸´æ—¶æ–‡ä»¶å¤åˆ¶å›žå…¶åŽŸä½ç½®" -#: src/sudo_edit.c:645 +#: src/sudo_edit.c:649 #, c-format msgid "unable to change uid to root (%u)" msgstr "æ— æ³•å°†ç”¨æˆ· ID 切æ¢åˆ° root(%u)" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" msgstr "æ’件错误:缺少 sudoedit 的文件列表" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 msgid "unable to read the clock" msgstr "æ— æ³•è¯»å–时钟" @@ -1011,33 +1048,36 @@ msgstr "读å–密ç 需è¦ä¸€ä¸ªç»ˆç«¯ï¼›è¯·ä½¿ç”¨ -S é€‰é¡¹ä»¥ä»Žæ ‡å‡†è¾“å…¥è¿ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "没有指定 askpass 程åºï¼Œå°è¯•è®¾ç½® SUDO_ASKPASS" -#: src/tgetpass.c:327 +#: src/tgetpass.c:328 #, c-format msgid "unable to set gid to %u" msgstr "æ— æ³•å°†ç»„ ID 设为 %u" -#: src/tgetpass.c:331 +#: src/tgetpass.c:338 #, c-format msgid "unable to set uid to %u" msgstr "æ— æ³•å°†ç”¨æˆ· ID 设为 %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:343 #, c-format msgid "unable to run %s" msgstr "æ— æ³•æ‰§è¡Œ %s" -#: src/utmp.c:287 +#: src/utmp.c:288 msgid "unable to save stdin" msgstr "æ— æ³•ä¿å˜ stdin" -#: src/utmp.c:289 +#: src/utmp.c:290 msgid "unable to dup2 stdin" msgstr "æ— æ³• dup2 stdin" -#: src/utmp.c:292 +#: src/utmp.c:293 msgid "unable to restore stdin" msgstr "æ— æ³•æ¢å¤ stdin" +#~ msgid "%s%s: %s" +#~ msgstr "%s%s:%s" + #~ msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" #~ msgstr "忽略ä½äºŽ %2$s 第 %3$d 行的é‡å¤ç–ç•¥æ’件“%1$sâ€" diff --git a/po/zh_TW.mo b/po/zh_TW.mo Binary files differindex 60206c3b9..618f4254f 100644 --- a/po/zh_TW.mo +++ b/po/zh_TW.mo diff --git a/po/zh_TW.po b/po/zh_TW.po index 807682d64..5b522a159 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -5,10 +5,10 @@ # Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020, 2021. msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.6b1\n" +"Project-Id-Version: sudo 1.9.8b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2021-01-09 12:59-0700\n" -"PO-Revision-Date: 2021-03-06 02:52+0800\n" +"POT-Creation-Date: 2021-08-16 10:46-0600\n" +"PO-Revision-Date: 2021-08-21 18:25+0800\n" "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n" "Language: zh_TW\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.0\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -33,75 +33,78 @@ msgid "unable to restore registry" msgstr "無法還原登錄表" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 -#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 -#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 -#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 -#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 -#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 -#: src/exec_monitor.c:484 src/exec_monitor.c:491 src/exec_monitor.c:498 -#: src/exec_monitor.c:505 src/exec_monitor.c:512 src/exec_monitor.c:519 -#: src/exec_monitor.c:526 src/exec_nopty.c:212 src/exec_nopty.c:221 -#: src/exec_nopty.c:228 src/exec_nopty.c:235 src/exec_nopty.c:242 -#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 -#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 -#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 -#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 -#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 -#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378 -#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89 -#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440 -#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682 -#: src/sudo_edit.c:702 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:211 +#: lib/util/sudo_conf.c:297 lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 +#: src/conversation.c:80 src/exec_monitor.c:206 src/exec_monitor.c:456 +#: src/exec_monitor.c:462 src/exec_monitor.c:470 src/exec_monitor.c:478 +#: src/exec_monitor.c:485 src/exec_monitor.c:492 src/exec_monitor.c:499 +#: src/exec_monitor.c:506 src/exec_monitor.c:513 src/exec_monitor.c:520 +#: src/exec_monitor.c:527 src/exec_nopty.c:225 src/exec_nopty.c:235 +#: src/exec_nopty.c:245 src/exec_nopty.c:252 src/exec_nopty.c:259 +#: src/exec_nopty.c:266 src/exec_nopty.c:273 src/exec_nopty.c:280 +#: src/exec_nopty.c:287 src/exec_nopty.c:294 src/exec_nopty.c:301 +#: src/exec_nopty.c:308 src/exec_nopty.c:315 src/exec_nopty.c:323 +#: src/exec_nopty.c:511 src/exec_preload.c:143 src/exec_preload.c:203 +#: src/exec_pty.c:844 src/exec_pty.c:853 src/exec_pty.c:910 +#: src/exec_pty.c:1063 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:211 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:146 src/sesh.c:152 +#: src/sesh.c:159 src/sesh.c:165 src/sesh.c:410 src/sudo.c:636 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:741 src/sudo.c:760 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:795 src/sudo.c:837 src/sudo.c:847 src/sudo.c:876 src/sudo.c:1061 +#: src/sudo.c:1082 src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 +#: src/sudo.c:2104 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 #, c-format msgid "%s: %s" msgstr "%s:%s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 -#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 -#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 -#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 -#: src/exec_monitor.c:498 src/exec_monitor.c:505 src/exec_monitor.c:512 -#: src/exec_monitor.c:519 src/exec_monitor.c:526 src/exec_nopty.c:212 -#: src/exec_nopty.c:221 src/exec_nopty.c:228 src/exec_nopty.c:235 -#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 -#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 -#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 -#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 -#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461 -#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 -#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110 -#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 -#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 -#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 -#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 -#: src/sudo_edit.c:682 src/sudo_edit.c:702 +#: lib/util/json.c:184 lib/util/sudo_conf.c:212 lib/util/sudo_conf.c:297 +#: lib/util/sudo_conf.c:374 lib/util/sudo_conf.c:658 src/conversation.c:81 +#: src/exec_intercept.c:154 src/exec_intercept.c:181 src/exec_intercept.c:204 +#: src/exec_intercept.c:225 src/exec_intercept.c:231 src/exec_intercept.c:240 +#: src/exec_intercept.c:246 src/exec_intercept.c:312 src/exec_intercept.c:407 +#: src/exec_intercept.c:627 src/exec_monitor.c:456 src/exec_monitor.c:462 +#: src/exec_monitor.c:470 src/exec_monitor.c:478 src/exec_monitor.c:485 +#: src/exec_monitor.c:492 src/exec_monitor.c:499 src/exec_monitor.c:506 +#: src/exec_monitor.c:513 src/exec_monitor.c:520 src/exec_monitor.c:527 +#: src/exec_nopty.c:225 src/exec_nopty.c:235 src/exec_nopty.c:245 +#: src/exec_nopty.c:252 src/exec_nopty.c:259 src/exec_nopty.c:266 +#: src/exec_nopty.c:273 src/exec_nopty.c:280 src/exec_nopty.c:287 +#: src/exec_nopty.c:294 src/exec_nopty.c:301 src/exec_nopty.c:308 +#: src/exec_nopty.c:315 src/exec_nopty.c:323 src/exec_preload.c:143 +#: src/exec_preload.c:203 src/exec_pty.c:844 src/exec_pty.c:853 +#: src/exec_pty.c:910 src/exec_pty.c:1237 src/exec_pty.c:1247 +#: src/exec_pty.c:1257 src/exec_pty.c:1264 src/exec_pty.c:1271 +#: src/exec_pty.c:1278 src/exec_pty.c:1285 src/exec_pty.c:1292 +#: src/exec_pty.c:1299 src/exec_pty.c:1306 src/exec_pty.c:1313 +#: src/exec_pty.c:1320 src/exec_pty.c:1328 src/exec_pty.c:1782 +#: src/load_plugins.c:156 src/load_plugins.c:181 src/load_plugins.c:217 +#: src/load_plugins.c:449 src/load_plugins.c:455 src/parse_args.c:190 +#: src/parse_args.c:212 src/parse_args.c:285 src/parse_args.c:630 +#: src/parse_args.c:652 src/parse_args.c:677 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 +#: src/selinux.c:498 src/sesh.c:113 src/sesh.c:411 src/sudo.c:227 +#: src/sudo.c:636 src/sudo.c:876 src/sudo.c:1061 src/sudo.c:1082 +#: src/sudo.c:1374 src/sudo.c:1543 src/sudo.c:1770 src/sudo.c:2104 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:686 src/sudo_edit.c:706 src/sudo_intercept_common.c:160 msgid "unable to allocate memory" msgstr "無法分é…記憶體" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:697 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:368 src/sudo_edit.c:494 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "無法開啟 %s" @@ -111,7 +114,7 @@ msgstr "無法開啟 %s" msgid "unable to mkdir %s" msgstr "無法建立 %s 目錄" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:674 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "無法å–å¾— %s 檔案的資訊" @@ -126,7 +129,7 @@ msgid "Unknown signal" msgstr "訊號未知" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 +#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 msgid "invalid value" msgstr "數值無效" @@ -138,42 +141,42 @@ msgstr "數值éŽå¤§" msgid "value too small" msgstr "數值éŽå°" -#: lib/util/sudo_conf.c:217 +#: lib/util/sudo_conf.c:230 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "æ–¼ %2$s 第 %3$u 行發ç¾ç„¡æ•ˆçš„ Path 值「%1$sã€" -#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 +#: lib/util/sudo_conf.c:396 lib/util/sudo_conf.c:412 lib/util/sudo_conf.c:465 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "æ–¼ %3$s ä¸ç¬¬ %4$u 行發ç¾ç”¨æ–¼ %1$s 的「%2$sã€ç„¡æ•ˆæ•¸å€¼" -#: lib/util/sudo_conf.c:420 +#: lib/util/sudo_conf.c:433 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "於「%2$sã€ç¬¬ %3$u 行發ç¾ä¸æ”¯æ´çš„「%1$sã€ç¾¤çµ„來æº" -#: lib/util/sudo_conf.c:436 +#: lib/util/sudo_conf.c:449 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "æ–¼ %2$s 第 %3$u 行發ç¾ç„¡æ•ˆçš„「%1$sã€æœ€å¤§ç¾¤çµ„" -#: lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:677 #, c-format msgid "%s is not a regular file" msgstr "%s éžä¸€èˆ¬æª”案" -#: lib/util/sudo_conf.c:669 src/copy_file.c:162 +#: lib/util/sudo_conf.c:680 src/copy_file.c:163 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s ä¸æ‡‰ç”±ä½¿ç”¨è€… ID 為 %u 的使用者所æ“有,應為 %u" -#: lib/util/sudo_conf.c:673 +#: lib/util/sudo_conf.c:684 #, c-format msgid "%s is world writable" msgstr "%s å…許所有使用者寫入" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:687 #, c-format msgid "%s is group writable" msgstr "%s å…許群組寫入" @@ -193,12 +196,12 @@ msgstr "ä¸è¦†å¯« %s" msgid "unable to read from %s" msgstr "無法從 %s 讀å–" -#: src/copy_file.c:136 src/sudo_edit.c:322 +#: src/copy_file.c:136 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "無法寫入「%sã€" -#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s:éžä¸€èˆ¬æª”案" @@ -212,50 +215,112 @@ msgstr "%s:檔案模å¼ç„¡æ•ˆï¼š0%o" msgid "unable to restore current working directory" msgstr "無法還原目å‰çš„工作目錄" -#: src/exec.c:128 +#: src/exec.c:130 #, c-format msgid "unknown login class %s" msgstr "未知的 %s 登入類別" -#: src/exec.c:140 +#: src/exec.c:142 msgid "unable to set user context" msgstr "無法è¨å®šä½¿ç”¨è€…上下文" -#: src/exec.c:156 +#: src/exec.c:158 msgid "unable to set process priority" msgstr "無法è¨å®šè¡Œç¨‹å„ªå…ˆå±¤ç´š" -#: src/exec.c:170 +#: src/exec.c:172 #, c-format msgid "unable to change root to %s" msgstr "無法切æ›æ ¹ç›®éŒ„至 %s" -#: src/exec.c:183 src/exec.c:189 src/exec.c:196 +#: src/exec.c:185 src/exec.c:191 src/exec.c:198 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "無法變更至 runas 使用者 ID (%u, %u)" -#: src/exec.c:214 +#: src/exec.c:216 #, c-format msgid "unable to change directory to %s" msgstr "無法變更目錄至 %s" -#: src/exec.c:218 +#: src/exec.c:220 #, c-format msgid "starting from %s" msgstr "從 %s å•Ÿå‹•" -#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 -#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 +#: src/exec.c:302 src/exec_monitor.c:565 src/exec_monitor.c:567 +#: src/exec_nopty.c:569 src/exec_pty.c:585 src/exec_pty.c:1425 +#: src/exec_pty.c:1427 src/signal.c:144 src/signal.c:151 src/signal.c:165 #, c-format msgid "unable to set handler for signal %d" msgstr "無法è¨å®šç”¨æ–¼è™•ç† %d 訊號的程å¼" -#: src/exec_common.c:165 +#: src/exec_common.c:56 msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "無法自 PRIV_LIMIT 移除 PRIV_PROC_EXEC" +#: src/exec_common.c:85 +msgid "unable to dup intercept fd" +msgstr "無法 dup intercept fd" + +#: src/exec_intercept.c:138 +msgid "invalid PolicyCheckRequest" +msgstr "無效的 PolicyCheckRequest" + +#: src/exec_intercept.c:191 src/sudo.c:1187 src/sudo.c:1232 src/sudo.c:1276 +msgid "command rejected by policy" +msgstr "命令被ç–略拒絕" + +#: src/exec_intercept.c:272 src/sudo.c:1192 src/sudo.c:1237 src/sudo.c:1281 +#: src/sudo.c:1355 +msgid "policy plugin error" +msgstr "ç–略外掛程å¼ç™¼ç”ŸéŒ¯èª¤" + +#: src/exec_intercept.c:304 +#, c-format +msgid "client message too large: %zu" +msgstr "用戶端訊æ¯éŽé•·ï¼š%zu" + +#: src/exec_intercept.c:340 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "從 %3$s 收到的 %2$s ä¸æœ‰å€‹éžé 期的 type_case 數值 %1$d" + +#: src/exec_intercept.c:367 src/exec_intercept.c:371 src/exec_intercept.c:634 +#: src/exec_intercept.c:638 src/exec_monitor.c:464 src/exec_monitor.c:472 +#: src/exec_monitor.c:480 src/exec_monitor.c:487 src/exec_monitor.c:494 +#: src/exec_monitor.c:501 src/exec_monitor.c:508 src/exec_monitor.c:515 +#: src/exec_monitor.c:522 src/exec_monitor.c:529 src/exec_nopty.c:227 +#: src/exec_nopty.c:237 src/exec_nopty.c:247 src/exec_nopty.c:254 +#: src/exec_nopty.c:261 src/exec_nopty.c:268 src/exec_nopty.c:275 +#: src/exec_nopty.c:282 src/exec_nopty.c:289 src/exec_nopty.c:296 +#: src/exec_nopty.c:303 src/exec_nopty.c:310 src/exec_nopty.c:317 +#: src/exec_nopty.c:325 src/exec_pty.c:710 src/exec_pty.c:715 +#: src/exec_pty.c:812 src/exec_pty.c:819 src/exec_pty.c:916 +#: src/exec_pty.c:1239 src/exec_pty.c:1249 src/exec_pty.c:1259 +#: src/exec_pty.c:1266 src/exec_pty.c:1273 src/exec_pty.c:1280 +#: src/exec_pty.c:1287 src/exec_pty.c:1294 src/exec_pty.c:1301 +#: src/exec_pty.c:1308 src/exec_pty.c:1315 src/exec_pty.c:1322 +#: src/exec_pty.c:1735 src/exec_pty.c:1745 src/exec_pty.c:1790 +#: src/exec_pty.c:1797 src/exec_pty.c:1824 +msgid "unable to add event to queue" +msgstr "無法新增事件至佇列ä¸" + +#: src/exec_intercept.c:395 +#, c-format +msgid "server message too large: %zu" +msgstr "伺æœå™¨è¨Šæ¯éŽé•·ï¼š%zu" + +#: src/exec_intercept.c:608 src/exec_intercept.c:620 +#, c-format +msgid "%s: missing message header" +msgstr "%s:缺少訊æ¯æ¨™é " + +#: src/exec_intercept.c:613 +#, c-format +msgid "%s: expected message type %d, got %d" +msgstr "%s:期望的訊æ¯é¡žåž‹æ˜¯ %d å»æ”¶åˆ° %d" + #: src/exec_monitor.c:360 msgid "error reading from socketpair" msgstr "自 socketpair 讀å–資料時發生錯誤" @@ -265,204 +330,180 @@ msgstr "自 socketpair 讀å–資料時發生錯誤" msgid "unexpected reply type on backchannel: %d" msgstr "未é 期的 backchannel 回應類型:%d" -#: src/exec_monitor.c:463 src/exec_monitor.c:471 src/exec_monitor.c:479 -#: src/exec_monitor.c:486 src/exec_monitor.c:493 src/exec_monitor.c:500 -#: src/exec_monitor.c:507 src/exec_monitor.c:514 src/exec_monitor.c:521 -#: src/exec_monitor.c:528 src/exec_nopty.c:214 src/exec_nopty.c:223 -#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 -#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 -#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 -#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 -#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 -#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 -#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 -#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 -#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 -#: src/exec_pty.c:1789 -msgid "unable to add event to queue" -msgstr "無法新增事件至佇列ä¸" - -#: src/exec_monitor.c:582 +#: src/exec_monitor.c:583 msgid "unable to set controlling tty" msgstr "無法è¨å®šæŽ§åˆ¶çµ‚端" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 -#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 +#: src/exec_monitor.c:591 src/exec_nopty.c:383 src/exec_pty.c:1504 +#: src/exec_pty.c:1525 src/exec_pty.c:1545 src/tgetpass.c:307 msgid "unable to create pipe" msgstr "無法建立管線" -#: src/exec_monitor.c:598 +#: src/exec_monitor.c:601 msgid "unable to receive message from parent" msgstr "無法自上層接收訊æ¯" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 -#: src/sudo_edit.c:363 src/tgetpass.c:310 +#: src/exec_monitor.c:617 src/exec_nopty.c:421 src/exec_pty.c:1583 +#: src/sudo_edit.c:361 src/tgetpass.c:311 msgid "unable to fork" msgstr "無法複製 (fork) 出新行程" -#: src/exec_monitor.c:616 src/exec_monitor.c:715 src/exec_nopty.c:441 +#: src/exec_monitor.c:621 src/exec_monitor.c:722 src/exec_nopty.c:479 msgid "unable to restore tty label" msgstr "無法還原終端標籤 (tty label)" -#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 +#: src/exec_monitor.c:637 src/sesh.c:123 src/sudo.c:1138 #, c-format msgid "unable to execute %s" msgstr "無法執行 %s" -#: src/exec_nopty.c:352 src/exec_pty.c:1402 +#: src/exec_nopty.c:377 src/exec_pty.c:1434 msgid "policy plugin failed session initialization" msgstr "政ç–外掛程å¼åˆå§‹åŒ–工作階段失敗" -#: src/exec_nopty.c:429 src/exec_pty.c:1639 +#: src/exec_nopty.c:391 src/exec_pty.c:1405 src/exec_pty.c:1413 +msgid "unable to create sockets" +msgstr "無法建立 socket 檔案" + +#: src/exec_nopty.c:467 src/exec_pty.c:1674 msgid "error in event loop" msgstr "在事件處ç†è¿´åœˆä¸ç™¼ç”ŸéŒ¯èª¤" -#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 +#: src/exec_nopty.c:577 src/exec_pty.c:623 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "ç„¡æ³•é‚„åŽŸç”¨æ–¼è™•ç† %d 訊號的程åº" -#: src/exec_pty.c:152 +#: src/exec_pty.c:162 msgid "unable to allocate pty" msgstr "無法分é…虛擬終端機" -#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 -#: src/exec_pty.c:398 +#: src/exec_pty.c:226 src/exec_pty.c:266 src/exec_pty.c:306 src/exec_pty.c:357 +#: src/exec_pty.c:408 msgid "I/O plugin error" msgstr "I/O 外掛程å¼éŒ¯èª¤" -#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 -#: src/exec_pty.c:402 +#: src/exec_pty.c:230 src/exec_pty.c:270 src/exec_pty.c:310 src/exec_pty.c:361 +#: src/exec_pty.c:412 msgid "command rejected by I/O plugin" msgstr "命令被 I/O 外掛程å¼æ‹’絕" -#: src/exec_pty.c:449 +#: src/exec_pty.c:459 msgid "error logging suspend" msgstr "記錄暫åœæ™‚發生錯誤" -#: src/exec_pty.c:483 +#: src/exec_pty.c:493 msgid "error changing window size" msgstr "變更視窗大å°æ™‚發生錯誤" -#: src/exec_pty.c:1382 -msgid "unable to create sockets" -msgstr "無法建立 socket 檔案" - -#: src/exec_pty.c:1594 +#: src/exec_pty.c:1629 msgid "unable to send message to monitor process" msgstr "無法傳é€è¨Šæ¯è‡³ç›£æŽ§ç¨‹åº" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 -#: src/load_plugins.c:350 +#: src/load_plugins.c:108 src/load_plugins.c:122 src/load_plugins.c:128 +#: src/load_plugins.c:277 src/load_plugins.c:287 src/load_plugins.c:297 +#: src/load_plugins.c:344 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "載入「%3$sã€å¤–掛程å¼æ™‚ï¼Œç™¼ç¾ %1$s ä¸çš„第 %2$d 行有錯誤" -#: src/load_plugins.c:87 -#, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" - -#: src/load_plugins.c:131 +#: src/load_plugins.c:124 #, c-format msgid "%s must be owned by uid %d" msgstr "%s å¿…é ˆç”±ä½¿ç”¨è€… ID 為 %d 的使用者所æ“有" -#: src/load_plugins.c:137 +#: src/load_plugins.c:130 #, c-format msgid "%s must be only be writable by owner" msgstr "%s å¿…é ˆåªèƒ½è¢«å…¶æ‰€æœ‰è€…å¯å¯«" -#: src/load_plugins.c:247 src/load_plugins.c:318 +#: src/load_plugins.c:241 src/load_plugins.c:312 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "忽略第 %3$d è¡Œ %2$s ä¸çš„é‡è¤‡å¤–掛程å¼ã€Œ%1$sã€" -#: src/load_plugins.c:285 +#: src/load_plugins.c:279 #, c-format msgid "unable to load %s: %s" msgstr "無法載入 %s:%s" -#: src/load_plugins.c:295 +#: src/load_plugins.c:289 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "無法在 %s ä¸æ‰¾åˆ°ã€Œ%sã€ç¬¦è™Ÿ" -#: src/load_plugins.c:305 +#: src/load_plugins.c:299 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "在 %3$s ä¸ç™¼ç¾ä¸ç›¸å®¹çš„外掛程å¼ä¸»ç‰ˆæœ¬è™Ÿ %1$d(é 期應為 %2$d)" -#: src/load_plugins.c:323 +#: src/load_plugins.c:317 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "無視 %2$s ä¸ç¬¬ %3$d 行的「%1$sã€sudo 政ç–外掛程å¼" -#: src/load_plugins.c:326 +#: src/load_plugins.c:320 msgid "only a single policy plugin may be specified" msgstr "åªèƒ½æŒ‡å®šä¸€å€‹ Sudo 政ç–外掛程å¼" -#: src/load_plugins.c:352 +#: src/load_plugins.c:346 #, c-format msgid "unknown plugin type %d found in %s" msgstr "在 %2$s 發ç¾æœªçŸ¥çš„外掛程å¼é¡žåž‹ %1$d" -#: src/load_plugins.c:535 +#: src/load_plugins.c:529 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "%s 政ç–外掛程å¼æœªåŒ…å« check_policy 方法" -#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 -#: src/sudo_edit.c:400 src/sudo_edit.c:408 +#: src/net_ifs.c:210 src/net_ifs.c:376 src/net_ifs.c:437 src/net_ifs.c:624 +#: src/net_ifs.c:855 src/sudo.c:483 src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "內部錯誤,%s 溢ä½" -#: src/parse_args.c:223 +#: src/parse_args.c:232 #, c-format msgid "invalid environment variable name: %s" msgstr "無效的環境變數å稱:%s" -#: src/parse_args.c:325 +#: src/parse_args.c:335 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "傳入 -C çš„åƒæ•¸æ•¸å—應該è¦ç‰æ–¼æˆ–大於 3" -#: src/parse_args.c:552 +#: src/parse_args.c:566 msgid "you may not specify both the -i and -s options" msgstr "ä¸èƒ½åŒæ™‚指定 -i è·Ÿ -s 指令列é¸é …" -#: src/parse_args.c:557 +#: src/parse_args.c:571 msgid "you may not specify both the -i and -E options" msgstr "ä¸èƒ½åŒæ™‚指定 -i è·Ÿ -E 指令列é¸é …" -#: src/parse_args.c:567 +#: src/parse_args.c:581 msgid "the -E option is not valid in edit mode" msgstr "-E 指令列é¸é …在編輯模å¼ä¸ç„¡æ•ˆ" -#: src/parse_args.c:570 +#: src/parse_args.c:584 msgid "you may not specify environment variables in edit mode" msgstr "ä¸èƒ½åœ¨ç·¨è¼¯æ¨¡å¼ä¸æŒ‡å®šç’°å¢ƒè®Šæ•¸" -#: src/parse_args.c:580 +#: src/parse_args.c:594 msgid "the -U option may only be used with the -l option" msgstr "-U 指令列é¸é …åªèƒ½è·Ÿ -l é¸é …一起使用" -#: src/parse_args.c:584 +#: src/parse_args.c:598 msgid "the -A and -S options may not be used together" msgstr "ä¸èƒ½åŒæ™‚使用 -A è·Ÿ -S 指令列é¸é …" -#: src/parse_args.c:677 +#: src/parse_args.c:691 msgid "sudoedit is not supported on this platform" msgstr "æ¤å¹³å°ä¸æ”¯æ´ sudoedit" -#: src/parse_args.c:759 +#: src/parse_args.c:774 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "åªèƒ½æŒ‡å®šä»¥ä¸‹æŒ‡ä»¤åˆ—é¸é …之一:-eã€-hã€-iã€-Kã€-lã€-sã€-vã€-V" -#: src/parse_args.c:773 +#: src/parse_args.c:790 #, c-format msgid "" "%s - edit files as another user\n" @@ -471,7 +512,7 @@ msgstr "" "%s - 以å¦ä¸€å€‹ä½¿ç”¨è€…的身份編輯檔案\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:792 #, c-format msgid "" "%s - execute a command as another user\n" @@ -480,7 +521,7 @@ msgstr "" "%s - 以å¦ä¸€å€‹ä½¿ç”¨è€…的身份執行指令\n" "\n" -#: src/parse_args.c:780 +#: src/parse_args.c:798 msgid "" "\n" "Options:\n" @@ -488,131 +529,131 @@ msgstr "" "\n" "指令列é¸é …:\n" -#: src/parse_args.c:782 +#: src/parse_args.c:800 msgid "use a helper program for password prompting" msgstr "使用助手程å¼è©¢å•å¯†ç¢¼" -#: src/parse_args.c:785 +#: src/parse_args.c:803 msgid "use specified BSD authentication type" msgstr "使用指定的 BSD 身份驗è‰é¡žåž‹" -#: src/parse_args.c:788 +#: src/parse_args.c:807 msgid "run command in the background" msgstr "在背景ä¸åŸ·è¡ŒæŒ‡ä»¤" -#: src/parse_args.c:790 +#: src/parse_args.c:810 msgid "ring bell when prompting" msgstr "æ示時響鈴" -#: src/parse_args.c:792 +#: src/parse_args.c:812 msgid "close all file descriptors >= num" msgstr "關閉所有 >= num 的檔案æè¿°å…ƒ" -#: src/parse_args.c:795 +#: src/parse_args.c:815 msgid "run command with the specified BSD login class" msgstr "以指定的 BSD 登入類型執行指令" -#: src/parse_args.c:798 +#: src/parse_args.c:818 msgid "change the working directory before running command" msgstr "執行命令å‰ï¼Œå…ˆè®Šæ›´å·¥ä½œç›®éŒ„" -#: src/parse_args.c:800 +#: src/parse_args.c:821 msgid "preserve user environment when running command" msgstr "在執行指令時ä¿ç•™ä½¿ç”¨è€…的環境" -#: src/parse_args.c:802 +#: src/parse_args.c:823 msgid "preserve specific environment variables" msgstr "ä¿ç•™æŒ‡å®šçš„環境變數" -#: src/parse_args.c:804 +#: src/parse_args.c:825 msgid "edit files instead of running a command" msgstr "編輯檔案而éžåŸ·è¡ŒæŒ‡ä»¤" -#: src/parse_args.c:806 +#: src/parse_args.c:828 msgid "run command as the specified group name or ID" msgstr "以指定的群組å稱或 ID 執行指令" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "set HOME variable to target user's home dir" msgstr "è¨å®š HOME 環境變數為目標使用者的家目錄" -#: src/parse_args.c:810 +#: src/parse_args.c:834 msgid "display help message and exit" msgstr "顯示說明訊æ¯ä¸¦é€€å‡º" -#: src/parse_args.c:812 +#: src/parse_args.c:836 msgid "run command on host (if supported by plugin)" msgstr "在指定的主機上執行指令(若外掛程å¼æ”¯æ´ï¼‰" -#: src/parse_args.c:814 +#: src/parse_args.c:839 msgid "run login shell as the target user; a command may also be specified" msgstr "以目標使用者的身份執行登入 shell;亦å¯åŒæ™‚指定一個指令" -#: src/parse_args.c:816 +#: src/parse_args.c:841 msgid "remove timestamp file completely" msgstr "完全地移除時間戳記檔案" -#: src/parse_args.c:818 +#: src/parse_args.c:844 msgid "invalidate timestamp file" msgstr "使時間戳檔案無效化" -#: src/parse_args.c:820 +#: src/parse_args.c:847 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "列出使用者的權é™æˆ–æ˜¯æª¢æŸ¥ç‰¹å®šçš„æŒ‡ä»¤ï¼›æŒ‡å®šå…©æ¬¡ä»¥ç”¨æ›´é•·çš„æ ¼å¼è¼¸å‡º" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "non-interactive mode, no prompts are used" msgstr "éžäº’å‹•å¼æ¨¡å¼ï¼Œä¸ä½¿ç”¨ä»»ä½•æ示文å—" -#: src/parse_args.c:824 +#: src/parse_args.c:853 msgid "preserve group vector instead of setting to target's" msgstr "ä¿ç•™ç›®å‰çš„群組集åˆè€Œéžè¨å®šç‚ºç›®æ¨™çš„群組集åˆ" -#: src/parse_args.c:826 +#: src/parse_args.c:856 msgid "use the specified password prompt" msgstr "使用指定的密碼æ示文å—" -#: src/parse_args.c:828 +#: src/parse_args.c:858 msgid "change the root directory before running command" msgstr "執行命令å‰ï¼Œå…ˆè®Šæ›´æ ¹ç›®éŒ„" -#: src/parse_args.c:831 +#: src/parse_args.c:861 msgid "create SELinux security context with specified role" msgstr "使用指定的角色建立 SELinux 安全上下文" -#: src/parse_args.c:834 +#: src/parse_args.c:864 msgid "read password from standard input" msgstr "自標準輸入讀å–密碼" -#: src/parse_args.c:836 +#: src/parse_args.c:867 msgid "run shell as the target user; a command may also be specified" msgstr "以目標使用者的身份執行 shell;一個指令亦å¯åŒæ™‚被指定" -#: src/parse_args.c:839 +#: src/parse_args.c:871 msgid "create SELinux security context with specified type" msgstr "使用指定的類型建立 SELinux 安全上下文" -#: src/parse_args.c:842 +#: src/parse_args.c:874 msgid "terminate command after the specified time limit" msgstr "在指定的時間é™åˆ¶éŽå¾Œä¸æ¢æŒ‡ä»¤" -#: src/parse_args.c:844 +#: src/parse_args.c:877 msgid "in list mode, display privileges for user" msgstr "在清單模å¼ä¸é¡¯ç¤ºä½¿ç”¨è€…的權é™" -#: src/parse_args.c:846 +#: src/parse_args.c:880 msgid "run command (or edit file) as specified user name or ID" msgstr "以指定的使用者å稱或 ID 來執行指令(或編輯檔案)" -#: src/parse_args.c:848 +#: src/parse_args.c:882 msgid "display version information and exit" msgstr "顯示版本資訊並離開" -#: src/parse_args.c:850 +#: src/parse_args.c:885 msgid "update user's timestamp without running a command" msgstr "更新使用者時間戳記而ä¸åŸ·è¡ŒæŒ‡ä»¤" -#: src/parse_args.c:852 +#: src/parse_args.c:888 msgid "stop processing command line arguments" msgstr "åœæ¢è™•ç†æŒ‡ä»¤åˆ—引數" @@ -696,359 +737,392 @@ msgstr "%s ä¸æ˜¯æœ‰æ•ˆçš„ SELinux 上下文" #: src/selinux.c:396 msgid "failed to get old context" -msgstr "無法å–得舊上下文" +msgstr "無法å–得舊的上下文" #: src/selinux.c:402 +#, fuzzy +#| msgid "unable to restore current working directory" msgid "unable to determine enforcing mode." -msgstr "無法判斷 SELinux 行使模å¼ã€‚" +msgstr "無法還原目å‰çš„工作目錄" #: src/selinux.c:419 -#, c-format +#, fuzzy, c-format +#| msgid "unable to set new tty context" msgid "unable to set tty context to %s" -msgstr "無法è¨å®š tty 上下文為 %s" +msgstr "無法è¨å®šæ–°çš„終端機上下文" #: src/selinux.c:440 -#, c-format +#, fuzzy, c-format +#| msgid "unable to restore context for %s" msgid "unable to set exec context to %s" -msgstr "無法è¨å®šåŸ·è¡Œä¸Šä¸‹æ–‡ç‚º %s" +msgstr "無法還原「%sã€çš„ SELinux 上下文" #: src/selinux.c:447 -#, c-format +#, fuzzy, c-format +#| msgid "unable to restore context for %s" msgid "unable to set key creation context to %s" -msgstr "無法è¨å®šé‡‘鑰建立上下文為 %s" +msgstr "無法還原「%sã€çš„ SELinux 上下文" #: src/sesh.c:72 msgid "requires at least one argument" -msgstr "至少需è¦è‡³å°‘一個指令列引數" +msgstr "" -#: src/sesh.c:101 -#, c-format +#: src/sesh.c:104 +#, fuzzy, c-format +#| msgid "close all file descriptors >= num" msgid "invalid file descriptor number: %s" -msgstr "無效的檔案æ述元:%s" +msgstr "關閉所有 >= num 的檔案æè¿°å…ƒ" -#: src/sesh.c:115 -#, c-format +#: src/sesh.c:118 +#, fuzzy, c-format +#| msgid "unable to find symbol \"%s\" in %s" msgid "unable to run %s as a login shell" -msgstr "無法以登入 shell 執行 %s" +msgstr "無法在 %s ä¸æ‰¾åˆ°ã€Œ%sã€ç¬¦è™Ÿ" -#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" -msgstr "%s:ä¸å…許編輯符號連çµ" +msgstr "" -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" -msgstr "%s:ä¸å…許在å¯å¯«ç›®éŒ„編輯檔案" +msgstr "" -#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 -#: src/sudo_edit.c:333 +#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" -msgstr "編輯階段的內容被留在 %s" +msgstr "" -#: src/sesh.c:412 src/sudo_edit.c:93 +#: src/sesh.c:416 src/sudo_edit.c:94 +#, fuzzy +#| msgid "unable to read from %s" msgid "unable to get group list" -msgstr "無法å–得群組清單" +msgstr "無法從 %s 讀å–" #: src/signal.c:79 -#, c-format +#, fuzzy, c-format +#| msgid "unable to set handler for signal %d" msgid "unable to save handler for signal %d" -msgstr "無法儲å˜ç”¨æ–¼ %d 訊號的處ç†ç¨‹å¼" +msgstr "無法è¨å®šç”¨æ–¼è™•ç† %d 訊號的程å¼" #: src/solaris.c:72 msgid "resource control limit has been reached" -msgstr "å·²é”到資æºæŽ§åˆ¶çš„上é™" +msgstr "" #: src/solaris.c:75 #, c-format msgid "user \"%s\" is not a member of project \"%s\"" -msgstr "「%sã€ä½¿ç”¨è€…ä¸æ˜¯ã€Œ%sã€å°ˆæ¡ˆçš„æˆå“¡" +msgstr "" #: src/solaris.c:79 msgid "the invoking task is final" -msgstr "觸發的作æ¥å·²ç¶“å®Œæˆ (final)" +msgstr "" #: src/solaris.c:82 #, c-format msgid "could not join project \"%s\"" -msgstr "ç„¡æ³•åŠ å…¥ã€Œ%sã€å°ˆæ¡ˆ" +msgstr "" #: src/solaris.c:89 #, c-format msgid "no resource pool accepting default bindings exists for project \"%s\"" -msgstr "專案「%sã€ä¸å˜åœ¨æŽ¥å—é è¨ç¹«çµçš„資æºé›†å€" +msgstr "" #: src/solaris.c:93 #, c-format msgid "specified resource pool does not exist for project \"%s\"" -msgstr "專案「%sã€ä¸å˜åœ¨æŒ‡å®šçš„資æºé›†å€" +msgstr "" #: src/solaris.c:97 #, c-format msgid "could not bind to default resource pool for project \"%s\"" -msgstr "無法將專案「%sã€ç¹«çµåˆ°é è¨è³‡æºé›†å€" +msgstr "" #: src/solaris.c:104 #, c-format msgid "setproject failed for project \"%s\"" -msgstr "å°å°ˆæ¡ˆã€Œ%sã€é€²è¡Œå°ˆæ¡ˆè¨å®šç¨‹åº (setproject) 失敗" +msgstr "" #: src/solaris.c:106 #, c-format msgid "warning, resource control assignment failed for project \"%s\"" -msgstr "è¦å‘Šï¼šå°å°ˆæ¡ˆã€Œ%sã€åŸ·è¡Œè³‡æºæŽ§åˆ¶æŒ‡æ´¾å¤±æ•—" +msgstr "" -#: src/sudo.c:222 +#: src/sudo.c:213 #, c-format msgid "Sudo version %s\n" -msgstr "Sudo 版本 %s\n" +msgstr "" -#: src/sudo.c:224 +#: src/sudo.c:215 #, c-format msgid "Configure options: %s\n" -msgstr "è¨å®šé¸é …:%s\n" +msgstr "" -#: src/sudo.c:232 +#: src/sudo.c:223 msgid "fatal error, unable to load plugins" -msgstr "致命錯誤:無法載入外掛程å¼" +msgstr "" -#: src/sudo.c:278 +#: src/sudo.c:269 msgid "plugin did not return a command to execute" -msgstr "外掛程å¼æ²’有回傳è¦åŸ·è¡Œçš„指令" +msgstr "" -#: src/sudo.c:310 +#: src/sudo.c:302 #, c-format msgid "unexpected sudo mode 0x%x" -msgstr "未é 期的 0x%x sudo 模å¼" +msgstr "" -#: src/sudo.c:546 +#: src/sudo.c:550 #, c-format msgid "you do not exist in the %s database" -msgstr "您ä¸åœ¨ %s 資料庫ä¸" +msgstr "" -#: src/sudo.c:603 +#: src/sudo.c:607 +#, fuzzy +#| msgid "unable to set controlling tty" msgid "unable to determine tty" -msgstr "無法判斷終端機" +msgstr "無法è¨å®šæŽ§åˆ¶çµ‚端" -#: src/sudo.c:914 -#, c-format +#: src/sudo.c:922 +#, fuzzy, c-format +#| msgid "%s must be owned by uid %d" msgid "%s must be owned by uid %d and have the setuid bit set" -msgstr "%s å¿…é ˆç”±ä½¿ç”¨è€… ID 為 %d 的使用者所æ“æœ‰ï¼Œä¸”å¿…é ˆè¨å®š setuid ä½å…ƒ" +msgstr "%s å¿…é ˆç”±ä½¿ç”¨è€… ID 為 %d 的使用者所æ“有" -#: src/sudo.c:917 +#: src/sudo.c:925 #, c-format msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?" -msgstr "有效的使用者 ID ä¸æ˜¯ %d,請å•ã€Œ%sã€æ˜¯å˜åœ¨æ–¼è¨å®šã€Œnosuidã€æŽ›è¼‰é¸é …的檔案系統ä¸ï¼Œé‚„是å˜åœ¨æ–¼æ²’有 root 權é™çš„ NFS 檔案系統?" +msgstr "" -#: src/sudo.c:923 +#: src/sudo.c:931 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" -msgstr "有效的使用者 ID ä¸æ˜¯ %d,sudo 是å¦å·²ç¶“å®‰è£ setuid root?" +msgstr "" -#: src/sudo.c:939 +#: src/sudo.c:947 src/tgetpass.c:333 +#, fuzzy +#| msgid "unable to set user context" msgid "unable to set supplementary group IDs" -msgstr "無法è¨å®šå¢žè£œç¾¤çµ„ ID" +msgstr "無法è¨å®šä½¿ç”¨è€…上下文" -#: src/sudo.c:946 -#, c-format +#: src/sudo.c:954 +#, fuzzy, c-format +#| msgid "unable to change to runas uid (%u, %u)" msgid "unable to set effective gid to runas gid %u" -msgstr "無法將有效群組 ID è¨å®šç‚º runas 群組 ID %u" +msgstr "無法變更至 runas 使用者 ID (%u, %u)" -#: src/sudo.c:952 -#, c-format +#: src/sudo.c:960 +#, fuzzy, c-format +#| msgid "unable to change to runas uid (%u, %u)" msgid "unable to set gid to runas gid %u" -msgstr "無法將群組 ID è¨å®šç‚º runas 群組 ID %u" +msgstr "無法變更至 runas 使用者 ID (%u, %u)" -#: src/sudo.c:995 -#, c-format +#: src/sudo.c:1003 +#, fuzzy, c-format +#| msgid "unexpected reply type on backchannel: %d" msgid "unexpected child termination condition: %d" -msgstr "未é 期之å行程ä¸æ¢ç‹€æ³ï¼š%d" +msgstr "未é 期的 backchannel 回應類型:%d" -#: src/sudo.c:1104 +#: src/sudo.c:1110 msgid "unable to initialize policy plugin" -msgstr "無法åˆå§‹åŒ– Sudo 政ç–外掛程å¼" +msgstr "" -#: src/sudo.c:1167 -#, c-format +#: src/sudo.c:1172 +#, fuzzy, c-format +#| msgid "policy plugin %s does not include a check_policy method" msgid "policy plugin %s is missing the \"check_policy\" method" -msgstr "%s 政ç–外掛程å¼ç¼ºå°‘ \"check_policy\" 方法" - -#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 -msgid "command rejected by policy" -msgstr "命令被ç–略拒絕" - -#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 -msgid "policy plugin error" -msgstr "ç–略外掛程å¼ç™¼ç”ŸéŒ¯èª¤" +msgstr "%s 政ç–外掛程å¼æœªåŒ…å« check_policy 方法" -#: src/sudo.c:1221 -#, c-format +#: src/sudo.c:1218 +#, fuzzy, c-format +#| msgid "policy plugin %s does not include a check_policy method" msgid "policy plugin %s does not support listing privileges" -msgstr "%s 政ç–外掛程å¼ä¸æ”¯æ´æ¬Šé™" +msgstr "%s 政ç–外掛程å¼æœªåŒ…å« check_policy 方法" -#: src/sudo.c:1265 -#, c-format +#: src/sudo.c:1262 +#, fuzzy, c-format +#| msgid "policy plugin %s does not include a check_policy method" msgid "policy plugin %s does not support the -v option" -msgstr "%s 政ç–外掛程å¼ä¸æ”¯æ´ -v 指令列é¸é …" +msgstr "%s 政ç–外掛程å¼æœªåŒ…å« check_policy 方法" -#: src/sudo.c:1303 -#, c-format +#: src/sudo.c:1300 +#, fuzzy, c-format +#| msgid "policy plugin %s does not include a check_policy method" msgid "policy plugin %s does not support the -k/-K options" -msgstr "%s 政ç–外掛程å¼ä¸æ”¯æ´ -k/-K 指令列é¸é …" +msgstr "%s 政ç–外掛程å¼æœªåŒ…å« check_policy 方法" -#: src/sudo.c:1436 -#, c-format +#: src/sudo.c:1428 +#, fuzzy, c-format +#| msgid "error in %s, line %d while loading plugin \"%s\"" msgid "error initializing I/O plugin %s" -msgstr "åˆå§‹åŒ–「%sã€I/O 外掛程å¼æ™‚發生錯誤" +msgstr "載入「%3$sã€å¤–掛程å¼æ™‚ï¼Œç™¼ç¾ %1$s ä¸çš„第 %2$d 行有錯誤" -#: src/sudo.c:1590 -#, c-format +#: src/sudo.c:1431 +msgid "error initializing I/O plugin" +msgstr "" + +#: src/sudo.c:1580 +#, fuzzy, c-format +#| msgid "error in %s, line %d while loading plugin \"%s\"" msgid "error initializing audit plugin %s" -msgstr "åˆå§‹åŒ–ç¨½æ ¸å¤–æŽ›ç¨‹å¼ %s 時發生錯誤" +msgstr "載入「%3$sã€å¤–掛程å¼æ™‚ï¼Œç™¼ç¾ %1$s ä¸çš„第 %2$d 行有錯誤" -#: src/sudo.c:1668 -#, c-format +#: src/sudo.c:1659 +#, fuzzy, c-format +#| msgid "unable to load %s: %s" msgid "%s: unable to log error event%s%s" -msgstr "%s:無法記錄錯誤事件%s%s" +msgstr "無法載入 %s:%s" -#: src/sudo.c:1703 -#, c-format +#: src/sudo.c:1695 +#, fuzzy, c-format +#| msgid "unable to load %s: %s" msgid "%s: unable to log accept event%s%s" -msgstr "%s:無法記錄接å—事件%s%s" +msgstr "無法載入 %s:%s" -#: src/sudo.c:1708 src/sudo.c:1746 +#: src/sudo.c:1700 src/sudo.c:1738 +#, fuzzy +#| msgid "I/O plugin error" msgid "audit plugin error" -msgstr "ç¨½æ ¸å¤–æŽ›ç¨‹å¼ç™¼ç”ŸéŒ¯èª¤" +msgstr "I/O 外掛程å¼éŒ¯èª¤" -#: src/sudo.c:1741 -#, c-format +#: src/sudo.c:1733 +#, fuzzy, c-format +#| msgid "unable to execute %s" msgid "%s: unable to log reject event%s%s" -msgstr "%s:無法記錄拒絕事件%s%s" +msgstr "無法執行 %s" -#: src/sudo.c:1799 +#: src/sudo.c:1793 #, c-format msgid "error initializing approval plugin %s" -msgstr "åˆå§‹åŒ–æ ¸å‡†å¤–æŽ›ç¨‹å¼ %s 時發生錯誤" +msgstr "" -#: src/sudo.c:1875 +#: src/sudo.c:1863 +#, fuzzy +#| msgid "command rejected by policy" msgid "command rejected by approver" -msgstr "å‘½ä»¤è¢«æ ¸å‡†äººæ‹’çµ•" +msgstr "命令被ç–略拒絕" -#: src/sudo.c:1884 +#: src/sudo.c:1873 +#, fuzzy +#| msgid "policy plugin error" msgid "approval plugin error" -msgstr "æ ¸å‡†å¤–æŽ›ç¨‹å¼ç™¼ç”ŸéŒ¯èª¤" +msgstr "ç–略外掛程å¼ç™¼ç”ŸéŒ¯èª¤" -#: src/sudo_edit.c:112 +#: src/sudo_edit.c:113 +#, fuzzy +#| msgid "unable to change directory to %s" msgid "no writable temporary directory found" -msgstr "沒有找到å¯å¯«å…¥çš„æš«å˜ç›®éŒ„" +msgstr "無法變更目錄至 %s" -#: src/sudo_edit.c:293 +#: src/sudo_edit.c:291 #, c-format msgid "%s left unmodified" -msgstr "%s ä¿æŒæœªè®Šæ›´ç‹€æ…‹" +msgstr "" -#: src/sudo_edit.c:306 src/sudo_edit.c:571 -#, c-format +#: src/sudo_edit.c:304 src/sudo_edit.c:571 +#, fuzzy, c-format +#| msgid "%s changed labels" msgid "%s unchanged" -msgstr "%s 未變更" +msgstr "%s 個變更的標籤" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:481 msgid "sesh: internal error: odd number of paths" -msgstr "sesh:內部錯誤:åªæœ‰å¥‡æ•¸å€‹è·¯å¾‘" +msgstr "" -#: src/sudo_edit.c:485 +#: src/sudo_edit.c:483 +#, fuzzy +#| msgid "unable to create pipe" msgid "sesh: unable to create temporary files" -msgstr "sesh:無法建立暫å˜æª”案" +msgstr "無法建立管線" -#: src/sudo_edit.c:487 src/sudo_edit.c:605 +#: src/sudo_edit.c:485 src/sudo_edit.c:609 msgid "sesh: killed by a signal" -msgstr "sesh:被信號ä¸æ¢" +msgstr "" -#: src/sudo_edit.c:489 src/sudo_edit.c:608 +#: src/sudo_edit.c:487 src/sudo_edit.c:612 #, c-format msgid "sesh: unknown error %d" -msgstr "sesh:未知錯誤代碼 %d" +msgstr "" -#: src/sudo_edit.c:598 +#: src/sudo_edit.c:602 msgid "unable to copy temporary files back to their original location" -msgstr "無法將暫å˜æª”複製回暫å˜æª”的原始ä½ç½®" +msgstr "" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:606 msgid "unable to copy some of the temporary files back to their original location" -msgstr "無法將部份的暫å˜æª”複製回其原始ä½ç½®" +msgstr "" -#: src/sudo_edit.c:645 -#, c-format +#: src/sudo_edit.c:649 +#, fuzzy, c-format +#| msgid "unable to change root to %s" msgid "unable to change uid to root (%u)" -msgstr "無法將使用者 ID 變更為 root (%u)" +msgstr "無法切æ›æ ¹ç›®éŒ„至 %s" -#: src/sudo_edit.c:666 +#: src/sudo_edit.c:670 msgid "plugin error: missing file list for sudoedit" -msgstr "外掛程å¼éŒ¯èª¤ï¼šç¼ºå°‘å¯ç”¨æ–¼ sudoedit 的檔案清單" +msgstr "" -#: src/sudo_edit.c:717 src/sudo_edit.c:725 +#: src/sudo_edit.c:722 src/sudo_edit.c:732 +#, fuzzy +#| msgid "unable to create sockets" msgid "unable to read the clock" -msgstr "無法讀å–時間" +msgstr "無法建立 socket 檔案" #: src/tgetpass.c:95 msgid "timed out reading password" -msgstr "讀å–密碼逾時" +msgstr "" #: src/tgetpass.c:98 msgid "no password was provided" -msgstr "未æ供密碼" +msgstr "" #: src/tgetpass.c:101 +#, fuzzy +#| msgid "unable to read from %s" msgid "unable to read password" -msgstr "無法讀å–密碼" +msgstr "無法從 %s 讀å–" #: src/tgetpass.c:141 msgid "a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper" -msgstr "需è¦çµ‚端器æ‰èƒ½è®€å–密碼;å¯ä»¥ä½¿ç”¨ -S é¸é …,從標準輸入讀å–,或是è¨å®š askpass å”助工具" +msgstr "" #: src/tgetpass.c:152 msgid "no askpass program specified, try setting SUDO_ASKPASS" -msgstr "沒有指定 askpass 程å¼ï¼Œå°‡å˜—試è¨å®š SUDO_ASKPASS 環境變數" +msgstr "" -#: src/tgetpass.c:327 -#, c-format +#: src/tgetpass.c:328 +#, fuzzy, c-format +#| msgid "unable to stat %s" msgid "unable to set gid to %u" -msgstr "無法將群組 ID è¨å®šç‚º %u" +msgstr "無法å–å¾— %s 檔案的資訊" -#: src/tgetpass.c:331 -#, c-format +#: src/tgetpass.c:338 +#, fuzzy, c-format +#| msgid "unable to stat %s" msgid "unable to set uid to %u" -msgstr "無法將使用者 ID è¨å®šç‚º %u" +msgstr "無法å–å¾— %s 檔案的資訊" -#: src/tgetpass.c:336 -#, c-format +#: src/tgetpass.c:343 +#, fuzzy, c-format +#| msgid "unable to open %s" msgid "unable to run %s" -msgstr "無法執行 %s" +msgstr "無法開啟 %s" -#: src/utmp.c:287 +#: src/utmp.c:288 +#, fuzzy +#| msgid "unable to stat %s" msgid "unable to save stdin" -msgstr "無法儲å˜æ¨™æº–輸入" +msgstr "無法å–å¾— %s 檔案的資訊" -#: src/utmp.c:289 +#: src/utmp.c:290 +#, fuzzy +#| msgid "unable to open %s" msgid "unable to dup2 stdin" -msgstr "無法å°æ¨™æº–輸入執行 dup2 æ“作" +msgstr "無法開啟 %s" -#: src/utmp.c:292 +#: src/utmp.c:293 +#, fuzzy +#| msgid "unable to restore registry" msgid "unable to restore stdin" -msgstr "無法復原標準輸入" - -#~ msgid "%s: short write" -#~ msgstr "%s:éŽçŸå¯«å…¥" - -#~ msgid "unable to read temporary file" -#~ msgstr "無法讀å–æš«å˜æª”案" - -#~ msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d" -#~ msgstr "無視 %2$s ä¸ %3$d 行的é‡è¤‡ã€Œ%1$sã€Sudo 政ç–外掛程å¼" - -#~ msgid "no tty present and no askpass program specified" -#~ msgstr "未æ供終端機且沒有指定 askpass 程å¼" - -#~ msgid "unknown uid %u: who are you?" -#~ msgstr "未知的 %u 使用者è˜åˆ¥ç¢¼ï¼šä½ 是哪ä½å•Šï¼Ÿ" +msgstr "無法還原登錄表" diff --git a/scripts/mkdep.pl b/scripts/mkdep.pl index 1d7d53de1..abbc4a474 100755 --- a/scripts/mkdep.pl +++ b/scripts/mkdep.pl @@ -111,12 +111,12 @@ sub mkdep { # Expand some configure bits $makefile =~ s:\@DEV\@::g; $makefile =~ s:\@COMMON_OBJS\@:aix.lo event_poll.lo event_select.lo:; - $makefile =~ s:\@SUDO_OBJS\@:openbsd.o preload.o selinux.o sesh.o solaris.o:; + $makefile =~ s:\@SUDO_OBJS\@:intercept.pb-c.lo openbsd.o preload.o selinux.o sesh.o solaris.o:; $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo ldap_util.lo ldap_conf.lo solaris_audit.lo sssd.lo:; # XXX - fill in AUTH_OBJS from contents of the auth dir instead $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:; $makefile =~ s:\@DIGEST\@:digest.lo digest_openssl.lo digest_gcrypt.lo:; - $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pread.lo pwrite.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo vsyslog.lo:; + $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pread.lo pwrite.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo:; # Parse OBJS lines my %objs; diff --git a/scripts/mkpkg b/scripts/mkpkg index 86f48fcf5..950616a0c 100755 --- a/scripts/mkpkg +++ b/scripts/mkpkg @@ -220,7 +220,6 @@ case "$osversion" in --with-editor=/bin/vi --with-env-editor --with-ignore-dot - --with-tty-tickets --with-ldap --with-passprompt=[sudo] password for %p: --with-sendmail=/usr/sbin/sendmail @@ -253,7 +252,6 @@ case "$osversion" in --with-logfac=auth --with-all-insults --with-ignore-dot - --with-tty-tickets --enable-shell-sets-home --with-sudoers-mode=0440 --with-pam @@ -368,7 +366,7 @@ case "$osversion" in # Note, must indent with tabs, not spaces due to IFS trickery configure_opts="--with-pam --with-bsm-audit - --without-tty-tickets + --with-password-timeout=0 --enable-zlib=system --with-ldap --with-insults=disabled @@ -401,6 +399,25 @@ case "$osversion" in $configure_opts" PPVARS="${PPVARS}${PPVARS+$space}aix_freeware=true" ;; + FreeBSD*) + # Encrypted remote I/O log support. + with_openssl=true + + # Python plugins + with_python=true + + configure_opts=" + --sysconfdir=/usr/local/etc + --with-ignore-dot + --with-tty-tickets + --with-env-editor + --with-logincap + --with-long-otp-prompt + --with-rundir=/var/run/sudo + --enable-zlib=system + --disable-nls + $configure_opts" + ;; *) # For Solaris, add project support and use let configure choose zlib. # For all others, use the builtin zlib and disable NLS support. diff --git a/scripts/pp b/scripts/pp index e0ba94691..c19bc7351 100755 --- a/scripts/pp +++ b/scripts/pp @@ -1,6 +1,6 @@ #!/bin/sh # Copyright 2021 One Identity LLC. ALL RIGHTS RESERVED -pp_revision="20210503" +pp_revision="20210811" # Copyright 2018 One Identity LLC. ALL RIGHTS RESERVED. # # Redistribution and use in source and binary forms, with or without @@ -8171,6 +8171,12 @@ pp_bsd_make_data() { cat $pp_wrkdir/%files.${cmp} | while read t m o g f p st; do test x"$o" = x"-" && o="${pp_bsd_defattr_uid:-root}" test x"$g" = x"-" && g="${pp_bsd_defattr_gid:-wheel}" + if test x"$m" = x"-"; then + case "$t" in + d) m=755;; + f) m=644;; + esac + fi path=$p case "$t" in f) # Files diff --git a/src/Makefile.in b/src/Makefile.in index 108fa9c8f..c972447c4 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2021 +# Copyright (c) 2010-2021 Todd C. Miller <Todd.Miller@sudo.ws> # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -36,6 +36,7 @@ cross_compiling = @CROSS_COMPILING@ CC = @CC@ LIBTOOL = @LIBTOOL@ SED = @SED@ +AWK = @AWK@ # Our install program supports extra flags... INSTALL = $(SHELL) $(scriptdir)/install-sh -c @@ -43,7 +44,8 @@ INSTALL_OWNER = -o $(install_uid) -g $(install_gid) INSTALL_BACKUP = @INSTALL_BACKUP@ # Libraries -LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la +LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la \ + $(top_builddir)/lib/protobuf-c/libprotobuf-c.la LIBS = @LIBS@ @SUDO_LIBS@ @GETGROUPS_LIB@ @NET_LIBS@ $(LT_LIBS) # C preprocessor defines @@ -59,13 +61,15 @@ CFLAGS = @CFLAGS@ # Flags to pass to the link stage LDFLAGS = @LDFLAGS@ SUDO_LDFLAGS = $(LDFLAGS) @SUDO_LDFLAGS@ -LT_LDFLAGS = @LT_LDFLAGS@ +INTERCEPT_LDFLAGS = @LT_LDFLAGS@ @LT_LDEXPORTS@ +NOEXEC_LDFLAGS = @LT_LDFLAGS@ # Flags to pass to libtool LTFLAGS = --tag=disable-static -# Build sudo_noexec as a module instead of a shared lib (except on macOS) -NOEXEC_MODULE = @NOEXEC_MODULE@ +# Flag to build sudo_module.so and sudo_noexec.so as modules instead of +# shared libs (except on macOS) +PRELOAD_MODULE = @PRELOAD_MODULE@ # Address sanitizer flags ASAN_CFLAGS = @ASAN_CFLAGS@ @@ -100,6 +104,8 @@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localedir = @localedir@ localstatedir = @localstatedir@ +interceptfile = @INTERCEPTFILE@ +interceptdir = @INTERCEPTDIR@ noexecfile = @NOEXECFILE@ noexecdir = @NOEXECDIR@ tmpfiles_d = @TMPFILES_D@ @@ -108,39 +114,49 @@ tmpfiles_d = @TMPFILES_D@ install_uid = 0 install_gid = 0 -# File mode to use for shared libraries +# File extension, mode and map file to use for shared libraries/objects +shlib_enable = @SHLIB_ENABLE@ shlib_mode = @SHLIB_MODE@ +shlib_exp = ./intercept.exp +shlib_map = intercept.map +shlib_opt = intercept.opt # Optional init script and rc.d link INIT_DIR=@INIT_DIR@ INIT_SCRIPT=@INIT_SCRIPT@ RC_LINK=@RC_LINK@ -TEST_PROGS = check_net_ifs @CHECK_NOEXEC@ check_ttyname +TEST_PROGS = check_net_ifs check_noexec check_ttyname TEST_LIBS = @LIBS@ $(LT_LIBS) TEST_LDFLAGS = @LDFLAGS@ +# Set to non-empty for development mode +DEVEL = @DEVEL@ + #### End of system configuration section. #### SHELL = @SHELL@ PROGS = @PROGS@ -OBJS = conversation.o copy_file.o edit_open.o env_hooks.o exec.o \ - exec_common.o exec_monitor.o exec_nopty.o exec_pty.o get_pty.o hooks.o \ - limits.o load_plugins.o net_ifs.o parse_args.o preserve_fds.o \ - signal.o sudo.o sudo_edit.o tcsetpgrp_nobg.o tgetpass.o \ +OBJS = conversation.o copy_file.o edit_open.o env_hooks.o exec.o exec_common.o \ + exec_intercept.o exec_monitor.o exec_nopty.o exec_preload.lo exec_pty.o \ + get_pty.o hooks.o limits.o load_plugins.o net_ifs.o parse_args.o \ + preserve_fds.o signal.o sudo.o sudo_edit.o tcsetpgrp_nobg.o tgetpass.o \ ttyname.o utmp.o @SUDO_OBJS@ IOBJS = $(OBJS:.o=.i) sesh.i POBJS = $(IOBJS:.i=.plog) -SESH_OBJS = copy_file.o edit_open.o exec_common.o sesh.o +SESH_OBJS = copy_file.o edit_open.o exec_common.o exec_preload.lo sesh.o + +INTERCEPT_OBJS = exec_preload.lo sudo_intercept.lo sudo_intercept_common.lo \ + intercept.pb-c.lo CHECK_NET_IFS_OBJS = check_net_ifs.o net_ifs.o -CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o +CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o exec_preload.lo CHECK_TTYNAME_OBJS = check_ttyname.o ttyname.o @@ -148,6 +164,8 @@ LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/ VERSION = @PACKAGE_VERSION@ +GENERATED = intercept.pb-c.h intercept.pb-c.c + all: $(PROGS) depend: @@ -175,11 +193,34 @@ Makefile: $(srcdir)/Makefile.in .i.plog: ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@ +$(devdir)/intercept.pb-c.c: $(srcdir)/intercept.proto + @if [ -n "$(DEVEL)" ]; then \ + cmd='protoc-c --c_out=$(devdir) --proto_path=$(srcdir) $(srcdir)/intercept.proto'; \ + echo "$$cmd"; eval $$cmd; \ + cmd='$(scriptdir)/unanon $(devdir)/intercept.pb-c.h $(devdir)/intercept.pb-c.c'; \ + echo "$$cmd"; eval $$cmd; \ + if [ "$(devdir)" == "$(srcdir)" ]; then \ + cmd='mv -f $(devdir)/intercept.pb-c.h $(incdir)/intercept.pb-c.h'; \ + else \ + cmd='mv -f $(devdir)/intercept.pb-c.h $(top_builddir)/intercept.pb-c.h'; \ + fi; \ + echo "$$cmd"; eval $$cmd; \ + fi + sudo: $(OBJS) $(LT_LIBS) @STATIC_SUDOERS@ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(OBJS) $(SUDO_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS) @STATIC_SUDOERS@ +$(shlib_map): $(shlib_exp) + @$(AWK) 'BEGIN { print "{\n\tglobal:" } { print "\t\t"$$0";" } END { print "\tlocal:\n\t\t*;\n};" }' $(shlib_exp) > $@ + +$(shlib_opt): $(shlib_exp) + @$(SED) 's/^/+e /' $(shlib_exp) > $@ + +sudo_intercept.la: $(INTERCEPT_OBJS) @LT_LDDEP@ + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LDFLAGS) $(INTERCEPT_LDFLAGS) $(ASAN_LDFLAGS) $(SSP_LDFLAGS) $(LT_LIBS) @LIBDL@ -o $@ $(INTERCEPT_OBJS) $(PRELOAD_MODULE) -avoid-version -rpath $(interceptdir) -shrext .so + sudo_noexec.la: sudo_noexec.lo - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) $(SSP_LDFLAGS) @LIBDL@ -o $@ sudo_noexec.lo $(NOEXEC_MODULE) -avoid-version -rpath $(noexecdir) -shrext .so + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LDFLAGS) $(NOEXEC_LDFLAGS) $(SSP_LDFLAGS) @LIBDL@ -o $@ sudo_noexec.lo $(PRELOAD_MODULE) -avoid-version -rpath $(noexecdir) -shrext .so sesh: $(SESH_OBJS) $(LT_LIBS) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(SESH_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS) @@ -195,12 +236,13 @@ check_ttyname: $(CHECK_TTYNAME_OBJS) $(top_builddir)/lib/util/libsudo_util.la pre-install: -install: install-binaries install-rc @INSTALL_NOEXEC@ +install: install-binaries install-rc @INSTALL_INTERCEPT@ @INSTALL_NOEXEC@ install-dirs: # We only create the rc.d dir when installing to the actual system dir $(SHELL) $(scriptdir)/mkinstalldirs $(DESTDIR)$(bindir) \ - $(DESTDIR)$(libexecdir)/sudo $(DESTDIR)$(noexecdir) + $(DESTDIR)$(libexecdir)/sudo $(DESTDIR)$(noexecdir) \ + $(DESTDIR)$(interceptdir) if test -n "$(INIT_SCRIPT)"; then \ $(SHELL) $(scriptdir)/mkinstalldirs $(DESTDIR)$(INIT_DIR); \ if test -z "$(DESTDIR)"; then \ @@ -235,15 +277,24 @@ install-doc: install-includes: +install-intercept: install-dirs sudo_intercept.la + if [ X"$(shlib_enable)" = X"yes" ]; then \ + INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) sudo_intercept.la $(DESTDIR)$(interceptdir); \ + fi + install-noexec: install-dirs sudo_noexec.la - INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) sudo_noexec.la $(DESTDIR)$(noexecdir) + if [ X"$(shlib_enable)" = X"yes" ]; then \ + INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) sudo_noexec.la $(DESTDIR)$(noexecdir); \ + fi install-plugin: install-fuzzer: uninstall: - -$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(noexecdir)/sudo_noexec.la + -$(LIBTOOL) $(LTFLAGS) --mode=uninstall \ + rm -f $(DESTDIR)$(interceptdir)/sudo_intercept.la \ + $(DESTDIR)$(noexecdir)/sudo_noexec.la -rm -f $(DESTDIR)$(bindir)/sudo \ $(DESTDIR)$(bindir)/sudoedit \ $(DESTDIR)$(libexecdir)/sudo/sesh \ @@ -251,6 +302,7 @@ uninstall: -test -z "$(INSTALL_BACKUP)" || \ rm -f $(DESTDIR)$(bindir)/sudo$(INSTALL_BACKUP) \ $(DESTDIR)$(libexecdir)/sudo/sesh$(INSTALL_BACKUP) \ + $(DESTDIR)$(interceptdir)/sudo_intercept.so$(INSTALL_BACKUP) \ $(DESTDIR)$(noexecdir)/sudo_noexec.so$(INSTALL_BACKUP) -test -z "$(INIT_SCRIPT)" || \ rm -f $(DESTDIR)$(RC_LINK) $(DESTDIR)$(INIT_DIR)/sudo @@ -281,7 +333,7 @@ check: $(TEST_PROGS) check-fuzzer MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \ ./check_net_ifs; \ - if test X"@CHECK_NOEXEC@" != X""; then \ + if [ -f .libs/$(noexecfile) ]; then \ ./check_noexec .libs/$(noexecfile); \ fi; \ ./check_ttyname; \ @@ -295,7 +347,11 @@ clean: mostlyclean: clean distclean: clean - -rm -rf Makefile .libs sudo_usage.h + -rm -rf Makefile .libs $(shlib_map) $(shlib_opt) sudo_usage.h + @if [ -n "$(DEVEL)" -a "$(devdir)" != "$(srcdir)" ]; then \ + cmd='rm -rf $(GENERATED)'; \ + echo "$$cmd"; eval $$cmd; \ + fi clobber: distclean @@ -308,20 +364,18 @@ cleandir: realclean # *Not* auto-generated to avoid building with ASAN sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(incdir)/sudo_compat.h \ - $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_noexec.c # Autogenerated dependencies, do not modify check_net_ifs.o: $(srcdir)/regress/net_ifs/check_net_ifs.c \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_util.h $(top_builddir)/config.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/net_ifs/check_net_ifs.c check_net_ifs.i: $(srcdir)/regress/net_ifs/check_net_ifs.c \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_plugin.h \ $(incdir)/sudo_util.h $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< check_net_ifs.plog: check_net_ifs.i @@ -462,6 +516,28 @@ exec_common.i: $(srcdir)/exec_common.c $(incdir)/compat/stdbool.h \ $(CC) -E -o $@ $(CPPFLAGS) $< exec_common.plog: exec_common.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/exec_common.c --i-file $< --output-file $@ +exec_intercept.o: $(srcdir)/exec_intercept.c $(incdir)/compat/stdbool.h \ + $(incdir)/intercept.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_rand.h $(incdir)/sudo_util.h $(srcdir)/sudo.h \ + $(srcdir)/sudo_exec.h $(srcdir)/sudo_plugin_int.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/exec_intercept.c +exec_intercept.i: $(srcdir)/exec_intercept.c $(incdir)/compat/stdbool.h \ + $(incdir)/intercept.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_rand.h $(incdir)/sudo_util.h $(srcdir)/sudo.h \ + $(srcdir)/sudo_exec.h $(srcdir)/sudo_plugin_int.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +exec_intercept.plog: exec_intercept.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/exec_intercept.c --i-file $< --output-file $@ exec_monitor.o: $(srcdir)/exec_monitor.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ @@ -502,6 +578,24 @@ exec_nopty.i: $(srcdir)/exec_nopty.c $(incdir)/compat/stdbool.h \ $(CC) -E -o $@ $(CPPFLAGS) $< exec_nopty.plog: exec_nopty.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/exec_nopty.c --i-file $< --output-file $@ +exec_preload.lo: $(srcdir)/exec_preload.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_exec.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/exec_preload.c +exec_preload.i: $(srcdir)/exec_preload.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ + $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_exec.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +exec_preload.plog: exec_preload.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/exec_preload.c --i-file $< --output-file $@ exec_pty.o: $(srcdir)/exec_pty.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ @@ -556,6 +650,14 @@ hooks.i: $(srcdir)/hooks.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(CC) -E -o $@ $(CPPFLAGS) $< hooks.plog: hooks.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/hooks.c --i-file $< --output-file $@ +intercept.pb-c.lo: $(srcdir)/intercept.pb-c.c $(incdir)/intercept.pb-c.h \ + $(incdir)/protobuf-c/protobuf-c.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/intercept.pb-c.c +intercept.pb-c.i: $(srcdir)/intercept.pb-c.c $(incdir)/intercept.pb-c.h \ + $(incdir)/protobuf-c/protobuf-c.h + $(CC) -E -o $@ $(CPPFLAGS) $< +intercept.pb-c.plog: intercept.pb-c.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/intercept.pb-c.c --i-file $< --output-file $@ limits.o: $(srcdir)/limits.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.h $(incdir)/sudo_fatal.h \ @@ -776,6 +878,40 @@ sudo_edit.i: $(srcdir)/sudo_edit.c $(incdir)/compat/stdbool.h \ $(CC) -E -o $@ $(CPPFLAGS) $< sudo_edit.plog: sudo_edit.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo_edit.c --i-file $< --output-file $@ +sudo_intercept.lo: $(srcdir)/sudo_intercept.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_intercept.c +sudo_intercept.i: $(srcdir)/sudo_intercept.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +sudo_intercept.plog: sudo_intercept.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo_intercept.c --i-file $< --output-file $@ +sudo_intercept_common.lo: $(srcdir)/sudo_intercept_common.c \ + $(incdir)/compat/stdbool.h \ + $(incdir)/intercept.pb-c.h \ + $(incdir)/protobuf-c/protobuf-c.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/sudo_exec.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_intercept_common.c +sudo_intercept_common.i: $(srcdir)/sudo_intercept_common.c \ + $(incdir)/compat/stdbool.h \ + $(incdir)/intercept.pb-c.h \ + $(incdir)/protobuf-c/protobuf-c.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ + $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/sudo_exec.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +sudo_intercept_common.plog: sudo_intercept_common.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo_intercept_common.c --i-file $< --output-file $@ tcsetpgrp_nobg.o: $(srcdir)/tcsetpgrp_nobg.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_event.h \ diff --git a/src/exec.c b/src/exec.c index ffee016aa..ca14c9dd8 100644 --- a/src/exec.c +++ b/src/exec.c @@ -49,7 +49,7 @@ #include "sudo_plugin_int.h" static void -close_fds(struct command_details *details, int errfd) +close_fds(struct command_details *details, int errfd, int intercept_fd) { int fd, maxfd; unsigned char *debug_fds; @@ -66,6 +66,8 @@ close_fds(struct command_details *details, int errfd) } if (errfd != -1) add_preserved_fd(&details->preserved_fds, errfd); + if (intercept_fd != -1) + add_preserved_fd(&details->preserved_fds, intercept_fd); /* Close all fds except those explicitly preserved. */ closefrom_except(details->closefrom, &details->preserved_fds); @@ -79,7 +81,7 @@ close_fds(struct command_details *details, int errfd) * Returns true on success and false on failure. */ static bool -exec_setup(struct command_details *details, int errfd) +exec_setup(struct command_details *details, int intercept_fd, int errfd) { bool ret = false; debug_decl(exec_setup, SUDO_DEBUG_EXEC); @@ -163,7 +165,7 @@ exec_setup(struct command_details *details, int errfd) (void) umask(details->umask); /* Close fds before chroot (need /dev) or uid change (prlimit on Linux). */ - close_fds(details, errfd); + close_fds(details, errfd, intercept_fd); if (details->chroot) { if (chroot(details->chroot) != 0 || chdir("/") != 0) { @@ -233,12 +235,12 @@ done: * If the exec fails, cstat is filled in with the value of errno. */ void -exec_cmnd(struct command_details *details, int errfd) +exec_cmnd(struct command_details *details, int intercept_fd, int errfd) { debug_decl(exec_cmnd, SUDO_DEBUG_EXEC); restore_signals(); - if (exec_setup(details, errfd) == true) { + if (exec_setup(details, intercept_fd, errfd) == true) { /* headed for execve() */ #ifdef HAVE_SELINUX if (ISSET(details->flags, CD_RBAC_ENABLED)) { @@ -248,7 +250,7 @@ exec_cmnd(struct command_details *details, int errfd) #endif { sudo_execve(details->execfd, details->command, details->argv, - details->envp, ISSET(details->flags, CD_NOEXEC)); + details->envp, intercept_fd, details->flags); } } sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to exec %s: %s", @@ -317,7 +319,7 @@ sudo_needs_pty(struct command_details *details) { struct plugin_container *plugin; - if (ISSET(details->flags, CD_USE_PTY)) + if (ISSET(details->flags, CD_USE_PTY|CD_INTERCEPT|CD_LOG_SUBCMDS)) return true; TAILQ_FOREACH(plugin, &io_plugins, entries) { @@ -409,7 +411,7 @@ sudo_execute(struct command_details *details, struct command_status *cstat) */ if (direct_exec_allowed(details)) { if (!sudo_terminated(cstat)) { - exec_cmnd(details, -1); + exec_cmnd(details, -1, -1); cstat->type = CMD_ERRNO; cstat->val = errno; } diff --git a/src/exec_common.c b/src/exec_common.c index 32834de08..35288f9e1 100644 --- a/src/exec_common.c +++ b/src/exec_common.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2016 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -23,6 +23,7 @@ #include <config.h> +#include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -35,116 +36,6 @@ #include "sudo.h" #include "sudo_exec.h" -#ifdef RTLD_PRELOAD_VAR -/* - * Add a DSO file to LD_PRELOAD or the system equivalent. - */ -static char ** -preload_dso(char *envp[], const char *dso_file) -{ - char *preload = NULL; - int env_len; - int preload_idx = -1; - bool present = false; -# ifdef RTLD_PRELOAD_ENABLE_VAR - bool enabled = false; -# else - const bool enabled = true; -# endif - debug_decl(preload_dso, SUDO_DEBUG_UTIL); - - /* - * Preload a DSO file. For a list of LD_PRELOAD-alikes, see - * http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html - * XXX - need to support 32-bit and 64-bit variants - */ - - /* Count entries in envp, looking for LD_PRELOAD as we go. */ - for (env_len = 0; envp[env_len] != NULL; env_len++) { - if (preload_idx == -1 && strncmp(envp[env_len], RTLD_PRELOAD_VAR "=", - sizeof(RTLD_PRELOAD_VAR)) == 0) { - const char *cp = envp[env_len] + sizeof(RTLD_PRELOAD_VAR); - const char *end = cp + strlen(cp); - const char *ep; - const size_t dso_len = strlen(dso_file); - - /* Check to see if dso_file is already present. */ - for (cp = sudo_strsplit(cp, end, RTLD_PRELOAD_DELIM, &ep); - cp != NULL; cp = sudo_strsplit(NULL, end, RTLD_PRELOAD_DELIM, - &ep)) { - if ((size_t)(ep - cp) == dso_len) { - if (memcmp(cp, dso_file, dso_len) == 0) { - /* already present */ - present = true; - break; - } - } - } - - /* Save index of existing LD_PRELOAD variable. */ - preload_idx = env_len; - continue; - } -# ifdef RTLD_PRELOAD_ENABLE_VAR - if (strncmp(envp[env_len], RTLD_PRELOAD_ENABLE_VAR "=", sizeof(RTLD_PRELOAD_ENABLE_VAR)) == 0) { - enabled = true; - continue; - } -# endif - } - - /* - * Make a new copy of envp as needed. - * It would be nice to realloc the old envp[] but we don't know - * whether it was dynamically allocated. [TODO: plugin API] - */ - if (preload_idx == -1 || !enabled) { - const int env_size = env_len + 1 + (preload_idx == -1) + enabled; // -V547 - - char **nenvp = reallocarray(NULL, env_size, sizeof(*envp)); - if (nenvp == NULL) - sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - memcpy(nenvp, envp, env_len * sizeof(*envp)); - nenvp[env_len] = NULL; - envp = nenvp; - } - - /* Prepend our LD_PRELOAD to existing value or add new entry at the end. */ - if (!present) { - if (preload_idx == -1) { -# ifdef RTLD_PRELOAD_DEFAULT - asprintf(&preload, "%s=%s%s%s", RTLD_PRELOAD_VAR, dso_file, - RTLD_PRELOAD_DELIM, RTLD_PRELOAD_DEFAULT); -# else - preload = sudo_new_key_val(RTLD_PRELOAD_VAR, dso_file); -# endif - if (preload == NULL) { - sudo_fatalx(U_("%s: %s"), __func__, - U_("unable to allocate memory")); - } - envp[env_len++] = preload; - envp[env_len] = NULL; - } else { - int len = asprintf(&preload, "%s=%s%s%s", RTLD_PRELOAD_VAR, - dso_file, RTLD_PRELOAD_DELIM, envp[preload_idx]); - if (len == -1) { - sudo_fatalx(U_("%s: %s"), __func__, - U_("unable to allocate memory")); - } - envp[preload_idx] = preload; - } - } -# ifdef RTLD_PRELOAD_ENABLE_VAR - if (!enabled) { - envp[env_len++] = RTLD_PRELOAD_ENABLE_VAR "="; - envp[env_len] = NULL; - } -# endif - - debug_return_ptr(envp); -} -#endif /* RTLD_PRELOAD_VAR */ - /* * Disable execution of child processes in the command we are about * to run. On systems with privilege sets, we can remove the exec @@ -167,8 +58,33 @@ disable_execute(char *envp[], const char *dso) #ifdef RTLD_PRELOAD_VAR if (dso != NULL) - envp = preload_dso(envp, dso); + envp = sudo_preload_dso(envp, dso, -1); +#endif /* RTLD_PRELOAD_VAR */ + + debug_return_ptr(envp); +} + +/* + * Trap execution of child processes in the command we are about to run. + * Uses LD_PRELOAD and the like to perform a policy check on child commands. + */ +static char ** +enable_intercept(char *envp[], const char *dso, int intercept_fd) +{ + debug_decl(enable_intercept, SUDO_DEBUG_UTIL); + + if (dso != NULL) { +#ifdef RTLD_PRELOAD_VAR + if (intercept_fd == -1) + sudo_fatalx("%s: no intercept fd", __func__); + + envp = sudo_preload_dso(envp, dso, intercept_fd); +#else + /* Intercept not supported, envp unchanged. */ + if (intercept_fd != -1) + close(intercept_fd); #endif /* RTLD_PRELOAD_VAR */ + } debug_return_ptr(envp); } @@ -178,15 +94,18 @@ disable_execute(char *envp[], const char *dso) * ala execvp(3) if we get ENOEXEC. */ int -sudo_execve(int fd, const char *path, char *const argv[], char *envp[], bool noexec) +sudo_execve(int fd, const char *path, char *const argv[], char *envp[], + int intercept_fd, int flags) { debug_decl(sudo_execve, SUDO_DEBUG_UTIL); sudo_debug_execve(SUDO_DEBUG_INFO, path, argv, envp); - /* Modify the environment as needed to disable further execve(). */ - if (noexec) + /* Modify the environment as needed to trap execve(). */ + if (ISSET(flags, CD_NOEXEC)) envp = disable_execute(envp, sudo_conf_noexec_path()); + else if (ISSET(flags, CD_INTERCEPT|CD_LOG_SUBCMDS)) + envp = enable_intercept(envp, sudo_conf_intercept_path(), intercept_fd); #ifdef HAVE_FEXECVE if (fd != -1) diff --git a/src/exec_intercept.c b/src/exec_intercept.c new file mode 100644 index 000000000..4f606ba12 --- /dev/null +++ b/src/exec_intercept.c @@ -0,0 +1,954 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This is an open source non-commercial project. Dear PVS-Studio, please check it. + * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + */ + +#include <config.h> + +#include <sys/socket.h> +#include <netinet/in.h> + +#if defined(HAVE_STDINT_H) +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> +#include <fcntl.h> +#include <termios.h> + +#include "sudo.h" +#include "sudo_exec.h" +#include "sudo_plugin.h" +#include "sudo_plugin_int.h" +#include "sudo_rand.h" +#include "intercept.pb-c.h" + +#ifdef _PATH_SUDO_INTERCEPT + +/* TCSASOFT is a BSD extension that ignores control flags and speed. */ +# ifndef TCSASOFT +# define TCSASOFT 0 +# endif + +enum intercept_state { + RECV_HELLO_INITIAL, + RECV_HELLO, + RECV_SECRET, + RECV_POLICY_CHECK, + RECV_CONNECTION, + POLICY_ACCEPT, + POLICY_REJECT, + POLICY_ERROR +}; + +/* Closure for intercept_cb() */ +struct intercept_closure { + union sudo_token_un token; + struct command_details *details; + struct sudo_event ev; + const char *errstr; + char *command; /* dynamically allocated */ + char **run_argv; /* owned by plugin */ + char **run_envp; /* dynamically allocated */ + uint8_t *buf; /* dynamically allocated */ + uint32_t len; + uint32_t off; + int listen_sock; + enum intercept_state state; +}; + +static union sudo_token_un intercept_token; +static in_port_t intercept_listen_port; +static void intercept_accept_cb(int fd, int what, void *v); +static void intercept_cb(int fd, int what, void *v); + +bool +intercept_setup(int fd, struct sudo_event_base *evbase, + struct command_details *details) +{ + struct intercept_closure *closure; + debug_decl(intercept_setup, SUDO_DEBUG_EXEC); + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "intercept fd %d\n", fd); + + closure = calloc(1, sizeof(*closure)); + if (closure == NULL) { + sudo_warnx("%s", U_("unable to allocate memory")); + goto bad; + } + + /* If we've already seen a ClientHello, expect a policy check first. */ + closure->state = sudo_token_isset(intercept_token) ? + RECV_SECRET : RECV_HELLO_INITIAL; + closure->details = details; + closure->listen_sock = -1; + + if (sudo_ev_set(&closure->ev, fd, SUDO_EV_READ|SUDO_EV_PERSIST, intercept_cb, closure) == -1) { + /* This cannot (currently) fail. */ + sudo_warn("%s", U_("unable to add event to queue")); + goto bad; + } + if (sudo_ev_add(evbase, &closure->ev, NULL, false) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto bad; + } + + debug_return_bool(true); + +bad: + free(closure); + debug_return_bool(false); +} + +/* + * Close intercept socket and free closure when we are done with + * the connection. + */ +static void +intercept_connection_close(int fd, struct intercept_closure *closure) +{ + size_t n; + debug_decl(intercept_connection_close, SUDO_DEBUG_EXEC); + + sudo_ev_del(NULL, &closure->ev); + close(fd); + if (closure->listen_sock != -1) + close(closure->listen_sock); + + free(closure->buf); + free(closure->command); + if (closure->run_argv != NULL) { + for (n = 0; closure->run_argv[n] != NULL; n++) + free(closure->run_argv[n]); + free(closure->run_argv); + } + if (closure->run_envp != NULL) { + for (n = 0; closure->run_envp[n] != NULL; n++) + free(closure->run_envp[n]); + free(closure->run_envp); + } + free(closure); + + debug_return; +} + +/* + * Prepare to listen on localhost using an ephemeral port. + * Sets intercept_token and intercept_listen_port as side effects. + */ +static bool +prepare_listener(struct intercept_closure *closure) +{ + struct sockaddr_in sin; + socklen_t sin_len = sizeof(sin); + int sock; + debug_decl(prepare_listener, SUDO_DEBUG_EXEC); + + /* Generate a random token. */ + do { + arc4random_buf(&intercept_token, sizeof(intercept_token)); + } while (!sudo_token_isset(intercept_token)); + + /* Create localhost listener socket (currently AF_INET only). */ + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock == -1) { + sudo_warn("socket"); + goto bad; + } + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + sin.sin_port = 0; + if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1) { + sudo_warn("bind"); + goto bad; + } + if (getsockname(sock, (struct sockaddr *)&sin, &sin_len) == -1) { + sudo_warn("getsockname"); + goto bad; + } + if (listen(sock, SOMAXCONN) == -1) { + sudo_warn("listen"); + goto bad; + } + + closure->listen_sock = sock; + intercept_listen_port = ntohs(sin.sin_port); + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "%s: listening on port %hu", __func__, intercept_listen_port); + + debug_return_bool(true); + +bad: + if (sock != -1) + close(sock); + debug_return_bool(false); +} + +/* + * Allocate a new command_info[] and update command and runcwd in it. + * Fills in cmnd_out with a copy of the command if not NULL. + * Returns the new command_info[] which the caller must free. + */ +static char ** +update_command_info(char * const *old_command_info, const char *cmnd, + const char *runcwd, char **cmnd_out) +{ + char **command_info; + char * const *oci; + size_t n; + debug_decl(update_command_info, SUDO_DEBUG_EXEC); + + /* Rebuild command_info[] with new command and add a runcwd. */ + for (n = 0; old_command_info[n] != NULL; n++) + continue; + command_info = reallocarray(NULL, n + 2, sizeof(char *)); + if (command_info == NULL) { + goto bad; + } + for (oci = old_command_info, n = 0; *oci != NULL; oci++) { + const char *cp = *oci; + switch (*cp) { + case 'c': + if (strncmp(cp, "command=", sizeof("command=") - 1) == 0) { + if (cmnd != NULL) { + command_info[n] = sudo_new_key_val("command", cmnd); + if (command_info[n] == NULL) { + goto bad; + } + n++; + continue; + } else if (cmnd_out != NULL) { + *cmnd_out = strdup(cp + sizeof("command=") - 1); + if (*cmnd_out == NULL) { + goto bad; + } + } + } + break; + case 'r': + if (strncmp(cp, "runcwd=", sizeof("runcwd=") - 1) == 0) { + /* Filled in at the end. */ + continue; + } + break; + } + command_info[n] = strdup(cp); + if (command_info[n] == NULL) { + goto bad; + } + n++; + } + /* Append actual runcwd. */ + command_info[n] = sudo_new_key_val("runcwd", runcwd); + if (command_info[n] == NULL) { + goto bad; + } + n++; + + command_info[n] = NULL; + + debug_return_ptr(command_info); +bad: + if (command_info != NULL) { + for (n = 0; command_info[n] != NULL; n++) { + free(command_info[n]); + } + free(command_info); + } + debug_return_ptr(NULL); +} + +static bool +intercept_check_policy(PolicyCheckRequest *req, + struct intercept_closure *closure) +{ + char **command_info = NULL; + char **command_info_copy = NULL; + char **user_env_out = NULL; + char **argv = NULL, **run_argv = NULL; + bool ret = false; + int result; + size_t n; + debug_decl(intercept_check_policy, SUDO_DEBUG_EXEC); + + if (req->command == NULL || req->n_argv == 0 || req->n_envp == 0) { + closure->errstr = N_("invalid PolicyCheckRequest"); + goto done; + } + + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "req_command: %s", req->command); + for (n = 0; n < req->n_argv; n++) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "req_argv[%zu]: %s", n, req->argv[n]); + } + } + + /* Rebuild argv from PolicyCheckReq so it is NULL-terminated. */ + argv = reallocarray(NULL, req->n_argv + 1, sizeof(char *)); + if (argv == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + argv[0] = req->command; + for (n = 1; n < req->n_argv; n++) { + argv[n] = req->argv[n]; + } + argv[n] = NULL; + + if (ISSET(closure->details->flags, CD_INTERCEPT)) { + /* We don't currently have a good way to validate the environment. */ + sudo_debug_set_active_instance(policy_plugin.debug_instance); + result = policy_plugin.u.policy->check_policy(n, argv, NULL, + &command_info, &run_argv, &user_env_out, &closure->errstr); + sudo_debug_set_active_instance(sudo_debug_instance); + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "check_policy returns %d", result); + + switch (result) { + case 1: + /* Rebuild command_info[] with runcwd and extract command. */ + command_info_copy = update_command_info(command_info, NULL, + req->cwd ? req->cwd : "unknown", &closure->command); + if (command_info_copy == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + command_info = command_info_copy; + closure->state = POLICY_ACCEPT; + break; + case 0: + if (closure->errstr == NULL) + closure->errstr = N_("command rejected by policy"); + audit_reject(policy_plugin.name, SUDO_POLICY_PLUGIN, + closure->errstr, command_info); + closure->state = POLICY_REJECT; + ret = true; + goto done; + default: + goto done; + } + } else { + /* No actual policy check, just logging child processes. */ + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "not checking policy, audit only"); + closure->command = strdup(req->command); + if (closure->command == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + + /* Rebuild command_info[] with new command and runcwd. */ + command_info = update_command_info(closure->details->info, + req->command, req->cwd ? req->cwd : "unknown", NULL); + if (command_info == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + closure->state = POLICY_ACCEPT; + run_argv = argv; + } + + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "run_command: %s", closure->command); + for (n = 0; command_info[n] != NULL; n++) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "command_info[%zu]: %s", n, command_info[n]); + } + for (n = 0; run_argv[n] != NULL; n++) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "run_argv[%zu]: %s", n, run_argv[n]); + } + } + + /* run_argv strings may be part of PolicyCheckReq, make a copy. */ + for (n = 0; run_argv[n] != NULL; n++) + continue; + closure->run_argv = reallocarray(NULL, n + 1, sizeof(char *)); + if (closure->run_argv == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + for (n = 0; run_argv[n] != NULL; n++) { + closure->run_argv[n] = strdup(run_argv[n]); + if (closure->run_argv[n] == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + } + closure->run_argv[n] = NULL; + + /* envp strings are part of PolicyCheckReq, make a copy. */ + closure->run_envp = reallocarray(NULL, req->n_envp + 1, sizeof(char *)); + if (closure->run_envp == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + for (n = 0; n < req->n_envp; n++) { + closure->run_envp[n] = strdup(req->envp[n]); + if (closure->run_envp[n] == NULL) { + closure->errstr = N_("unable to allocate memory"); + goto done; + } + } + closure->run_envp[n] = NULL; + + if (ISSET(closure->details->flags, CD_INTERCEPT)) { + audit_accept(policy_plugin.name, SUDO_POLICY_PLUGIN, command_info, + closure->run_argv, closure->run_envp); + + /* Call approval plugins and audit the result. */ + if (!approval_check(command_info, closure->run_argv, closure->run_envp)) + debug_return_int(0); + } + + /* Audit the event again for the sudo front-end. */ + audit_accept("sudo", SUDO_FRONT_END, command_info, closure->run_argv, + closure->run_envp); + + ret = true; + +done: + if (!ret) { + if (closure->errstr == NULL) + closure->errstr = N_("policy plugin error"); + audit_error(policy_plugin.name, SUDO_POLICY_PLUGIN, closure->errstr, + command_info ? command_info : closure->details->info); + closure->state = POLICY_ERROR; + } + if (command_info_copy != NULL) { + for (n = 0; command_info_copy[n] != NULL; n++) { + free(command_info_copy[n]); + } + free(command_info_copy); + } + free(argv); + + debug_return_bool(ret); +} + +/* + * Read token from sudo_intercept.so and verify w/ intercept_token. + * Returns true on success, false on mismatch and -1 on error. + */ +static int +intercept_verify_token(int fd, struct intercept_closure *closure) +{ + ssize_t nread; + debug_decl(intercept_read_token, SUDO_DEBUG_EXEC); + + nread = recv(fd, closure->token.u8 + closure->off, + sizeof(closure->token) - closure->off, 0); + switch (nread) { + case 0: + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "EOF reading token"); + debug_return_int(false); + case -1: + debug_return_int(-1); + default: + if (nread + closure->off == sizeof(closure->token)) + break; + /* partial read, update offset and try again */ + closure->off += nread; + errno = EAGAIN; + debug_return_int(-1); + } + + closure->off = 0; + if (memcmp(&closure->token, &intercept_token, sizeof(closure->token)) != 0) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "token mismatch: got 0x%8x%8x%8x%8x, expected 0x%8x%8x%8x%8x", + closure->token.u32[3], closure->token.u32[2], + closure->token.u32[1], closure->token.u32[0], + intercept_token.u32[3], intercept_token.u32[2], + intercept_token.u32[1], intercept_token.u32[0]); + debug_return_int(false); + } + debug_return_int(true); +} + +/* + * Read a message from sudo_intercept.so and act on it. + */ +static bool +intercept_read(int fd, struct intercept_closure *closure) +{ + struct sudo_event_base *evbase = sudo_ev_get_base(&closure->ev); + InterceptRequest *req = NULL; + pid_t saved_pgrp = -1; + struct termios oterm; + ssize_t nread; + bool ret = false; + int ttyfd = -1; + debug_decl(intercept_read, SUDO_DEBUG_EXEC); + + if (closure->state == RECV_SECRET) { + switch (intercept_verify_token(fd, closure)) { + case true: + closure->state = RECV_POLICY_CHECK; + break; + case false: + goto done; + default: + if (errno == EINTR || errno == EAGAIN) + debug_return_bool(true); + sudo_warn("recv"); + goto done; + } + } + + if (closure->len == 0) { + uint32_t req_len; + + /* Read message size (uint32_t in host byte order). */ + nread = recv(fd, &req_len, sizeof(req_len), 0); + if (nread != sizeof(req_len)) { + if (nread == -1) { + if (errno == EINTR || errno == EAGAIN) + debug_return_bool(true); + sudo_warn("recv"); + } + goto done; + } + + if (req_len == 0) { + /* zero-length message is possible */ + goto unpack; + } + if (req_len > MESSAGE_SIZE_MAX) { + sudo_warnx(U_("client request too large: %zu"), (size_t)req_len); + goto done; + } + if ((closure->buf = malloc(req_len)) == NULL) { + sudo_warnx("%s", U_("unable to allocate memory")); + goto done; + } + closure->len = req_len; + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: expecting %u bytes from client", + __func__, closure->len); + } + + nread = recv(fd, closure->buf + closure->off, closure->len - closure->off, + 0); + switch (nread) { + case 0: + /* EOF, other side must have exited. */ + goto done; + case -1: + if (errno == EINTR || errno == EAGAIN) + debug_return_bool(true); + sudo_warn("recv"); + goto done; + default: + closure->off += nread; + break; + } + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received %zd bytes from client", + __func__, nread); + + if (closure->off != closure->len) { + /* Partial read. */ + debug_return_bool(true); + } + +unpack: + req = intercept_request__unpack(NULL, closure->len, closure->buf); + if (req == NULL) { + sudo_warnx("unable to unpack %s size %zu", "InterceptRequest", + (size_t)closure->len); + goto done; + } + + sudo_debug_printf(SUDO_DEBUG_INFO, + "%s: finished receiving %u bytes from client", __func__, closure->len); + sudo_ev_del(evbase, &closure->ev); + free(closure->buf); + closure->buf = NULL; + closure->len = 0; + closure->off = 0; + + switch (req->type_case) { + case INTERCEPT_REQUEST__TYPE_POLICY_CHECK_REQ: + if (closure->state != RECV_POLICY_CHECK) { + /* Only a single policy check request is allowed. */ + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "state mismatch, expected RECV_POLICY_CHECK (%d), got %d", + RECV_POLICY_CHECK, closure->state); + goto done; + } + + /* Take back control of the tty, if necessary, for the policy check. */ + ttyfd = open(_PATH_TTY, O_RDWR); + if (ttyfd != -1) { + saved_pgrp = tcgetpgrp(ttyfd); + if (saved_pgrp == -1 || tcsetpgrp(ttyfd, getpgid(0)) == -1 || + tcgetattr(ttyfd, &oterm) == -1) { + close(ttyfd); + ttyfd = -1; + } + } + + ret = intercept_check_policy(req->u.policy_check_req, closure); + + /* We must restore tty before any error handling. */ + if (ttyfd != -1) { + (void)tcsetattr(ttyfd, TCSASOFT|TCSAFLUSH, &oterm); + (void)tcsetpgrp(ttyfd, saved_pgrp); + } + if (!ret) + goto done; + break; + case INTERCEPT_REQUEST__TYPE_HELLO: + switch (closure->state) { + case RECV_HELLO_INITIAL: + if (!prepare_listener(closure)) + goto done; + break; + case RECV_HELLO: + break; + default: + /* Only accept hello on a socket with an accepted command. */ + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "got ClientHello without an accepted command"); + goto done; + } + break; + default: + sudo_warnx(U_("unexpected type_case value %d in %s from %s"), + req->type_case, "InterceptRequest", "sudo_intercept.so"); + goto done; + } + + /* Switch event to write mode for the reply. */ + if (sudo_ev_set(&closure->ev, fd, SUDO_EV_WRITE|SUDO_EV_PERSIST, intercept_cb, closure) == -1) { + /* This cannot (currently) fail. */ + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + if (sudo_ev_add(evbase, &closure->ev, NULL, false) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + + ret = true; + +done: + if (ttyfd != -1) + close(ttyfd); + intercept_request__free_unpacked(req, NULL); + debug_return_bool(ret); +} + +static bool +fmt_intercept_response(InterceptResponse *resp, + struct intercept_closure *closure) +{ + uint32_t resp_len; + bool ret = false; + debug_decl(fmt_intercept_response, SUDO_DEBUG_EXEC); + + closure->len = intercept_response__get_packed_size(resp); + if (closure->len > MESSAGE_SIZE_MAX) { + sudo_warnx(U_("server message too large: %zu"), (size_t)closure->len); + goto done; + } + + /* Wire message size is used for length encoding, precedes message. */ + resp_len = closure->len; + closure->len += sizeof(resp_len); + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "size + InterceptResponse %zu bytes", (size_t)closure->len); + + if ((closure->buf = malloc(closure->len)) == NULL) { + sudo_warnx("%s", U_("unable to allocate memory")); + goto done; + } + memcpy(closure->buf, &resp_len, sizeof(resp_len)); + intercept_response__pack(resp, closure->buf + sizeof(resp_len)); + + ret = true; + +done: + debug_return_bool(ret); +} + +static bool +fmt_hello_response(struct intercept_closure *closure) +{ + HelloResponse hello_resp = HELLO_RESPONSE__INIT; + InterceptResponse resp = INTERCEPT_RESPONSE__INIT; + debug_decl(fmt_hello_response, SUDO_DEBUG_EXEC); + + hello_resp.portno = intercept_listen_port; + hello_resp.token_lo = intercept_token.u64[0]; + hello_resp.token_hi = intercept_token.u64[1]; + + resp.u.hello_resp = &hello_resp; + resp.type_case = INTERCEPT_RESPONSE__TYPE_HELLO_RESP; + + debug_return_bool(fmt_intercept_response(&resp, closure)); +} + +static bool +fmt_accept_message(struct intercept_closure *closure) +{ + PolicyAcceptMessage msg = POLICY_ACCEPT_MESSAGE__INIT; + InterceptResponse resp = INTERCEPT_RESPONSE__INIT; + size_t n; + debug_decl(fmt_accept_message, SUDO_DEBUG_EXEC); + + msg.run_command = closure->command; + msg.run_argv = closure->run_argv; + for (n = 0; closure->run_argv[n] != NULL; n++) + continue; + msg.n_run_argv = n; + msg.run_envp = closure->run_envp; + for (n = 0; closure->run_envp[n] != NULL; n++) + continue; + msg.n_run_envp = n; + + resp.u.accept_msg = &msg; + resp.type_case = INTERCEPT_RESPONSE__TYPE_ACCEPT_MSG; + + debug_return_bool(fmt_intercept_response(&resp, closure)); +} + +static bool +fmt_reject_message(struct intercept_closure *closure) +{ + PolicyRejectMessage msg = POLICY_REJECT_MESSAGE__INIT; + InterceptResponse resp = INTERCEPT_RESPONSE__INIT; + debug_decl(fmt_reject_message, SUDO_DEBUG_EXEC); + + msg.reject_message = (char *)closure->errstr; + + resp.u.reject_msg = &msg; + resp.type_case = INTERCEPT_RESPONSE__TYPE_REJECT_MSG; + + debug_return_bool(fmt_intercept_response(&resp, closure)); +} + +static bool +fmt_error_message(struct intercept_closure *closure) +{ + PolicyErrorMessage msg = POLICY_ERROR_MESSAGE__INIT; + InterceptResponse resp = INTERCEPT_RESPONSE__INIT; + debug_decl(fmt_error_message, SUDO_DEBUG_EXEC); + + msg.error_message = (char *)closure->errstr; + + resp.u.error_msg = &msg; + resp.type_case = INTERCEPT_RESPONSE__TYPE_ERROR_MSG; + + debug_return_bool(fmt_intercept_response(&resp, closure)); +} + +/* + * Write a response to sudo_intercept.so. + */ +static bool +intercept_write(int fd, struct intercept_closure *closure) +{ + struct sudo_event_base *evbase = sudo_ev_get_base(&closure->ev); + ssize_t nwritten; + bool ret = false; + debug_decl(intercept_write, SUDO_DEBUG_EXEC); + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "state %d", + closure->state); + + if (closure->len == 0) { + /* Format new message. */ + switch (closure->state) { + case RECV_HELLO_INITIAL: + case RECV_HELLO: + if (!fmt_hello_response(closure)) + goto done; + break; + case POLICY_ACCEPT: + if (!fmt_accept_message(closure)) + goto done; + break; + case POLICY_REJECT: + if (!fmt_reject_message(closure)) + goto done; + break; + default: + if (!fmt_error_message(closure)) + goto done; + break; + } + } + + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: sending %u bytes to client", + __func__, closure->len - closure->off); + nwritten = send(fd, closure->buf + closure->off, + closure->len - closure->off, 0); + if (nwritten == -1) { + if (errno == EINTR || errno == EAGAIN) + debug_return_bool(true); + sudo_warn("send"); + goto done; + } + closure->off += nwritten; + + if (closure->off != closure->len) { + /* Partial write. */ + debug_return_bool(true); + } + + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: sent %u bytes to client", + __func__, closure->len); + sudo_ev_del(evbase, &closure->ev); + free(closure->buf); + closure->buf = NULL; + closure->len = 0; + closure->off = 0; + + switch (closure->state) { + case RECV_HELLO_INITIAL: + /* Re-use event for the listener. */ + close(fd); + if (sudo_ev_set(&closure->ev, closure->listen_sock, SUDO_EV_READ|SUDO_EV_PERSIST, intercept_accept_cb, closure) == -1) { + /* This cannot (currently) fail. */ + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + if (sudo_ev_add(evbase, &closure->ev, NULL, false) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + closure->listen_sock = -1; + closure->state = RECV_CONNECTION; + break; + case POLICY_ACCEPT: + /* Re-use event to read ClientHello from sudo_intercept.so ctor. */ + if (sudo_ev_set(&closure->ev, fd, SUDO_EV_READ|SUDO_EV_PERSIST, intercept_cb, closure) == -1) { + /* This cannot (currently) fail. */ + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + if (sudo_ev_add(evbase, &closure->ev, NULL, false) == -1) { + sudo_warn("%s", U_("unable to add event to queue")); + goto done; + } + closure->state = RECV_HELLO; + break; + default: + /* Done with this connection. */ + intercept_connection_close(fd, closure); + } + + ret = true; + +done: + debug_return_bool(ret); +} + +static void +intercept_cb(int fd, int what, void *v) +{ + struct intercept_closure *closure = v; + bool success = false; + debug_decl(intercept_cb, SUDO_DEBUG_EXEC); + + switch (what) { + case SUDO_EV_READ: + success = intercept_read(fd, closure); + break; + case SUDO_EV_WRITE: + success = intercept_write(fd, closure); + break; + default: + sudo_warnx("%s: unexpected event type %d", __func__, what); + break; + } + + if (!success) + intercept_connection_close(fd, closure); + + debug_return; +} + +/* + * Accept a new connection from the client and fill in a client closure. + * Registers a new event for the connection. + */ +static void +intercept_accept_cb(int fd, int what, void *v) +{ + struct intercept_closure *closure = v; + struct sudo_event_base *evbase = sudo_ev_get_base(&closure->ev); + struct sockaddr_in sin; + socklen_t sin_len = sizeof(sin); + int client_sock, flags; + debug_decl(intercept_accept_cb, SUDO_DEBUG_EXEC); + + if (closure->state != RECV_CONNECTION) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "state mismatch, expected RECV_CONNECTION (%d), got %d", + RECV_CONNECTION, closure->state); + intercept_connection_close(fd, closure); + debug_return; + } + + client_sock = accept(fd, (struct sockaddr *)&sin, &sin_len); + if (client_sock == -1) { + sudo_warn("accept"); + goto bad; + } + flags = fcntl(client_sock, F_GETFL, 0); + if (flags != -1) + (void)fcntl(client_sock, F_SETFL, flags | O_NONBLOCK); + + if (!intercept_setup(client_sock, evbase, closure->details)) { + goto bad; + } + + debug_return; + +bad: + if (client_sock != -1) + close(client_sock); + debug_return; +} +#else /* _PATH_SUDO_INTERCEPT */ +bool +intercept_setup(int fd, struct sudo_event_base *evbase, + struct command_details *details) +{ + debug_decl(intercept_setup, SUDO_DEBUG_EXEC); + + /* Intercept support not compiled in. */ + + debug_return_bool(false); +} +#endif /* _PATH_SUDO_INTERCEPT */ diff --git a/src/exec_monitor.c b/src/exec_monitor.c index bd8eee185..3df42d401 100644 --- a/src/exec_monitor.c +++ b/src/exec_monitor.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -386,7 +386,8 @@ mon_backchannel_cb(int fd, int what, void *v) * Returns only if execve() fails. */ static void -exec_cmnd_pty(struct command_details *details, bool foreground, int errfd) +exec_cmnd_pty(struct command_details *details, bool foreground, + int intercept_fd, int errfd) { volatile pid_t self = getpid(); debug_decl(exec_cmnd_pty, SUDO_DEBUG_EXEC); @@ -429,7 +430,7 @@ exec_cmnd_pty(struct command_details *details, bool foreground, int errfd) /* Execute command; only returns on error. */ sudo_debug_printf(SUDO_DEBUG_INFO, "executing %s in the %s", details->command, foreground ? "foreground" : "background"); - exec_cmnd(details, errfd); + exec_cmnd(details, intercept_fd, errfd); debug_return; } @@ -543,7 +544,7 @@ fill_exec_closure_monitor(struct monitor_closure *mc, */ int exec_monitor(struct command_details *details, sigset_t *oset, - bool foreground, int backchannel) + bool foreground, int backchannel, int intercept_fd) { struct monitor_closure mc = { 0 }; struct command_status cstat; @@ -586,16 +587,20 @@ exec_monitor(struct command_details *details, sigset_t *oset, /* * We use a pipe to get errno if execve(2) fails in the child. */ - if (pipe2(errpipe, O_CLOEXEC) != 0) - sudo_fatal("%s", U_("unable to create pipe")); + if (pipe2(errpipe, O_CLOEXEC) != 0) { + sudo_warn("%s", U_("unable to create pipe")); + goto bad; + } /* * Before forking, wait for the main sudo process to tell us to go. * Avoids race conditions when the command exits quickly. */ while (recv(backchannel, &cstat, sizeof(cstat), MSG_WAITALL) == -1) { - if (errno != EINTR && errno != EAGAIN) - sudo_fatal("%s", U_("unable to receive message from parent")); + if (errno != EINTR && errno != EAGAIN) { + sudo_warn("%s", U_("unable to receive message from parent")); + goto bad; + } } #ifdef HAVE_SELINUX @@ -627,12 +632,14 @@ exec_monitor(struct command_details *details, sigset_t *oset, restore_signals(); /* setup tty and exec command */ - exec_cmnd_pty(details, foreground, errpipe[1]); + exec_cmnd_pty(details, foreground, intercept_fd, errpipe[1]); if (write(errpipe[1], &errno, sizeof(int)) == -1) sudo_warn(U_("unable to execute %s"), details->command); _exit(EXIT_FAILURE); } close(errpipe[1]); + if (intercept_fd != -1) + close(intercept_fd); /* No longer need execfd. */ if (details->execfd != -1) { diff --git a/src/exec_nopty.c b/src/exec_nopty.c index 728153160..0bfb2fe68 100644 --- a/src/exec_nopty.c +++ b/src/exec_nopty.c @@ -24,6 +24,13 @@ #include <config.h> #include <sys/wait.h> +#include <sys/socket.h> + +#if defined(HAVE_STDINT_H) +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -38,9 +45,6 @@ #include "sudo_plugin_int.h" struct exec_closure_nopty { - pid_t cmnd_pid; - pid_t ppgrp; - struct command_status *cstat; struct command_details *details; struct sudo_event_base *evbase; struct sudo_event *errpipe_event; @@ -56,6 +60,9 @@ struct exec_closure_nopty { struct sudo_event *sigchld_event; struct sudo_event *sigcont_event; struct sudo_event *siginfo_event; + struct command_status *cstat; + pid_t cmnd_pid; + pid_t ppgrp; }; static void handle_sigchld_nopty(struct exec_closure_nopty *ec); @@ -340,6 +347,7 @@ void exec_nopty(struct command_details *details, struct command_status *cstat) { struct exec_closure_nopty ec = { 0 }; + int intercept_sv[2] = { -1, -1 }; sigset_t set, oset; int errpipe[2]; debug_decl(exec_nopty, SUDO_DEBUG_EXEC); @@ -358,6 +366,15 @@ exec_nopty(struct command_details *details, struct command_status *cstat) sudo_fatal("%s", U_("unable to create pipe")); /* + * Allocate a socketpair for communicating with sudo_intercept.so. + * This must be inherited across exec, hence no FD_CLOEXEC. + */ + if (ISSET(details->flags, CD_INTERCEPT|CD_LOG_SUBCMDS)) { + if (socketpair(PF_UNIX, SOCK_STREAM, 0, intercept_sv) == -1) + sudo_fatal("%s", U_("unable to create sockets")); + } + + /* * Block signals until we have our handlers setup in the parent so * we don't miss SIGCHLD if the command exits immediately. */ @@ -390,7 +407,9 @@ exec_nopty(struct command_details *details, struct command_status *cstat) /* child */ sigprocmask(SIG_SETMASK, &oset, NULL); close(errpipe[0]); - exec_cmnd(details, errpipe[1]); + if (intercept_sv[0] != -1) + close(intercept_sv[0]); + exec_cmnd(details, intercept_sv[1], errpipe[1]); while (write(errpipe[1], &errno, sizeof(int)) == -1) { if (errno != EINTR) break; @@ -401,6 +420,8 @@ exec_nopty(struct command_details *details, struct command_status *cstat) sudo_debug_printf(SUDO_DEBUG_INFO, "executed %s, pid %d", details->command, (int)ec.cmnd_pid); close(errpipe[1]); + if (intercept_sv[1] != -1) + close(intercept_sv[1]); /* No longer need execfd. */ if (details->execfd != -1) { @@ -418,6 +439,12 @@ exec_nopty(struct command_details *details, struct command_status *cstat) */ fill_exec_closure_nopty(&ec, cstat, details, errpipe[0]); + /* Create event and closure for intercept mode. */ + if (intercept_sv[0] != -1) { + if (!intercept_setup(intercept_sv[0], ec.evbase, details)) + exit(EXIT_FAILURE); + } + /* Restore signal mask now that signal handlers are setup. */ sigprocmask(SIG_SETMASK, &oset, NULL); diff --git a/src/exec_preload.c b/src/exec_preload.c new file mode 100644 index 000000000..3bc7a15d3 --- /dev/null +++ b/src/exec_preload.c @@ -0,0 +1,212 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This is an open source non-commercial project. Dear PVS-Studio, please check it. + * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + */ + +#include <config.h> + +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "sudo.h" +#include "sudo_exec.h" + +#ifdef RTLD_PRELOAD_VAR +/* + * Add a DSO file to LD_PRELOAD or the system equivalent. + */ +char ** +sudo_preload_dso(char *envp[], const char *dso_file, int intercept_fd) +{ + char *preload = NULL; + char **nenvp = NULL; + int env_len, len; + int preload_idx = -1; + int intercept_idx = -1; + bool fd_present = false; + bool dso_present = false; +# ifdef RTLD_PRELOAD_ENABLE_VAR + bool dso_enabled = false; +# else + const bool dso_enabled = true; +# endif +# ifdef _PATH_ASAN_LIB + char *dso_buf = NULL; +# endif + debug_decl(sudo_preload_dso, SUDO_DEBUG_UTIL); + +# ifdef _PATH_ASAN_LIB + /* + * The address sanitizer DSO needs to be first in the list. + */ + len = asprintf(&dso_buf, "%s%c%s", _PATH_ASAN_LIB, RTLD_PRELOAD_DELIM, + dso_file); + if (len == -1) + goto oom; + dso_file = dso_buf; +# endif + + /* + * Preload a DSO file. For a list of LD_PRELOAD-alikes, see + * http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html + * XXX - need to support 32-bit and 64-bit variants + */ + + /* Count entries in envp, looking for LD_PRELOAD as we go. */ + for (env_len = 0; envp[env_len] != NULL; env_len++) { + if (strncmp(envp[env_len], RTLD_PRELOAD_VAR "=", sizeof(RTLD_PRELOAD_VAR)) == 0) { + if (preload_idx == -1) { + const char *cp = envp[env_len] + sizeof(RTLD_PRELOAD_VAR); + const size_t dso_len = strlen(dso_file); + + /* + * Check to see if dso_file is already first in the list. + * We don't bother checking for it later in the list. + */ + if (strncmp(cp, dso_file, dso_len) == 0) { + if (cp[dso_len] == '\0' || cp[dso_len] == RTLD_PRELOAD_DELIM) + dso_present = true; + } + + /* Save index of existing LD_PRELOAD variable. */ + preload_idx = env_len; + } else { + /* Remove duplicate LD_PRELOAD. */ + int i; + for (i = env_len; envp[i] != NULL; i++) { + envp[i] = envp[i + 1]; + } + } + continue; + } + if (intercept_fd != -1 && strncmp(envp[env_len], "SUDO_INTERCEPT_FD=", + sizeof("SUDO_INTERCEPT_FD=") - 1) == 0) { + if (intercept_idx == -1) { + const char *cp = envp[env_len] + sizeof("SUDO_INTERCEPT_FD=") - 1; + const char *errstr; + int fd; + + fd = sudo_strtonum(cp, 0, INT_MAX, &errstr); + if (fd == intercept_fd && errstr == NULL) + fd_present = true; + + /* Save index of existing SUDO_INTERCEPT_FD variable. */ + intercept_idx = env_len; + } else { + /* Remove duplicate SUDO_INTERCEPT_FD. */ + int i; + for (i = env_len; envp[i] != NULL; i++) { + envp[i] = envp[i + 1]; + } + } + continue; + } +# ifdef RTLD_PRELOAD_ENABLE_VAR + if (strncmp(envp[env_len], RTLD_PRELOAD_ENABLE_VAR "=", sizeof(RTLD_PRELOAD_ENABLE_VAR)) == 0) { + dso_enabled = true; + continue; + } +# endif + } + + /* + * Make a new copy of envp as needed. + * It would be nice to realloc the old envp[] but we don't know + * whether it was dynamically allocated. [TODO: plugin API] + */ + if (preload_idx == -1 || !dso_enabled || intercept_idx == -1) { + const int env_size = env_len + 1 + (preload_idx == -1) + dso_enabled + (intercept_idx == -1); // -V547 + + nenvp = reallocarray(NULL, env_size, sizeof(*nenvp)); + if (nenvp == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_ptr(NULL); + } + memcpy(nenvp, envp, env_len * sizeof(*envp)); + nenvp[env_len] = NULL; + envp = nenvp; + } + + /* Prepend our LD_PRELOAD to existing value or add new entry at the end. */ + if (!dso_present) { + if (preload_idx == -1) { +# ifdef RTLD_PRELOAD_DEFAULT + len = asprintf(&preload, "%s=%s%c%s", RTLD_PRELOAD_VAR, dso_file, + RTLD_PRELOAD_DELIM, RTLD_PRELOAD_DEFAULT); + if (len == -1) { + goto oom; + } +# else + preload = sudo_new_key_val(RTLD_PRELOAD_VAR, dso_file); + if (preload == NULL) { + goto oom; + } +# endif + envp[env_len++] = preload; + envp[env_len] = NULL; + } else { + const char *old_val = envp[preload_idx] + sizeof(RTLD_PRELOAD_VAR); + len = asprintf(&preload, "%s=%s%c%s", RTLD_PRELOAD_VAR, + dso_file, RTLD_PRELOAD_DELIM, old_val); + if (len == -1) { + goto oom; + } + envp[preload_idx] = preload; + } + } +# ifdef RTLD_PRELOAD_ENABLE_VAR + if (!dso_enabled) { + envp[env_len++] = RTLD_PRELOAD_ENABLE_VAR "="; + envp[env_len] = NULL; + } +# endif + if (!fd_present && intercept_fd != -1) { + char *fdstr; + + len = asprintf(&fdstr, "SUDO_INTERCEPT_FD=%d", intercept_fd); + if (len == -1) { + goto oom; + } + if (intercept_idx != -1) { + envp[intercept_idx] = fdstr; + } else { + envp[env_len++] = fdstr; + envp[env_len] = NULL; + } + } +# ifdef _PATH_ASAN_LIB + free(dso_buf); +# endif + + debug_return_ptr(envp); +oom: + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); +# ifdef _PATH_ASAN_LIB + free(dso_buf); +# endif + free(preload); + free(nenvp); + debug_return_ptr(NULL); +} +#endif /* RTLD_PRELOAD_VAR */ diff --git a/src/exec_pty.c b/src/exec_pty.c index 12fbb54ca..e864d3672 100644 --- a/src/exec_pty.c +++ b/src/exec_pty.c @@ -28,6 +28,12 @@ #include <sys/socket.h> #include <sys/wait.h> #include <sys/ioctl.h> + +#if defined(HAVE_STDINT_H) +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -56,12 +62,6 @@ struct monitor_message { TAILQ_HEAD(monitor_message_list, monitor_message); struct exec_closure_pty { - pid_t monitor_pid; - pid_t cmnd_pid; - pid_t ppgrp; - short rows; - short cols; - struct command_status *cstat; struct command_details *details; struct sudo_event_base *evbase; struct sudo_event *backchannel_event; @@ -76,7 +76,13 @@ struct exec_closure_pty { struct sudo_event *sigusr2_event; struct sudo_event *sigchld_event; struct sudo_event *sigwinch_event; + struct command_status *cstat; struct monitor_message_list monitor_messages; + pid_t monitor_pid; + pid_t cmnd_pid; + pid_t ppgrp; + short rows; + short cols; }; /* @@ -1352,6 +1358,7 @@ exec_pty(struct command_details *details, struct command_status *cstat) { int io_pipe[3][2] = { { -1, -1 }, { -1, -1 }, { -1, -1 } }; bool interpose[3] = { false, false, false }; + int sv[2], intercept_sv[2] = { -1, -1 }; struct exec_closure_pty ec = { 0 }; struct plugin_container *plugin; int evloop_retries = -1; @@ -1359,7 +1366,6 @@ exec_pty(struct command_details *details, struct command_status *cstat) struct sigaction sa; struct stat sb; pid_t ppgrp; - int sv[2]; debug_decl(exec_pty, SUDO_DEBUG_EXEC); /* @@ -1382,6 +1388,15 @@ exec_pty(struct command_details *details, struct command_status *cstat) sudo_fatal("%s", U_("unable to create sockets")); /* + * Allocate a socketpair for communicating with sudo_intercept.so. + * This must be inherited across exec, hence no FD_CLOEXEC. + */ + if (ISSET(details->flags, CD_INTERCEPT|CD_LOG_SUBCMDS)) { + if (socketpair(PF_UNIX, SOCK_STREAM, 0, intercept_sv) == -1) + sudo_fatal("%s", U_("unable to create sockets")); + } + + /* * We don't want to receive SIGTTIN/SIGTTOU. * XXX - this affects tcsetattr() and tcsetpgrp() too. */ @@ -1553,6 +1568,8 @@ exec_pty(struct command_details *details, struct command_status *cstat) case 0: /* child */ close(sv[0]); + if (intercept_sv[0] != -1) + close(intercept_sv[0]); /* Close the other end of the stdin/stdout/stderr pipes and exec. */ if (io_pipe[STDIN_FILENO][1] != -1) close(io_pipe[STDIN_FILENO][1]); @@ -1566,7 +1583,8 @@ exec_pty(struct command_details *details, struct command_status *cstat) * In this case, we rely on the command receiving SIGTTOU or SIGTTIN * when it needs access to the controlling tty. */ - exec_monitor(details, &oset, foreground && !pipeline, sv[1]); + exec_monitor(details, &oset, foreground && !pipeline, sv[1], + intercept_sv[1]); cstat->type = CMD_ERRNO; cstat->val = errno; if (send(sv[1], cstat, sizeof(*cstat), 0) == -1) { @@ -1619,6 +1637,12 @@ exec_pty(struct command_details *details, struct command_status *cstat) */ fill_exec_closure_pty(&ec, cstat, details, ppgrp, sv[0]); + /* Create event and closure for intercept mode. */ + if (intercept_sv[0] != -1) { + if (!intercept_setup(intercept_sv[0], ec.evbase, details)) + exit(EXIT_FAILURE); + } + /* Restore signal mask now that signal handlers are setup. */ sigprocmask(SIG_SETMASK, &oset, NULL); diff --git a/src/intercept.exp.in b/src/intercept.exp.in new file mode 100644 index 000000000..c0e33f9ed --- /dev/null +++ b/src/intercept.exp.in @@ -0,0 +1,6 @@ +@INTERCEPT_EXP@execl +execle +execlp +execv +execve +execvp diff --git a/src/intercept.pb-c.c b/src/intercept.pb-c.c new file mode 100644 index 000000000..6f48bb2b4 --- /dev/null +++ b/src/intercept.pb-c.c @@ -0,0 +1,829 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: intercept.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "intercept.pb-c.h" +void intercept_request__init + (InterceptRequest *message) +{ + static const InterceptRequest init_value = INTERCEPT_REQUEST__INIT; + *message = init_value; +} +size_t intercept_request__get_packed_size + (const InterceptRequest *message) +{ + assert(message->base.descriptor == &intercept_request__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t intercept_request__pack + (const InterceptRequest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &intercept_request__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t intercept_request__pack_to_buffer + (const InterceptRequest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &intercept_request__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +InterceptRequest * + intercept_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (InterceptRequest *) + protobuf_c_message_unpack (&intercept_request__descriptor, + allocator, len, data); +} +void intercept_request__free_unpacked + (InterceptRequest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &intercept_request__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void client_hello__init + (ClientHello *message) +{ + static const ClientHello init_value = CLIENT_HELLO__INIT; + *message = init_value; +} +size_t client_hello__get_packed_size + (const ClientHello *message) +{ + assert(message->base.descriptor == &client_hello__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t client_hello__pack + (const ClientHello *message, + uint8_t *out) +{ + assert(message->base.descriptor == &client_hello__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t client_hello__pack_to_buffer + (const ClientHello *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &client_hello__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +ClientHello * + client_hello__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (ClientHello *) + protobuf_c_message_unpack (&client_hello__descriptor, + allocator, len, data); +} +void client_hello__free_unpacked + (ClientHello *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &client_hello__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void hello_response__init + (HelloResponse *message) +{ + static const HelloResponse init_value = HELLO_RESPONSE__INIT; + *message = init_value; +} +size_t hello_response__get_packed_size + (const HelloResponse *message) +{ + assert(message->base.descriptor == &hello_response__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t hello_response__pack + (const HelloResponse *message, + uint8_t *out) +{ + assert(message->base.descriptor == &hello_response__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t hello_response__pack_to_buffer + (const HelloResponse *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &hello_response__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +HelloResponse * + hello_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (HelloResponse *) + protobuf_c_message_unpack (&hello_response__descriptor, + allocator, len, data); +} +void hello_response__free_unpacked + (HelloResponse *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &hello_response__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void policy_check_request__init + (PolicyCheckRequest *message) +{ + static const PolicyCheckRequest init_value = POLICY_CHECK_REQUEST__INIT; + *message = init_value; +} +size_t policy_check_request__get_packed_size + (const PolicyCheckRequest *message) +{ + assert(message->base.descriptor == &policy_check_request__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t policy_check_request__pack + (const PolicyCheckRequest *message, + uint8_t *out) +{ + assert(message->base.descriptor == &policy_check_request__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t policy_check_request__pack_to_buffer + (const PolicyCheckRequest *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &policy_check_request__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PolicyCheckRequest * + policy_check_request__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PolicyCheckRequest *) + protobuf_c_message_unpack (&policy_check_request__descriptor, + allocator, len, data); +} +void policy_check_request__free_unpacked + (PolicyCheckRequest *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &policy_check_request__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void policy_accept_message__init + (PolicyAcceptMessage *message) +{ + static const PolicyAcceptMessage init_value = POLICY_ACCEPT_MESSAGE__INIT; + *message = init_value; +} +size_t policy_accept_message__get_packed_size + (const PolicyAcceptMessage *message) +{ + assert(message->base.descriptor == &policy_accept_message__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t policy_accept_message__pack + (const PolicyAcceptMessage *message, + uint8_t *out) +{ + assert(message->base.descriptor == &policy_accept_message__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t policy_accept_message__pack_to_buffer + (const PolicyAcceptMessage *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &policy_accept_message__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PolicyAcceptMessage * + policy_accept_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PolicyAcceptMessage *) + protobuf_c_message_unpack (&policy_accept_message__descriptor, + allocator, len, data); +} +void policy_accept_message__free_unpacked + (PolicyAcceptMessage *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &policy_accept_message__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void policy_reject_message__init + (PolicyRejectMessage *message) +{ + static const PolicyRejectMessage init_value = POLICY_REJECT_MESSAGE__INIT; + *message = init_value; +} +size_t policy_reject_message__get_packed_size + (const PolicyRejectMessage *message) +{ + assert(message->base.descriptor == &policy_reject_message__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t policy_reject_message__pack + (const PolicyRejectMessage *message, + uint8_t *out) +{ + assert(message->base.descriptor == &policy_reject_message__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t policy_reject_message__pack_to_buffer + (const PolicyRejectMessage *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &policy_reject_message__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PolicyRejectMessage * + policy_reject_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PolicyRejectMessage *) + protobuf_c_message_unpack (&policy_reject_message__descriptor, + allocator, len, data); +} +void policy_reject_message__free_unpacked + (PolicyRejectMessage *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &policy_reject_message__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void policy_error_message__init + (PolicyErrorMessage *message) +{ + static const PolicyErrorMessage init_value = POLICY_ERROR_MESSAGE__INIT; + *message = init_value; +} +size_t policy_error_message__get_packed_size + (const PolicyErrorMessage *message) +{ + assert(message->base.descriptor == &policy_error_message__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t policy_error_message__pack + (const PolicyErrorMessage *message, + uint8_t *out) +{ + assert(message->base.descriptor == &policy_error_message__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t policy_error_message__pack_to_buffer + (const PolicyErrorMessage *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &policy_error_message__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PolicyErrorMessage * + policy_error_message__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PolicyErrorMessage *) + protobuf_c_message_unpack (&policy_error_message__descriptor, + allocator, len, data); +} +void policy_error_message__free_unpacked + (PolicyErrorMessage *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &policy_error_message__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void intercept_response__init + (InterceptResponse *message) +{ + static const InterceptResponse init_value = INTERCEPT_RESPONSE__INIT; + *message = init_value; +} +size_t intercept_response__get_packed_size + (const InterceptResponse *message) +{ + assert(message->base.descriptor == &intercept_response__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t intercept_response__pack + (const InterceptResponse *message, + uint8_t *out) +{ + assert(message->base.descriptor == &intercept_response__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t intercept_response__pack_to_buffer + (const InterceptResponse *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &intercept_response__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +InterceptResponse * + intercept_response__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (InterceptResponse *) + protobuf_c_message_unpack (&intercept_response__descriptor, + allocator, len, data); +} +void intercept_response__free_unpacked + (InterceptResponse *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &intercept_response__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor intercept_request__field_descriptors[2] = +{ + { + "policy_check_req", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptRequest, type_case), + offsetof(InterceptRequest, u.policy_check_req), + &policy_check_request__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "hello", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptRequest, type_case), + offsetof(InterceptRequest, u.hello), + &client_hello__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned intercept_request__field_indices_by_name[] = { + 1, /* field[1] = hello */ + 0, /* field[0] = policy_check_req */ +}; +static const ProtobufCIntRange intercept_request__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor intercept_request__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "InterceptRequest", + "InterceptRequest", + "InterceptRequest", + "", + sizeof(InterceptRequest), + 2, + intercept_request__field_descriptors, + intercept_request__field_indices_by_name, + 1, intercept_request__number_ranges, + (ProtobufCMessageInit) intercept_request__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor client_hello__field_descriptors[1] = +{ + { + "pid", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(ClientHello, pid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned client_hello__field_indices_by_name[] = { + 0, /* field[0] = pid */ +}; +static const ProtobufCIntRange client_hello__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor client_hello__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ClientHello", + "ClientHello", + "ClientHello", + "", + sizeof(ClientHello), + 1, + client_hello__field_descriptors, + client_hello__field_indices_by_name, + 1, client_hello__number_ranges, + (ProtobufCMessageInit) client_hello__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor hello_response__field_descriptors[3] = +{ + { + "token_lo", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_FIXED64, + 0, /* quantifier_offset */ + offsetof(HelloResponse, token_lo), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "token_hi", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_FIXED64, + 0, /* quantifier_offset */ + offsetof(HelloResponse, token_hi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "portno", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(HelloResponse, portno), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned hello_response__field_indices_by_name[] = { + 2, /* field[2] = portno */ + 1, /* field[1] = token_hi */ + 0, /* field[0] = token_lo */ +}; +static const ProtobufCIntRange hello_response__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor hello_response__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "HelloResponse", + "HelloResponse", + "HelloResponse", + "", + sizeof(HelloResponse), + 3, + hello_response__field_descriptors, + hello_response__field_indices_by_name, + 1, hello_response__number_ranges, + (ProtobufCMessageInit) hello_response__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor policy_check_request__field_descriptors[5] = +{ + { + "command", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PolicyCheckRequest, command), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cwd", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PolicyCheckRequest, cwd), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "argv", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(PolicyCheckRequest, n_argv), + offsetof(PolicyCheckRequest, argv), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "envp", + 4, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(PolicyCheckRequest, n_envp), + offsetof(PolicyCheckRequest, envp), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "intercept_fd", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PolicyCheckRequest, intercept_fd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned policy_check_request__field_indices_by_name[] = { + 2, /* field[2] = argv */ + 0, /* field[0] = command */ + 1, /* field[1] = cwd */ + 3, /* field[3] = envp */ + 4, /* field[4] = intercept_fd */ +}; +static const ProtobufCIntRange policy_check_request__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor policy_check_request__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PolicyCheckRequest", + "PolicyCheckRequest", + "PolicyCheckRequest", + "", + sizeof(PolicyCheckRequest), + 5, + policy_check_request__field_descriptors, + policy_check_request__field_indices_by_name, + 1, policy_check_request__number_ranges, + (ProtobufCMessageInit) policy_check_request__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor policy_accept_message__field_descriptors[3] = +{ + { + "run_command", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PolicyAcceptMessage, run_command), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "run_argv", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(PolicyAcceptMessage, n_run_argv), + offsetof(PolicyAcceptMessage, run_argv), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "run_envp", + 3, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_STRING, + offsetof(PolicyAcceptMessage, n_run_envp), + offsetof(PolicyAcceptMessage, run_envp), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned policy_accept_message__field_indices_by_name[] = { + 1, /* field[1] = run_argv */ + 0, /* field[0] = run_command */ + 2, /* field[2] = run_envp */ +}; +static const ProtobufCIntRange policy_accept_message__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor policy_accept_message__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PolicyAcceptMessage", + "PolicyAcceptMessage", + "PolicyAcceptMessage", + "", + sizeof(PolicyAcceptMessage), + 3, + policy_accept_message__field_descriptors, + policy_accept_message__field_indices_by_name, + 1, policy_accept_message__number_ranges, + (ProtobufCMessageInit) policy_accept_message__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor policy_reject_message__field_descriptors[1] = +{ + { + "reject_message", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PolicyRejectMessage, reject_message), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned policy_reject_message__field_indices_by_name[] = { + 0, /* field[0] = reject_message */ +}; +static const ProtobufCIntRange policy_reject_message__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor policy_reject_message__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PolicyRejectMessage", + "PolicyRejectMessage", + "PolicyRejectMessage", + "", + sizeof(PolicyRejectMessage), + 1, + policy_reject_message__field_descriptors, + policy_reject_message__field_indices_by_name, + 1, policy_reject_message__number_ranges, + (ProtobufCMessageInit) policy_reject_message__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor policy_error_message__field_descriptors[1] = +{ + { + "error_message", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_STRING, + 0, /* quantifier_offset */ + offsetof(PolicyErrorMessage, error_message), + NULL, + &protobuf_c_empty_string, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned policy_error_message__field_indices_by_name[] = { + 0, /* field[0] = error_message */ +}; +static const ProtobufCIntRange policy_error_message__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor policy_error_message__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PolicyErrorMessage", + "PolicyErrorMessage", + "PolicyErrorMessage", + "", + sizeof(PolicyErrorMessage), + 1, + policy_error_message__field_descriptors, + policy_error_message__field_indices_by_name, + 1, policy_error_message__number_ranges, + (ProtobufCMessageInit) policy_error_message__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor intercept_response__field_descriptors[4] = +{ + { + "hello_resp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptResponse, type_case), + offsetof(InterceptResponse, u.hello_resp), + &hello_response__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "accept_msg", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptResponse, type_case), + offsetof(InterceptResponse, u.accept_msg), + &policy_accept_message__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "reject_msg", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptResponse, type_case), + offsetof(InterceptResponse, u.reject_msg), + &policy_reject_message__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "error_msg", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(InterceptResponse, type_case), + offsetof(InterceptResponse, u.error_msg), + &policy_error_message__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned intercept_response__field_indices_by_name[] = { + 1, /* field[1] = accept_msg */ + 3, /* field[3] = error_msg */ + 0, /* field[0] = hello_resp */ + 2, /* field[2] = reject_msg */ +}; +static const ProtobufCIntRange intercept_response__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor intercept_response__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "InterceptResponse", + "InterceptResponse", + "InterceptResponse", + "", + sizeof(InterceptResponse), + 4, + intercept_response__field_descriptors, + intercept_response__field_indices_by_name, + 1, intercept_response__number_ranges, + (ProtobufCMessageInit) intercept_response__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/src/intercept.proto b/src/intercept.proto new file mode 100644 index 000000000..80473ddd6 --- /dev/null +++ b/src/intercept.proto @@ -0,0 +1,69 @@ +syntax = "proto3"; + +/* + * Intercept message from sudo_intercept.so. Messages on the + * wire are prefixed with a 32-bit size in network byte order. + */ +message InterceptRequest { + oneof type { + PolicyCheckRequest policy_check_req = 1; + ClientHello hello = 2; + } +} + +/* + * Hello message from sudo_intercept.so to main sudo process. + * Sudo sends back the token and localhost port number. + */ +message ClientHello { + int32 pid = 1; +} + +/* + * Sudo response to a ClientHello from sudo_intercept.so. + * The client uses the port number and token to connect back to sudo. + */ +message HelloResponse { + fixed64 token_lo = 1; + fixed64 token_hi = 2; + int32 portno = 3; +} + +/* + * Policy check request from sudo_intercept.so. + * Note that the plugin API only currently supports passing + * the new environment in to the open() function. + */ +message PolicyCheckRequest { + string command = 1; + string cwd = 2; + repeated string argv = 3; + repeated string envp = 4; + int32 intercept_fd = 5; +} + +message PolicyAcceptMessage { + string run_command = 1; + repeated string run_argv = 2; + repeated string run_envp = 3; +} + +message PolicyRejectMessage { + string reject_message = 1; +} + +message PolicyErrorMessage { + string error_message = 1; +} + +/* + * Response sent back to sudo_intercept.so. + */ +message InterceptResponse { + oneof type { + HelloResponse hello_resp = 1; + PolicyAcceptMessage accept_msg = 2; + PolicyRejectMessage reject_msg = 3; + PolicyErrorMessage error_msg = 4; + } +} diff --git a/src/regress/net_ifs/check_net_ifs.c b/src/regress/net_ifs/check_net_ifs.c index fbeb35819..b21acde5e 100644 --- a/src/regress/net_ifs/check_net_ifs.c +++ b/src/regress/net_ifs/check_net_ifs.c @@ -38,8 +38,9 @@ extern int get_net_ifs(char **addrinfo); int main(int argc, char *argv[]) { - char *interfaces; + char *interfaces = NULL; int ninterfaces; + int ret = 0; initprogname(argc > 0 ? argv[0] : "check_net_ifs"); @@ -47,7 +48,8 @@ main(int argc, char *argv[]) switch (ninterfaces) { case -1: sudo_warn_nodebug("unable to get network interfaces"); - return 1; + ret = 1; + break; case 0: /* no interfaces or STUB_LOAD_INTERFACES defined. */ sudo_warnx_nodebug("OK: (0 interfaces)"); @@ -58,5 +60,7 @@ main(int argc, char *argv[]) break; } - return 0; + free(interfaces); + + return ret; } diff --git a/src/selinux.c b/src/selinux.c index c2f50aafb..cab665a24 100644 --- a/src/selinux.c +++ b/src/selinux.c @@ -502,7 +502,7 @@ selinux_execve(int fd, const char *path, char *const argv[], char *envp[], memcpy(&nargv[nargc], &argv[1], argc * sizeof(char *)); /* copies NULL */ /* sesh will handle noexec for us. */ - sudo_execve(-1, sesh, nargv, envp, false); + sudo_execve(-1, sesh, nargv, envp, -1, 0); serrno = errno; free(nargv); errno = serrno; diff --git a/src/sesh.c b/src/sesh.c index 69756196a..f05762ffb 100644 --- a/src/sesh.c +++ b/src/sesh.c @@ -75,21 +75,24 @@ main(int argc, char *argv[], char *envp[]) if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) exit(EXIT_FAILURE); sudo_debug_register(getprogname(), NULL, NULL, - sudo_conf_debug_files(getprogname())); + sudo_conf_debug_files(getprogname()), -1); if (strcmp(argv[1], "-e") == 0) { ret = sesh_sudoedit(argc, argv); } else { - bool login_shell, noexec = false; + bool login_shell; char *cp, *cmnd; + int flags = 0; int fd = -1; /* If the first char of argv[0] is '-', we are running a login shell. */ login_shell = argv[0][0] == '-'; /* If argv[0] ends in -noexec, pass the flag to sudo_execve() */ - if ((cp = strrchr(argv[0], '-')) != NULL && cp != argv[0]) - noexec = strcmp(cp, "-noexec") == 0; + if ((cp = strrchr(argv[0], '-')) != NULL && cp != argv[0]) { + if (strcmp(cp, "-noexec") == 0) + SET(flags, CD_NOEXEC); + } /* If argv[1] is --execfd=%d, extract the fd to exec with. */ if (strncmp(argv[1], "--execfd=", 9) == 0) { @@ -116,7 +119,7 @@ main(int argc, char *argv[], char *envp[]) *cp = '-'; argv[0] = cp; } - sudo_execve(fd, cmnd, argv, envp, noexec); + sudo_execve(fd, cmnd, argv, envp, -1, flags); sudo_warn(U_("unable to execute %s"), cmnd); ret = SESH_ERR_FAILURE; } diff --git a/src/sudo.c b/src/sudo.c index 9a1fe0c21..92fe3f3eb 100644 --- a/src/sudo.c +++ b/src/sudo.c @@ -104,57 +104,46 @@ static void command_info_to_details(char * const info[], static void gc_init(void); /* Policy plugin convenience functions. */ -static void policy_open(struct sudo_settings *settings, - char * const user_info[], char * const user_env[]); +static void policy_open(void); static void policy_close(int exit_status, int error); static int policy_show_version(int verbose); -static void policy_check(int argc, char * const argv[], char *env_add[], - char **command_info[], char **argv_out[], char **user_env_out[]); +static bool policy_check(int argc, char * const argv[], char *env_add[], + char **command_info[], char **run_argv[], char **run_envp[]); static void policy_list(int argc, char * const argv[], - int verbose, const char *user, char * const envp[]); -static void policy_validate(char * const argv[], char * const envp[]); + int verbose, const char *user); +static void policy_validate(char * const argv[]); static void policy_invalidate(int unlinkit); /* I/O log plugin convenience functions. */ -static void iolog_open(struct sudo_settings *settings, char * const user_info[], - char * const command_details[], int argc, char * const argv[], - char * const user_env[]); +static bool iolog_open(char * const command_info[], int run_argc, + char * const run_argv[], char * const run_envp[]); static void iolog_close(int exit_status, int error); -static void iolog_show_version(int verbose, struct sudo_settings *settings, - char * const user_info[], int argc, char * const argv[], - char * const user_env[]); +static void iolog_show_version(int verbose, int argc, char * const argv[], + char * const envp[]); static void unlink_plugin(struct plugin_container_list *plugin_list, struct plugin_container *plugin); static void free_plugin_container(struct plugin_container *plugin, bool ioplugin); -/* Audit plugin convenience functions. */ -static void audit_open(struct sudo_settings *settings, char * const user_info[], - int submit_optind, char * const submit_argv[], char * const submit_envp[]); +/* Audit plugin convenience functions (some are public). */ +static void audit_open(void); static void audit_close(int exit_status, int error); static void audit_show_version(int verbose); -static void audit_accept(const char *plugin_name, - unsigned int plugin_type, char * const command_info[], - char * const run_argv[], char * const run_envp[]); -/* Approval plugin convenience functions. */ -static void approval_check(struct sudo_settings *settings, - char * const user_info[], int submit_optind, char * const submit_argv[], - char * const submit_envp[], char * const command_info[], - char * const run_argv[], char * const run_envp[]); -static void approval_show_version(int verbose, struct sudo_settings *settings, - char * const user_info[], int submit_optind, char * const submit_argv[], - char * const submit_envp[]); +/* Approval plugin convenience functions (some are public). */ +static void approval_show_version(int verbose); sudo_dso_public int main(int argc, char *argv[], char *envp[]); +static struct sudo_settings *sudo_settings; +static char * const *user_info, * const *submit_argv, * const *submit_envp; +static int submit_optind; + int main(int argc, char *argv[], char *envp[]) { int nargc, status = 0; - char **nargv, **env_add, **user_info; - char **command_info = NULL, **argv_out = NULL, **user_env_out = NULL; + char **nargv, **env_add; + char **command_info = NULL, **argv_out = NULL, **run_envp = NULL; const char * const allowed_prognames[] = { "sudo", "sudoedit", NULL }; - struct sudo_settings *settings; - int submit_optind; sigset_t mask; debug_decl_vars(main, SUDO_DEBUG_MAIN); @@ -186,7 +175,7 @@ main(int argc, char *argv[], char *envp[]) if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) exit(EXIT_FAILURE); sudo_debug_instance = sudo_debug_register(getprogname(), - NULL, NULL, sudo_conf_debug_files(getprogname())); + NULL, NULL, sudo_conf_debug_files(getprogname()), -1); if (sudo_debug_instance == SUDO_DEBUG_INSTANCE_ERROR) exit(EXIT_FAILURE); @@ -212,9 +201,11 @@ main(int argc, char *argv[], char *envp[]) if (sudo_conf_disable_coredump()) disable_coredump(); - /* Parse command line arguments. */ + /* Parse command line arguments, preserving the original argv/envp. */ + submit_argv = argv; + submit_envp = envp; sudo_mode = parse_args(argc, argv, &submit_optind, &nargc, &nargv, - &settings, &env_add); + &sudo_settings, &env_add); sudo_debug_printf(SUDO_DEBUG_DEBUG, "sudo_mode %d", sudo_mode); /* Print sudo version early, in case of plugin init failure. */ @@ -237,21 +228,20 @@ main(int argc, char *argv[], char *envp[]) /* Open policy and audit plugins. */ /* XXX - audit policy_open errors */ - audit_open(settings, user_info, submit_optind, argv, envp); - policy_open(settings, user_info, envp); + audit_open(); + policy_open(); switch (sudo_mode & MODE_MASK) { case MODE_VERSION: policy_show_version(!user_details.cred.uid); - iolog_show_version(!user_details.cred.uid, settings, user_info, - nargc, nargv, envp); - approval_show_version(!user_details.cred.uid, settings, user_info, - submit_optind, argv, envp); + iolog_show_version(!user_details.cred.uid, nargc, nargv, + submit_envp); + approval_show_version(!user_details.cred.uid); audit_show_version(!user_details.cred.uid); break; case MODE_VALIDATE: case MODE_VALIDATE|MODE_INVALIDATE: - policy_validate(nargv, envp); + policy_validate(nargv); break; case MODE_KILL: case MODE_INVALIDATE: @@ -262,12 +252,13 @@ main(int argc, char *argv[], char *envp[]) case MODE_LIST: case MODE_LIST|MODE_INVALIDATE: policy_list(nargc, nargv, ISSET(sudo_mode, MODE_LONG_LIST), - list_user, envp); + list_user); break; case MODE_EDIT: case MODE_RUN: - policy_check(nargc, nargv, env_add, &command_info, &argv_out, - &user_env_out); + if (!policy_check(nargc, nargv, env_add, &command_info, &argv_out, + &run_envp)) + goto access_denied; /* Reset nargv/nargc based on argv_out. */ /* XXX - leaks old nargv in shell mode */ @@ -278,22 +269,23 @@ main(int argc, char *argv[], char *envp[]) U_("plugin did not return a command to execute")); /* Approval plugins run after policy plugin accepts the command. */ - approval_check(settings, user_info, submit_optind, argv, envp, - command_info, nargv, user_env_out); + if (!approval_check(command_info, nargv, run_envp)) + goto access_denied; /* Open I/O plugin once policy and approval plugins succeed. */ - iolog_open(settings, user_info, command_info, nargc, nargv, - user_env_out); + if (!iolog_open(command_info, nargc, nargv, run_envp)) + goto access_denied; /* Audit the accept event on behalf of the sudo front-end. */ - audit_accept("sudo", SUDO_FRONT_END, command_info, - nargv, user_env_out); + if (!audit_accept("sudo", SUDO_FRONT_END, command_info, + nargv, run_envp)) + goto access_denied; /* Setup command details and run command/edit. */ command_info_to_details(command_info, &command_details); command_details.tty = user_details.tty; command_details.argv = argv_out; - command_details.envp = user_env_out; + command_details.envp = run_envp; command_details.evbase = sudo_event_base; if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) SET(command_details.flags, CD_LOGIN_SHELL); @@ -332,6 +324,15 @@ main(int argc, char *argv[], char *envp[]) sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, WEXITSTATUS(status)); exit(WEXITSTATUS(status)); + +access_denied: + /* Policy/approval failure, close policy and audit plugins before exit. */ + if (policy_plugin.u.policy->version >= SUDO_API_MKVERSION(1, 15)) + policy_close(0, EACCES); + audit_close(SUDO_PLUGIN_NO_STATUS, 0); + sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, + EXIT_FAILURE); + exit(EXIT_FAILURE); } int @@ -493,8 +494,8 @@ done: static char ** get_user_info(struct user_details *ud) { - char *cp, **user_info, path[PATH_MAX]; - size_t user_info_max = 32 + RLIM_NLIMITS; + char *cp, **info, path[PATH_MAX]; + size_t info_max = 32 + RLIM_NLIMITS; unsigned int i = 0; mode_t mask; struct passwd *pw; @@ -517,8 +518,8 @@ get_user_info(struct user_details *ud) memset(ud, 0, sizeof(*ud)); /* XXX - bound check number of entries */ - user_info = reallocarray(NULL, user_info_max, sizeof(char *)); - if (user_info == NULL) + info = reallocarray(NULL, info_max, sizeof(char *)); + if (info == NULL) goto oom; ud->pid = getpid(); @@ -548,10 +549,10 @@ get_user_info(struct user_details *ud) if (pw == NULL) sudo_fatalx(U_("you do not exist in the %s database"), "passwd"); - user_info[i] = sudo_new_key_val("user", pw->pw_name); - if (user_info[i] == NULL) + info[i] = sudo_new_key_val("user", pw->pw_name); + if (info[i] == NULL) goto oom; - ud->username = user_info[i] + sizeof("user=") - 1; + ud->username = info[i] + sizeof("user=") - 1; /* Stash user's shell for use with the -s flag; don't pass to plugin. */ if ((ud->shell = getenv("SHELL")) == NULL || ud->shell[0] == '\0') { @@ -560,46 +561,46 @@ get_user_info(struct user_details *ud) if ((ud->shell = strdup(ud->shell)) == NULL) goto oom; - if (asprintf(&user_info[++i], "pid=%d", (int)ud->pid) == -1) + if (asprintf(&info[++i], "pid=%d", (int)ud->pid) == -1) goto oom; - if (asprintf(&user_info[++i], "ppid=%d", (int)ud->ppid) == -1) + if (asprintf(&info[++i], "ppid=%d", (int)ud->ppid) == -1) goto oom; - if (asprintf(&user_info[++i], "pgid=%d", (int)ud->pgid) == -1) + if (asprintf(&info[++i], "pgid=%d", (int)ud->pgid) == -1) goto oom; - if (asprintf(&user_info[++i], "tcpgid=%d", (int)ud->tcpgid) == -1) + if (asprintf(&info[++i], "tcpgid=%d", (int)ud->tcpgid) == -1) goto oom; - if (asprintf(&user_info[++i], "sid=%d", (int)ud->sid) == -1) + if (asprintf(&info[++i], "sid=%d", (int)ud->sid) == -1) goto oom; - if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->cred.uid) == -1) + if (asprintf(&info[++i], "uid=%u", (unsigned int)ud->cred.uid) == -1) goto oom; - if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->cred.euid) == -1) + if (asprintf(&info[++i], "euid=%u", (unsigned int)ud->cred.euid) == -1) goto oom; - if (asprintf(&user_info[++i], "gid=%u", (unsigned int)ud->cred.gid) == -1) + if (asprintf(&info[++i], "gid=%u", (unsigned int)ud->cred.gid) == -1) goto oom; - if (asprintf(&user_info[++i], "egid=%u", (unsigned int)ud->cred.egid) == -1) + if (asprintf(&info[++i], "egid=%u", (unsigned int)ud->cred.egid) == -1) goto oom; if ((cp = get_user_groups(ud->username, &ud->cred)) == NULL) goto oom; - user_info[++i] = cp; + info[++i] = cp; mask = umask(0); umask(mask); - if (asprintf(&user_info[++i], "umask=0%o", (unsigned int)mask) == -1) + if (asprintf(&info[++i], "umask=0%o", (unsigned int)mask) == -1) goto oom; if (getcwd(path, sizeof(path)) != NULL) { - user_info[++i] = sudo_new_key_val("cwd", path); - if (user_info[i] == NULL) + info[++i] = sudo_new_key_val("cwd", path); + if (info[i] == NULL) goto oom; - ud->cwd = user_info[i] + sizeof("cwd=") - 1; + ud->cwd = info[i] + sizeof("cwd=") - 1; } if (get_process_ttyname(path, sizeof(path)) != NULL) { - user_info[++i] = sudo_new_key_val("tty", path); - if (user_info[i] == NULL) + info[++i] = sudo_new_key_val("tty", path); + if (info[i] == NULL) goto oom; - ud->tty = user_info[i] + sizeof("tty=") - 1; + ud->tty = info[i] + sizeof("tty=") - 1; } else { /* tty may not always be present */ if (errno != ENOENT) @@ -607,36 +608,36 @@ get_user_info(struct user_details *ud) } cp = sudo_gethostname(); - user_info[++i] = sudo_new_key_val("host", cp ? cp : "localhost"); + info[++i] = sudo_new_key_val("host", cp ? cp : "localhost"); free(cp); - if (user_info[i] == NULL) + if (info[i] == NULL) goto oom; - ud->host = user_info[i] + sizeof("host=") - 1; + ud->host = info[i] + sizeof("host=") - 1; sudo_get_ttysize(&ud->ts_rows, &ud->ts_cols); - if (asprintf(&user_info[++i], "lines=%d", ud->ts_rows) == -1) + if (asprintf(&info[++i], "lines=%d", ud->ts_rows) == -1) goto oom; - if (asprintf(&user_info[++i], "cols=%d", ud->ts_cols) == -1) + if (asprintf(&info[++i], "cols=%d", ud->ts_cols) == -1) goto oom; - n = serialize_limits(&user_info[i + 1], user_info_max - (i + 1)); + n = serialize_limits(&info[i + 1], info_max - (i + 1)); if (n == -1) goto oom; i += n; - user_info[++i] = NULL; + info[++i] = NULL; /* Add to list of vectors to be garbage collected at exit. */ - if (!gc_add(GC_VECTOR, user_info)) + if (!gc_add(GC_VECTOR, info)) goto bad; - debug_return_ptr(user_info); + debug_return_ptr(info); oom: sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); bad: while (i--) - free(user_info[i]); - free(user_info); + free(info[i]); + free(info); debug_return_ptr(NULL); } @@ -724,8 +725,12 @@ command_info_to_details(char * const info[], struct command_details *details) break; } break; + case 'i': + SET_FLAG("intercept=", CD_INTERCEPT) + break; case 'l': SET_STRING("login_class=", login_class) + SET_FLAG("log_subcmds=", CD_LOG_SUBCMDS) break; case 'n': if (strncmp("nice=", info[i], sizeof("nice=") - 1) == 0) { @@ -1006,8 +1011,7 @@ run_command(struct command_details *details) * to consume. Returns a NULL-terminated plugin-style array of pairs. */ static char ** -format_plugin_settings(struct plugin_container *plugin, - struct sudo_settings *sudo_settings) +format_plugin_settings(struct plugin_container *plugin) { size_t plugin_settings_size; struct sudo_debug_file *debug_file; @@ -1065,8 +1069,7 @@ bad: } static void -policy_open(struct sudo_settings *settings, char * const user_info[], - char * const user_env[]) +policy_open(void) { char **plugin_settings; const char *errstr = NULL; @@ -1074,7 +1077,7 @@ policy_open(struct sudo_settings *settings, char * const user_info[], debug_decl(policy_open, SUDO_DEBUG_PCOMM); /* Convert struct sudo_settings to plugin_settings[] */ - plugin_settings = format_plugin_settings(&policy_plugin, settings); + plugin_settings = format_plugin_settings(&policy_plugin); if (plugin_settings == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); @@ -1087,11 +1090,11 @@ policy_open(struct sudo_settings *settings, char * const user_info[], case SUDO_API_MKVERSION(1, 1): ok = policy_plugin.u.policy_1_0->open(policy_plugin.u.io_1_0->version, sudo_conversation_1_7, sudo_conversation_printf, plugin_settings, - user_info, user_env); + user_info, submit_envp); break; default: ok = policy_plugin.u.policy->open(SUDO_API_VERSION, sudo_conversation, - sudo_conversation_printf, plugin_settings, user_info, user_env, + sudo_conversation_printf, plugin_settings, user_info, submit_envp, policy_plugin.options, &errstr); } @@ -1157,10 +1160,9 @@ policy_show_version(int verbose) debug_return_int(ret); } -static void -policy_check(int argc, char * const argv[], - char *env_add[], char **command_info[], char **argv_out[], - char **user_env_out[]) +static bool +policy_check(int argc, char * const argv[], char *env_add[], + char **command_info[], char **run_argv[], char **run_envp[]) { const char *errstr = NULL; int ok; @@ -1172,7 +1174,7 @@ policy_check(int argc, char * const argv[], } sudo_debug_set_active_instance(policy_plugin.debug_instance); ok = policy_plugin.u.policy->check_policy(argc, argv, env_add, - command_info, argv_out, user_env_out, &errstr); + command_info, run_argv, run_envp, &errstr); sudo_debug_set_active_instance(sudo_debug_instance); sudo_debug_printf(SUDO_DEBUG_INFO, "policy plugin returns %d (%s)", ok, errstr ? errstr : ""); @@ -1194,22 +1196,14 @@ policy_check(int argc, char * const argv[], usage(); break; } - - /* Policy must be closed after auditing to avoid use after free. */ - if (policy_plugin.u.policy->version >= SUDO_API_MKVERSION(1, 15)) - policy_close(0, 0); - audit_close(SUDO_PLUGIN_NO_STATUS, 0); - exit(EXIT_FAILURE); /* policy plugin printed error message */ + debug_return_bool(false); } - audit_accept(policy_plugin.name, SUDO_POLICY_PLUGIN, *command_info, - *argv_out, *user_env_out); - - debug_return; + debug_return_bool(audit_accept(policy_plugin.name, SUDO_POLICY_PLUGIN, + *command_info, *run_argv, *run_envp)); } static void -policy_list(int argc, char * const argv[], int verbose, - const char *user, char * const envp[]) +policy_list(int argc, char * const argv[], int verbose, const char *user) { const char *errstr = NULL; /* TODO: add list_user */ @@ -1231,7 +1225,7 @@ policy_list(int argc, char * const argv[], int verbose, switch (ok) { case 1: audit_accept(policy_plugin.name, SUDO_POLICY_PLUGIN, - command_info, argv, envp); + command_info, argv, submit_envp); break; case 0: audit_reject(policy_plugin.name, SUDO_POLICY_PLUGIN, @@ -1254,7 +1248,7 @@ policy_list(int argc, char * const argv[], int verbose, } static void -policy_validate(char * const argv[], char * const envp[]) +policy_validate(char * const argv[]) { const char *errstr = NULL; char * const command_info[] = { @@ -1275,7 +1269,7 @@ policy_validate(char * const argv[], char * const envp[]) switch (ok) { case 1: audit_accept(policy_plugin.name, SUDO_POLICY_PLUGIN, command_info, - argv, envp); + argv, submit_envp); break; case 0: audit_reject(policy_plugin.name, SUDO_POLICY_PLUGIN, @@ -1367,16 +1361,15 @@ done: } static int -iolog_open_int(struct plugin_container *plugin, struct sudo_settings *settings, - char * const user_info[], char * const command_info[], - int argc, char * const argv[], char * const user_env[], const char **errstr) +iolog_open_int(struct plugin_container *plugin, char * const command_info[], + int argc, char * const argv[], char * const run_envp[], const char **errstr) { char **plugin_settings; int ret; debug_decl(iolog_open_int, SUDO_DEBUG_PCOMM); /* Convert struct sudo_settings to plugin_settings[] */ - plugin_settings = format_plugin_settings(plugin, settings); + plugin_settings = format_plugin_settings(plugin); if (plugin_settings == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(-1); @@ -1390,17 +1383,17 @@ iolog_open_int(struct plugin_container *plugin, struct sudo_settings *settings, case SUDO_API_MKVERSION(1, 0): ret = plugin->u.io_1_0->open(plugin->u.io_1_0->version, sudo_conversation_1_7, sudo_conversation_printf, plugin_settings, - user_info, argc, argv, user_env); + user_info, argc, argv, run_envp); break; case SUDO_API_MKVERSION(1, 1): ret = plugin->u.io_1_1->open(plugin->u.io_1_1->version, sudo_conversation_1_7, sudo_conversation_printf, plugin_settings, - user_info, command_info, argc, argv, user_env); + user_info, command_info, argc, argv, run_envp); break; default: ret = plugin->u.io->open(SUDO_API_VERSION, sudo_conversation, sudo_conversation_printf, plugin_settings, user_info, command_info, - argc, argv, user_env, plugin->options, errstr); + argc, argv, run_envp, plugin->options, errstr); } /* Stash plugin debug instance ID if set in open() function. */ @@ -1410,38 +1403,38 @@ iolog_open_int(struct plugin_container *plugin, struct sudo_settings *settings, debug_return_int(ret); } -static void -iolog_open(struct sudo_settings *settings, char * const user_info[], - char * const command_info[], int argc, char * const argv[], - char * const user_env[]) +static bool +iolog_open(char * const command_info[], int argc, char * const argv[], + char * const run_envp[]) { struct plugin_container *plugin, *next; const char *errstr = NULL; debug_decl(iolog_open, SUDO_DEBUG_PCOMM); - /* XXX - iolog_open should audit errors */ TAILQ_FOREACH_SAFE(plugin, &io_plugins, entries, next) { - int ok = iolog_open_int(plugin, settings, user_info, - command_info, argc, argv, user_env, &errstr); + int ok = iolog_open_int(plugin, command_info, argc, argv, run_envp, + &errstr); switch (ok) { case 1: break; case 0: /* I/O plugin asked to be disabled, remove and free. */ - /* XXX - audit */ unlink_plugin(&io_plugins, plugin); break; case -2: usage(); break; default: - /* XXX - audit error */ - sudo_fatalx(U_("error initializing I/O plugin %s"), + sudo_warnx(U_("error initializing I/O plugin %s"), plugin->name); + audit_error(plugin->name, SUDO_IO_PLUGIN, + errstr ? errstr : _("error initializing I/O plugin"), + command_info); + debug_return_bool(false); } } - debug_return; + debug_return_bool(true); } static void @@ -1471,17 +1464,15 @@ iolog_close(int exit_status, int error_code) } static void -iolog_show_version(int verbose, struct sudo_settings *settings, - char * const user_info[], int argc, char * const argv[], - char * const user_env[]) +iolog_show_version(int verbose, int argc, char * const argv[], + char * const envp[]) { const char *errstr = NULL; struct plugin_container *plugin; debug_decl(iolog_show_version, SUDO_DEBUG_PCOMM); TAILQ_FOREACH(plugin, &io_plugins, entries) { - int ok = iolog_open_int(plugin, settings, user_info, NULL, - argc, argv, user_env, &errstr); + int ok = iolog_open_int(plugin, NULL, argc, argv, envp, &errstr); if (ok != -1) { sudo_debug_set_active_instance(plugin->debug_instance); if (plugin->u.io->show_version != NULL) { @@ -1540,16 +1531,14 @@ unlink_plugin(struct plugin_container_list *plugin_list, } static int -audit_open_int(struct plugin_container *plugin, struct sudo_settings *settings, - char * const user_info[], int submit_optind, char * const submit_argv[], - char * const submit_envp[], const char **errstr) +audit_open_int(struct plugin_container *plugin, const char **errstr) { char **plugin_settings; int ret; debug_decl(audit_open_int, SUDO_DEBUG_PCOMM); /* Convert struct sudo_settings to plugin_settings[] */ - plugin_settings = format_plugin_settings(plugin, settings); + plugin_settings = format_plugin_settings(plugin); if (plugin_settings == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(-1); @@ -1568,16 +1557,14 @@ audit_open_int(struct plugin_container *plugin, struct sudo_settings *settings, } static void -audit_open(struct sudo_settings *settings, char * const user_info[], - int submit_optind, char * const submit_argv[], char * const submit_envp[]) +audit_open(void) { struct plugin_container *plugin, *next; const char *errstr = NULL; debug_decl(audit_open, SUDO_DEBUG_PCOMM); TAILQ_FOREACH_SAFE(plugin, &audit_plugins, entries, next) { - int ok = audit_open_int(plugin, settings, user_info, - submit_optind, submit_argv, submit_envp, &errstr); + int ok = audit_open_int(plugin, &errstr); switch (ok) { case 1: break; @@ -1639,12 +1626,13 @@ audit_show_version(int verbose) * Error from plugin or front-end. * The error will not be sent to plugin source, if specified. */ -static void +static bool audit_error2(struct plugin_container *source, const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[]) { struct plugin_container *plugin; const char *errstr = NULL; + bool ret = true; int ok; debug_decl(audit_error2, SUDO_DEBUG_PCOMM); @@ -1670,10 +1658,11 @@ audit_error2(struct plugin_container *source, const char *plugin_name, plugin->name, ok); sudo_warnx(U_("%s: unable to log error event%s%s"), plugin->name, errstr ? ": " : "", errstr ? errstr : ""); + ret = false; } } - debug_return; + debug_return_bool(ret); } /* @@ -1681,7 +1670,7 @@ audit_error2(struct plugin_container *source, const char *plugin_name, * See command_info[] for additional info. * XXX - actual environment may be updated by policy_init_session(). */ -static void +bool audit_accept(const char *plugin_name, unsigned int plugin_type, char * const command_info[], char * const run_argv[], char * const run_envp[]) @@ -1706,26 +1695,26 @@ audit_accept(const char *plugin_name, unsigned int plugin_type, sudo_warnx(U_("%s: unable to log accept event%s%s"), plugin->name, errstr ? ": " : "", errstr ? errstr : ""); - /* Notify other audit plugins and exit. */ + /* Notify other audit plugins and return. */ audit_error2(plugin, plugin->name, SUDO_AUDIT_PLUGIN, errstr ? errstr : _("audit plugin error"), command_info); - audit_close(SUDO_PLUGIN_NO_STATUS, 0); - exit(EXIT_FAILURE); + debug_return_bool(false); } } - debug_return; + debug_return_bool(true); } /* * Command rejected by policy or I/O plugin. */ -void +bool audit_reject(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[]) { struct plugin_container *plugin; const char *errstr = NULL; + bool ret = true; int ok; debug_decl(audit_reject, SUDO_DEBUG_PCOMM); @@ -1747,26 +1736,28 @@ audit_reject(const char *plugin_name, unsigned int plugin_type, /* Notify other audit plugins. */ audit_error2(plugin, plugin->name, SUDO_AUDIT_PLUGIN, errstr ? errstr : _("audit plugin error"), command_info); + + ret = false; + break; } } - debug_return; + debug_return_bool(ret); } /* * Error from plugin or front-end. */ -void +bool audit_error(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[]) { - audit_error2(NULL, plugin_name, plugin_type, audit_msg, command_info); + return audit_error2(NULL, plugin_name, plugin_type, audit_msg, + command_info); } static int -approval_open_int(struct plugin_container *plugin, - struct sudo_settings *settings, char * const user_info[], - int submit_optind, char * const submit_argv[], char * const submit_envp[]) +approval_open_int(struct plugin_container *plugin) { char **plugin_settings; const char *errstr = NULL; @@ -1774,7 +1765,7 @@ approval_open_int(struct plugin_container *plugin, debug_decl(approval_open_int, SUDO_DEBUG_PCOMM); /* Convert struct sudo_settings to plugin_settings[] */ - plugin_settings = format_plugin_settings(plugin, settings); + plugin_settings = format_plugin_settings(plugin); if (plugin_settings == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); @@ -1807,9 +1798,7 @@ approval_open_int(struct plugin_container *plugin, } static void -approval_show_version(int verbose, struct sudo_settings *settings, - char * const user_info[], int submit_optind, char * const submit_argv[], - char * const submit_envp[]) +approval_show_version(int verbose) { struct plugin_container *plugin, *next; int ok; @@ -1822,8 +1811,7 @@ approval_show_version(int verbose, struct sudo_settings *settings, if (plugin->u.approval->show_version == NULL) continue; - ok = approval_open_int(plugin, settings, user_info, submit_optind, - submit_argv, submit_envp); + ok = approval_open_int(plugin); if (ok == 1) { /* Return value of show_version currently ignored. */ sudo_debug_set_active_instance(plugin->debug_instance); @@ -1842,10 +1830,8 @@ approval_show_version(int verbose, struct sudo_settings *settings, * This is a "one-shot" plugin that has no open/close and is only * called if the policy plugin accepts the command first. */ -static void -approval_check(struct sudo_settings *settings, char * const user_info[], - int submit_optind, char * const submit_argv[], char * const submit_envp[], - char * const command_info[], char * const run_argv[], +bool +approval_check(char * const command_info[], char * const run_argv[], char * const run_envp[]) { struct plugin_container *plugin, *next; @@ -1854,14 +1840,13 @@ approval_check(struct sudo_settings *settings, char * const user_info[], debug_decl(approval_check, SUDO_DEBUG_PCOMM); /* - * Approval plugin us only open for the life of the check() call. + * Approval plugin is only open for the life of the check() call. */ TAILQ_FOREACH_SAFE(plugin, &approval_plugins, entries, next) { if (plugin->u.approval->check == NULL) continue; - ok = approval_open_int(plugin, settings, user_info, submit_optind, - submit_argv, submit_envp); + ok = approval_open_int(plugin); if (ok != 1) continue; @@ -1879,8 +1864,9 @@ approval_check(struct sudo_settings *settings, char * const user_info[], command_info); break; case 1: - audit_accept(plugin->name, SUDO_APPROVAL_PLUGIN, command_info, - run_argv, run_envp); + if (!audit_accept(plugin->name, SUDO_APPROVAL_PLUGIN, command_info, + run_argv, run_envp)) + ok = -1; break; case -1: audit_error(plugin->name, SUDO_APPROVAL_PLUGIN, @@ -1899,16 +1885,11 @@ approval_check(struct sudo_settings *settings, char * const user_info[], sudo_debug_set_active_instance(sudo_debug_instance); } - /* On error, close policy and audit plugins then exit. */ - if (ok != 1) { - if (policy_plugin.u.policy->version >= SUDO_API_MKVERSION(1, 15)) - policy_close(0, EPERM); - audit_close(SUDO_PLUGIN_NO_STATUS, 0); - exit(EXIT_FAILURE); /* approval plugin printed error message */ - } + if (ok != 1) + debug_return_bool(false); } - debug_return; + debug_return_bool(true); } static void diff --git a/src/sudo.h b/src/sudo.h index 7f48ece79..a7894a409 100644 --- a/src/sudo.h +++ b/src/sudo.h @@ -123,21 +123,23 @@ struct user_details { #define CD_SET_GID 0x000004 #define CD_SET_EGID 0x000008 #define CD_PRESERVE_GROUPS 0x000010 -#define CD_NOEXEC 0x000020 -#define CD_SET_PRIORITY 0x000040 -#define CD_SET_UMASK 0x000080 -#define CD_SET_TIMEOUT 0x000100 -#define CD_SUDOEDIT 0x000200 -#define CD_BACKGROUND 0x000400 -#define CD_RBAC_ENABLED 0x000800 -#define CD_USE_PTY 0x001000 -#define CD_SET_UTMP 0x002000 -#define CD_EXEC_BG 0x004000 -#define CD_SUDOEDIT_FOLLOW 0x008000 -#define CD_SUDOEDIT_CHECKDIR 0x010000 -#define CD_SET_GROUPS 0x020000 -#define CD_LOGIN_SHELL 0x040000 -#define CD_OVERRIDE_UMASK 0x080000 +#define CD_INTERCEPT 0x000020 +#define CD_NOEXEC 0x000040 +#define CD_SET_PRIORITY 0x000080 +#define CD_SET_UMASK 0x000100 +#define CD_SET_TIMEOUT 0x000200 +#define CD_SUDOEDIT 0x000400 +#define CD_BACKGROUND 0x000800 +#define CD_RBAC_ENABLED 0x001000 +#define CD_USE_PTY 0x002000 +#define CD_SET_UTMP 0x004000 +#define CD_EXEC_BG 0x008000 +#define CD_SUDOEDIT_FOLLOW 0x010000 +#define CD_SUDOEDIT_CHECKDIR 0x020000 +#define CD_SET_GROUPS 0x040000 +#define CD_LOGIN_SHELL 0x080000 +#define CD_OVERRIDE_UMASK 0x100000 +#define CD_LOG_SUBCMDS 0x200000 struct preserved_fd { TAILQ_ENTRY(preserved_fd) entries; @@ -221,10 +223,15 @@ int os_init_common(int argc, char *argv[], char *envp[]); bool gc_add(enum sudo_gc_types type, void *v); bool set_user_groups(struct command_details *details); struct sudo_plugin_event *sudo_plugin_event_alloc(void); -void audit_reject(const char *plugin_name, unsigned int plugin_type, +bool audit_accept(const char *plugin_name, unsigned int plugin_type, + char * const command_info[], char * const run_argv[], + char * const run_envp[]); +bool audit_reject(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[]); -void audit_error(const char *plugin_name, unsigned int plugin_type, +bool audit_error(const char *plugin_name, unsigned int plugin_type, const char *audit_msg, char * const command_info[]); +bool approval_check(char * const command_info[], char * const run_argv[], + char * const run_envp[]); extern const char *list_user; extern struct user_details user_details; extern int sudo_debug_instance; diff --git a/src/sudo_exec.h b/src/sudo_exec.h index 1e086d2cc..47419f3ec 100644 --- a/src/sudo_exec.h +++ b/src/sudo_exec.h @@ -79,21 +79,37 @@ #define SESH_ERR_NO_FILES 32 /* copy error, no files copied */ #define SESH_ERR_SOME_FILES 33 /* copy error, some files copied */ +#define INTERCEPT_FD_MIN 64 /* minimum fd so shell won't close it */ +#define MESSAGE_SIZE_MAX 2097152 /* 2Mib max intercept message size */ + +union sudo_token_un { + unsigned char u8[16]; + unsigned int u32[4]; + unsigned long long u64[2]; +}; + +#define sudo_token_isset(_t) ((_t).u64[0] || (_t).u64[1]) + /* * Symbols shared between exec.c, exec_nopty.c, exec_pty.c and exec_monitor.c */ struct command_details; struct command_status; +struct sudo_event_base; struct stat; /* exec.c */ -void exec_cmnd(struct command_details *details, int errfd); +void exec_cmnd(struct command_details *details, int intercept_fd, int errfd); void terminate_command(pid_t pid, bool use_pgrp); bool sudo_terminated(struct command_status *cstat); /* exec_common.c */ -int sudo_execve(int fd, const char *path, char *const argv[], char *envp[], bool noexec); +int sudo_execve(int fd, const char *path, char *const argv[], char *envp[], int intercept_fd, int flags); char **disable_execute(char *envp[], const char *dso); +char **enable_monitor(char *envp[], const char *dso); + +/* exec_intercept.c */ +bool intercept_setup(int fd, struct sudo_event_base *evbase, struct command_details *details); /* exec_nopty.c */ void exec_nopty(struct command_details *details, struct command_status *cstat); @@ -105,11 +121,14 @@ int pty_make_controlling(void); extern int io_fds[6]; /* exec_monitor.c */ -int exec_monitor(struct command_details *details, sigset_t *omask, bool foreground, int backchannel); +int exec_monitor(struct command_details *details, sigset_t *omask, bool foreground, int backchannel, int intercept_fd); /* utmp.c */ bool utmp_login(const char *from_line, const char *to_line, int ttyfd, const char *user); bool utmp_logout(const char *line, int status); +/* exec_preload.c */ +char **sudo_preload_dso(char *envp[], const char *dso_file, int intercept_fd); + #endif /* SUDO_EXEC_H */ diff --git a/src/sudo_intercept.c b/src/sudo_intercept.c new file mode 100644 index 000000000..30a28eee0 --- /dev/null +++ b/src/sudo_intercept.c @@ -0,0 +1,396 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This is an open source non-commercial project. Dear PVS-Studio, please check it. + * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + */ + +#include <config.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#include <errno.h> +#include <stdarg.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <limits.h> +#include <string.h> +#ifdef HAVE_STDBOOL_H +# include <stdbool.h> +#else +# include "compat/stdbool.h" +#endif /* HAVE_STDBOOL_H */ +#if defined(HAVE_SHL_LOAD) +# include <dl.h> +#elif defined(HAVE_DLOPEN) +# include <dlfcn.h> +#endif + +#include "sudo_compat.h" +#include "sudo_debug.h" +#include "sudo_util.h" +#include "pathnames.h" + +/* execl flavors */ +#define SUDO_EXECL 0x0 +#define SUDO_EXECLE 0x1 +#define SUDO_EXECLP 0x2 + +extern char **environ; +extern bool command_allowed(const char *cmnd, char * const argv[], char * const envp[], char **ncmnd, char ***nargv, char ***nenvp); + +typedef int (*sudo_fn_execve_t)(const char *, char *const *, char *const *); + +/* + * We do PATH resolution here rather than in the policy because we + * want to use the PATH in the current environment. + */ +static bool +resolve_path(const char *cmnd, char *out_cmnd, size_t out_size) +{ + struct stat sb; + int errval = ENOENT; + char path[PATH_MAX]; + char **p, *cp, *endp; + int dirlen, len; + + for (p = environ; (cp = *p) != NULL; p++) { + if (strncmp(cp, "PATH=", sizeof("PATH=") - 1) == 0) { + cp += sizeof("PATH=") - 1; + break; + } + } + if (cp == NULL) { + errno = ENOENT; + return false; + } + + endp = cp + strlen(cp); + while (cp < endp) { + char *colon = strchr(cp, ':'); + dirlen = colon ? (colon - cp) : (endp - cp); + if (dirlen == 0) { + /* empty PATH component is the same as "." */ + len = snprintf(path, sizeof(path), "./%s", cmnd); + } else { + len = snprintf(path, sizeof(path), "%.*s/%s", dirlen, cp, cmnd); + } + cp = colon ? colon + 1 : endp; + if (len >= ssizeof(path)) { + /* skip too long path */ + errval = ENAMETOOLONG; + continue; + } + + if (stat(path, &sb) == 0) { + if (strlcpy(out_cmnd, path, out_size) >= out_size) { + errval = ENAMETOOLONG; + break; + } + return true; + } + switch (errno) { + case EACCES: + errval = EACCES; + break; + case ELOOP: + case ENOTDIR: + case ENOENT: + break; + default: + return false; + } + } + errno = errval; + return false; +} + +static int +exec_wrapper(const char *cmnd, char * const argv[], char * const envp[], + bool is_execvp) +{ + char *ncmnd = NULL, **nargv = NULL, **nenvp = NULL; + char cmnd_buf[PATH_MAX]; + void *fn = NULL; + debug_decl(exec_wrapper, SUDO_DEBUG_EXEC); + + /* Only check PATH for the command for execlp/execvp/execvpe. */ + if (strchr(cmnd, '/') == NULL) { + if (!is_execvp) { + errno = ENOENT; + debug_return_int(-1); + } + if (!resolve_path(cmnd, cmnd_buf, sizeof(cmnd_buf))) { + debug_return_int(-1); + } + cmnd = cmnd_buf; + } + +# if defined(HAVE___INTERPOSE) + fn = execve; +# elif defined(HAVE_DLOPEN) + fn = dlsym(RTLD_NEXT, "execve"); +# elif defined(HAVE_SHL_LOAD) + fn = sudo_shl_get_next("execve", TYPE_PROCEDURE); +# endif + if (fn == NULL) { + errno = EACCES; + debug_return_int(-1); + } + + if (command_allowed(cmnd, argv, envp, &ncmnd, &nargv, &nenvp)) { + /* Execute the command using the "real" execve() function. */ + ((sudo_fn_execve_t)fn)(ncmnd, nargv, nenvp); + + /* Fall back to exec via shell for execvp and friends. */ + if (errno == ENOEXEC && is_execvp) { + int argc; + char **shargv; + + for (argc = 0; argv[argc] != NULL; argc++) + continue; + shargv = reallocarray(NULL, (argc + 2), sizeof(char *)); + if (shargv == NULL) + return -1; + shargv[0] = "sh"; + shargv[1] = ncmnd; + memcpy(shargv + 2, nargv + 1, argc * sizeof(char *)); + ((sudo_fn_execve_t)fn)(_PATH_SUDO_BSHELL, shargv, nenvp); + free(shargv); + } + } else { + errno = EACCES; + } + if (ncmnd != cmnd) + free(ncmnd); + if (nargv != argv) + free(nargv); + if (nenvp != envp) + free(nenvp); + + debug_return_int(-1); +} + +static int +execl_wrapper(int type, const char *name, const char *arg, va_list ap) +{ + char **argv, **envp = environ; + int argc = 1; + va_list ap2; + debug_decl(execl_wrapper, SUDO_DEBUG_EXEC); + + va_copy(ap2, ap); + while (va_arg(ap2, char *) != NULL) + argc++; + va_end(ap2); + argv = reallocarray(NULL, (argc + 1), sizeof(char *)); + if (argv == NULL) + debug_return_int(-1); + + argc = 0; + argv[argc++] = (char *)arg; + while ((argv[argc] = va_arg(ap, char *)) != NULL) + argc++; + if (type == SUDO_EXECLE) + envp = va_arg(ap, char **); + + exec_wrapper(name, argv, envp, type == SUDO_EXECLP); + free(argv); + + debug_return_int(-1); +} + +#ifdef HAVE___INTERPOSE +/* + * Mac OS X 10.4 and above has support for library symbol interposition. + * There is a good explanation of this in the Mac OS X Internals book. + */ +typedef struct interpose_s { + void *new_func; + void *orig_func; +} interpose_t; + +static int +my_execve(const char *cmnd, char * const argv[], char * const envp[]) +{ + return exec_wrapper(cmnd, argv, environ, false); +} + +static int +my_execv(const char *cmnd, char * const argv[]) +{ + return execve(cmnd, argv, environ); +} + +#ifdef HAVE_EXECVPE +static int +my_execvpe(const char *cmnd, char * const argv[], char * const envp[]) +{ + return exec_wrapper(cmnd, argv, envp, true); +} +#endif + +static int +my_execvp(const char *cmnd, char * const argv[]) +{ + return exec_wrapper(cmnd, argv, environ, true); +} + +static int +my_execl(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECL, name, arg, ap); + va_end(ap); + + return -1; +} + +static int +my_execle(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECLE, name, arg, ap); + va_end(ap); + + return -1; +} + +static int +my_execlp(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECLP, name, arg, ap); + va_end(ap); + + return -1; +} + +/* Magic to tell dyld to do symbol interposition. */ +__attribute__((__used__)) static const interpose_t interposers[] +__attribute__((__section__("__DATA,__interpose"))) = { + { (void *)my_execl, (void *)execl }, + { (void *)my_execle, (void *)execle }, + { (void *)my_execlp, (void *)execlp }, + { (void *)my_execv, (void *)execv }, + { (void *)my_execve, (void *)execve }, + { (void *)my_execvp, (void *)execvp }, +#ifdef HAVE_EXECVPE + { (void *)my_execvpe, (void *)execvpe } +#endif +}; + +#else /* HAVE___INTERPOSE */ + +# if defined(HAVE_SHL_LOAD) +static void * +sudo_shl_get_next(const char *symbol, short type) +{ + const char *name, *myname; + struct shl_descriptor *desc; + void *fn = NULL; + int idx = 0; + debug_decl(sudo_shl_get_next, SUDO_DEBUG_EXEC); + + /* Search for symbol but skip this shared object. */ + /* XXX - could be set to a different path in sudo.conf */ + myname = sudo_basename(_PATH_SUDO_INTERCEPT); + while (shl_get(idx++, &desc) == 0) { + name = sudo_basename(desc->filename); + if (strcmp(name, myname) == 0) + continue; + if (shl_findsym(&desc->handle, symbol, type, &fn) == 0) + break; + } + + debug_return_ptr(fn); +} +# endif /* HAVE_SHL_LOAD */ + +sudo_dso_public int +execve(const char *cmnd, char * const argv[], char * const envp[]) +{ + return exec_wrapper(cmnd, argv, environ, false); +} + +sudo_dso_public int +execv(const char *cmnd, char * const argv[]) +{ + return execve(cmnd, argv, environ); +} + +#ifdef HAVE_EXECVPE +sudo_dso_public int +execvpe(const char *cmnd, char * const argv[], char * const envp[]) +{ + return exec_wrapper(cmnd, argv, envp, true); +} +#endif + +sudo_dso_public int +execvp(const char *cmnd, char * const argv[]) +{ + return exec_wrapper(cmnd, argv, environ, true); +} + +sudo_dso_public int +execl(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECL, name, arg, ap); + va_end(ap); + + return -1; +} + +sudo_dso_public int +execle(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECLE, name, arg, ap); + va_end(ap); + + return -1; +} + +sudo_dso_public int +execlp(const char *name, const char *arg, ...) +{ + va_list ap; + + va_start(ap, arg); + execl_wrapper(SUDO_EXECLP, name, arg, ap); + va_end(ap); + + return -1; +} +#endif /* HAVE___INTERPOSE) */ diff --git a/src/sudo_intercept_common.c b/src/sudo_intercept_common.c new file mode 100644 index 000000000..35d171a1f --- /dev/null +++ b/src/sudo_intercept_common.c @@ -0,0 +1,453 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This is an open source non-commercial project. Dear PVS-Studio, please check it. + * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + */ + +#include <config.h> + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> + +#if defined(HAVE_STDINT_H) +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif +#include <errno.h> +#include <fcntl.h> +#include <signal.h> +#include <stdarg.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#ifdef HAVE_STDBOOL_H +# include <stdbool.h> +#else +# include "compat/stdbool.h" +#endif /* HAVE_STDBOOL_H */ + +#include "sudo_compat.h" +#include "sudo_conf.h" +#include "sudo_debug.h" +#include "sudo_fatal.h" +#include "sudo_exec.h" +#include "sudo_gettext.h" +#include "sudo_util.h" +#include "intercept.pb-c.h" + +extern char **environ; + +static union sudo_token_un intercept_token; +static in_port_t intercept_port; + +/* Send entire request to sudo (blocking). */ +static bool +send_req(int sock, const void *buf, size_t len) +{ + const uint8_t *cp = buf; + ssize_t nwritten; + debug_decl(send_req, SUDO_DEBUG_EXEC); + + do { + nwritten = send(sock, cp, len, 0); + if (nwritten == -1) { + if (errno == EINTR) + continue; + debug_return_bool(false); + } + len -= nwritten; + cp += nwritten; + } while (len > 0); + + debug_return_bool(true); +} + +static bool +send_client_hello(int sock) +{ + InterceptRequest msg = INTERCEPT_REQUEST__INIT; + ClientHello hello = CLIENT_HELLO__INIT; + uint8_t *buf = NULL; + uint32_t msg_len; + size_t len; + bool ret = false; + debug_decl(send_client_hello, SUDO_DEBUG_EXEC); + + /* Setup client hello. */ + hello.pid = getpid(); + msg.type_case = INTERCEPT_REQUEST__TYPE_HELLO;; + msg.u.hello = &hello; + + len = intercept_request__get_packed_size(&msg); + if (len > MESSAGE_SIZE_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "InterceptRequest too large: %zu", len); + goto done; + } + /* Wire message size is used for length encoding, precedes message. */ + msg_len = len; + len += sizeof(msg_len); + + if ((buf = malloc(len)) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + memcpy(buf, &msg_len, sizeof(msg_len)); + intercept_request__pack(&msg, buf + sizeof(msg_len)); + + ret = send_req(sock, buf, len); + +done: + free(buf); + debug_return_bool(ret); +} + +/* + * Receive HelloResponse from sudo over fd. + */ +InterceptResponse * +recv_intercept_response(int fd) +{ + InterceptResponse *res = NULL; + ssize_t nread; + uint32_t rem, res_len; + uint8_t *cp, *buf = NULL; + debug_decl(recv_intercept_response, SUDO_DEBUG_EXEC); + + /* Read message size (uint32_t in host byte order). */ + nread = recv(fd, &res_len, sizeof(res_len), 0); + if ((size_t)nread != sizeof(res_len)) { + if (nread == 0) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unexpected EOF reading response size"); + } else { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, + "error reading response size"); + } + goto done; + } + if (res_len > MESSAGE_SIZE_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "InterceptResponse too large: %u", res_len); + goto done; + } + + /* Read response from sudo (blocking). */ + if ((buf = malloc(res_len)) == NULL) { + goto done; + } + cp = buf; + rem = res_len; + do { + nread = recv(fd, cp, rem, 0); + switch (nread) { + case 0: + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unexpected EOF reading response"); + goto done; + case -1: + if (errno == EINTR) + continue; + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, + "error reading response"); + goto done; + default: + rem -= nread; + cp += nread; + break; + } + } while (rem > 0); + res = intercept_response__unpack(NULL, res_len, buf); + if (res == NULL) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unable to unpack %s size %u", "InterceptResponse", res_len); + goto done; + } + +done: + free(buf); + debug_return_ptr(res); +} + +/* + * Look up SUDO_INTERCEPT_FD in the environment. + * This function is run when the shared library is loaded. + */ +__attribute__((constructor)) static void +sudo_interposer_init(void) +{ + InterceptResponse *res = NULL; + static bool initialized; + int fd = -1; + char **p; + debug_decl(sudo_interposer_init, SUDO_DEBUG_EXEC); + + if (initialized) + debug_return; + initialized = true; + + /* Read debug section of sudo.conf and init debugging. */ + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) != -1) { + sudo_debug_register("sudo_intercept.so", NULL, NULL, + sudo_conf_debug_files("sudo_intercept.so"), INTERCEPT_FD_MIN); + } + sudo_debug_enter(__func__, __FILE__, __LINE__, sudo_debug_subsys); + + /* + * Missing SUDO_INTERCEPT_FD will result in execve() failure. + * Note that we cannot use getenv(3) here on Linux at least. + */ + for (p = environ; *p != NULL; p++) { + if (strncmp(*p, "SUDO_INTERCEPT_FD=", sizeof("SUDO_INTERCEPT_FD=") -1) == 0) { + const char *fdstr = *p + sizeof("SUDO_INTERCEPT_FD=") - 1; + const char *errstr; + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "%s", *p); + + fd = sudo_strtonum(fdstr, 0, INT_MAX, &errstr); + if (errstr != NULL) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "invalid SUDO_INTERCEPT_FD: %s: %s", fdstr, errstr); + goto done; + } + } + } + if (fd == -1) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "SUDO_INTERCEPT_FD not found in environment"); + goto done; + } + + /* + * Send ClientHello message to over the fd. + */ + if (!send_client_hello(fd)) + goto done; + + res = recv_intercept_response(fd); + if (res != NULL) { + intercept_token.u64[0] = res->u.hello_resp->token_lo; + intercept_token.u64[1] = res->u.hello_resp->token_hi; + intercept_port = res->u.hello_resp->portno; + intercept_response__free_unpacked(res, NULL); + } + +done: + if (fd != -1) + close(fd); + + debug_return; +} + +static bool +send_policy_check_req(int sock, const char *cmnd, char * const argv[], + char * const envp[]) +{ + InterceptRequest msg = INTERCEPT_REQUEST__INIT; + PolicyCheckRequest req = POLICY_CHECK_REQUEST__INIT; + char cwdbuf[PATH_MAX]; + uint8_t *buf = NULL; + bool ret = false; + uint32_t msg_len; + size_t len; + debug_decl(fmt_policy_check_req, SUDO_DEBUG_EXEC); + + /* Send token first (out of band) to initiate connection. */ + if (!send_req(sock, &intercept_token, sizeof(intercept_token))) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unable to send token back to sudo"); + goto done; + } + + /* Setup policy check request. */ + req.intercept_fd = sock; + req.command = (char *)cmnd; + req.argv = (char **)argv; + for (len = 0; argv[len] != NULL; len++) + continue; + req.n_argv = len; + req.envp = (char **)envp; + for (len = 0; envp[len] != NULL; len++) + continue; + req.n_envp = len; + if (getcwd(cwdbuf, sizeof(cwdbuf)) != NULL) { + req.cwd = cwdbuf; + } + msg.type_case = INTERCEPT_REQUEST__TYPE_POLICY_CHECK_REQ; + msg.u.policy_check_req = &req; + + len = intercept_request__get_packed_size(&msg); + if (len > MESSAGE_SIZE_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "InterceptRequest too large: %zu", len); + goto done; + } + /* Wire message size is used for length encoding, precedes message. */ + msg_len = len; + len += sizeof(msg_len); + + if ((buf = malloc(len)) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + memcpy(buf, &msg_len, sizeof(msg_len)); + intercept_request__pack(&msg, buf + sizeof(msg_len)); + + ret = send_req(sock, buf, len); + +done: + free(buf); + debug_return_bool(ret); +} + +/* + * Connect back to sudo process at localhost:intercept_port + */ +static int +intercept_connect(void) +{ + int sock = -1; + struct sockaddr_in sin; + debug_decl(command_allowed, SUDO_DEBUG_EXEC); + + if (intercept_port == 0) { + sudo_warnx(U_("intercept port not set")); + goto done; + } + + memset(&sin, 0, sizeof(sin)); + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + sin.sin_port = htons(intercept_port); + + sock = socket(AF_INET, SOCK_STREAM, 0); + if (sock == -1) { + sudo_warn("socket"); + goto done; + } + + if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1) { + sudo_warn("connect"); + close(sock); + sock = -1; + goto done; + } + +done: + debug_return_int(sock); +} + +bool +command_allowed(const char *cmnd, char * const argv[], + char * const envp[], char **ncmndp, char ***nargvp, char ***nenvpp) +{ + char *ncmnd = NULL, **nargv = NULL, **nenvp = NULL; + InterceptResponse *res = NULL; + bool ret = false; + size_t idx, len = 0; + int sock; + debug_decl(command_allowed, SUDO_DEBUG_EXEC); + + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "req_command: %s", cmnd); + for (idx = 0; argv[idx] != NULL; idx++) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "req_argv[%zu]: %s", idx, argv[idx]); + } + } + + sock = intercept_connect(); + if (sock == -1) + goto done; + + if (!send_policy_check_req(sock, cmnd, argv, envp)) + goto done; + + res = recv_intercept_response(sock); + if (res == NULL) + goto done; + + switch (res->type_case) { + case INTERCEPT_RESPONSE__TYPE_ACCEPT_MSG: + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "run_command: %s", res->u.accept_msg->run_command); + for (idx = 0; idx < res->u.accept_msg->n_run_argv; idx++) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "run_argv[%zu]: %s", idx, res->u.accept_msg->run_argv[idx]); + } + } + ncmnd = strdup(res->u.accept_msg->run_command); + if (ncmnd == NULL) + goto oom; + nargv = reallocarray(NULL, res->u.accept_msg->n_run_argv + 1, + sizeof(char *)); + if (nargv == NULL) + goto oom; + for (len = 0; len < res->u.accept_msg->n_run_argv; len++) { + nargv[len] = strdup(res->u.accept_msg->run_argv[len]); + if (nargv[len] == NULL) + goto oom; + } + nargv[len] = NULL; + // XXX - bogus cast + nenvp = sudo_preload_dso((char **)envp, sudo_conf_intercept_path(), + sock); + if (nenvp == NULL) + goto oom; + *ncmndp = ncmnd; + *nargvp = nargv; + *nenvpp = nenvp; + ret = true; + goto done; + case INTERCEPT_RESPONSE__TYPE_REJECT_MSG: + /* Policy module displayed reject message but we are in raw mode. */ + fputc('\r', stderr); + goto done; + case INTERCEPT_RESPONSE__TYPE_ERROR_MSG: + /* Policy module may display error message but we are in raw mode. */ + fputc('\r', stderr); + sudo_warnx("%s", res->u.error_msg->error_message); + goto done; + default: + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unexpected type_case value %d in %s from %s", + res->type_case, "InterceptResponse", "sudo"); + goto done; + } + +oom: + free(ncmnd); + while (len > 0) + free(nargv[--len]); + +done: + /* Keep socket open for ctor when we execute the command. */ + if (!ret && sock != -1) + close(sock); + intercept_response__free_unpacked(res, NULL); + + debug_return_bool(ret); +} |