summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd C. Miller <Todd.Miller@sudo.ws>2021-09-09 12:25:13 -0600
committerTodd C. Miller <Todd.Miller@sudo.ws>2021-09-09 12:25:13 -0600
commit8a7eb15dafad519860fc41c2baa1224bf3fcac84 (patch)
tree90067c4b7e8247fd6d8ff06bb26a029ba46901b6
parentcd90b5d6b6b2334d753f855c0f75a425057a2212 (diff)
parentc419b5ba270a4673ac6e9ab6eaaa426b95cbffbd (diff)
downloadsudo-8a7eb15dafad519860fc41c2baa1224bf3fcac84.tar.gz
Merge sudo 1.9.8 from tipSUDO_1_9_8
-rw-r--r--.clang-format2
-rw-r--r--.gitignore3
-rw-r--r--.hgignore3
-rw-r--r--INSTALL29
-rw-r--r--MANIFEST21
-rw-r--r--Makefile.in15
-rw-r--r--NEWS63
-rw-r--r--aclocal.m41
-rwxr-xr-xautogen.sh4
-rw-r--r--config.h.in26
-rwxr-xr-xconfigure1765
-rw-r--r--configure.ac136
-rw-r--r--doc/CONTRIBUTORS2
-rw-r--r--doc/HISTORY6
-rw-r--r--doc/LICENSE56
-rw-r--r--doc/Makefile.in4
-rw-r--r--doc/sudo.conf.man.in79
-rw-r--r--doc/sudo.conf.mdoc.in75
-rw-r--r--doc/sudo.man.in6
-rw-r--r--doc/sudo.mdoc.in6
-rw-r--r--doc/sudo_logsrv.proto.man.in21
-rw-r--r--doc/sudo_logsrv.proto.mdoc.in20
-rw-r--r--doc/sudo_logsrvd.conf.man.in63
-rw-r--r--doc/sudo_logsrvd.conf.mdoc.in60
-rw-r--r--doc/sudoers.man.in336
-rw-r--r--doc/sudoers.mdoc.in316
-rw-r--r--doc/sudoreplay.man.in16
-rw-r--r--doc/sudoreplay.mdoc.in16
-rw-r--r--etc/codespell.exclude1
-rw-r--r--etc/sudo.pp2
-rw-r--r--examples/Makefile.in2
-rw-r--r--examples/sudo.conf.in15
-rw-r--r--examples/sudo_logsrvd.conf19
-rw-r--r--include/intercept.pb-c.h367
-rw-r--r--include/log_server.pb-c.h6
-rw-r--r--include/sudo_compat.h47
-rw-r--r--include/sudo_conf.h4
-rw-r--r--include/sudo_debug.h3
-rw-r--r--include/sudo_eventlog.h4
-rw-r--r--lib/eventlog/eventlog.c316
-rw-r--r--lib/iolog/iolog_mkdtemp.c7
-rw-r--r--lib/iolog/iolog_timing.c6
-rw-r--r--lib/logsrv/Makefile.in17
-rw-r--r--lib/logsrv/log_server.pb-c.c19
-rw-r--r--lib/logsrv/log_server.proto1
-rw-r--r--lib/protobuf-c/Makefile.in181
-rw-r--r--lib/protobuf-c/protobuf-c.c (renamed from lib/logsrv/protobuf-c.c)0
-rw-r--r--lib/util/Makefile.in85
-rw-r--r--lib/util/mksiglist.c15
-rw-r--r--lib/util/mksigname.c13
-rw-r--r--lib/util/regress/uuid/uuid_test.c92
-rw-r--r--lib/util/regress/vsyslog/vsyslog_test.c130
-rw-r--r--lib/util/siglist.in4
-rw-r--r--lib/util/sudo_conf.c25
-rw-r--r--lib/util/sudo_debug.c33
-rw-r--r--lib/util/sys_siglist.h (renamed from lib/util/mksiglist.h)8
-rw-r--r--lib/util/sys_signame.h (renamed from lib/util/mksigname.h)9
-rw-r--r--lib/util/util.exp.in2
-rw-r--r--lib/util/uuid.c31
-rw-r--r--lib/util/vsyslog.c79
-rw-r--r--logsrvd/Makefile.in42
-rw-r--r--logsrvd/iolog_writer.c270
-rw-r--r--logsrvd/logsrv_util.c9
-rw-r--r--logsrvd/logsrvd.c270
-rw-r--r--logsrvd/logsrvd.h4
-rw-r--r--logsrvd/logsrvd_conf.c372
-rw-r--r--logsrvd/logsrvd_journal.c104
-rw-r--r--logsrvd/logsrvd_local.c195
-rw-r--r--logsrvd/logsrvd_queue.c29
-rw-r--r--logsrvd/logsrvd_relay.c134
-rw-r--r--logsrvd/sendlog.c11
-rw-r--r--logsrvd/tls_init.c27
-rw-r--r--m4/ax_prog_cc_for_build.m4155
-rw-r--r--m4/sudo.m452
-rw-r--r--pathnames.h.in10
-rw-r--r--plugins/audit_json/audit_json.c2
-rw-r--r--plugins/python/sudo_python_debug.c2
-rw-r--r--plugins/sample_approval/sample_approval.c2
-rw-r--r--plugins/sudoers/Makefile.in6
-rw-r--r--plugins/sudoers/audit.c71
-rw-r--r--plugins/sudoers/auth/bsdauth.c4
-rw-r--r--plugins/sudoers/auth/pam.c1
-rw-r--r--plugins/sudoers/check.c16
-rw-r--r--plugins/sudoers/cvtsudoers.c2
-rw-r--r--plugins/sudoers/cvtsudoers_json.c7
-rw-r--r--plugins/sudoers/cvtsudoers_ldif.c6
-rw-r--r--plugins/sudoers/def_data.c20
-rw-r--r--plugins/sudoers/def_data.h10
-rw-r--r--plugins/sudoers/def_data.in15
-rw-r--r--plugins/sudoers/defaults.c51
-rw-r--r--plugins/sudoers/defaults.h1
-rw-r--r--plugins/sudoers/editor.c10
-rw-r--r--plugins/sudoers/exptilde.c2
-rw-r--r--plugins/sudoers/file.c1
-rw-r--r--plugins/sudoers/find_path.c5
-rw-r--r--plugins/sudoers/fmtsudoers.c6
-rw-r--r--plugins/sudoers/gc.c12
-rw-r--r--plugins/sudoers/gram.c1198
-rw-r--r--plugins/sudoers/gram.h96
-rw-r--r--plugins/sudoers/gram.y31
-rw-r--r--plugins/sudoers/iolog.c7
-rw-r--r--plugins/sudoers/ldap.c2
-rw-r--r--plugins/sudoers/ldap_util.c35
-rw-r--r--plugins/sudoers/log_client.c51
-rw-r--r--plugins/sudoers/log_client.h4
-rw-r--r--plugins/sudoers/logging.c177
-rw-r--r--plugins/sudoers/logging.h5
-rw-r--r--plugins/sudoers/match.c5
-rw-r--r--plugins/sudoers/match_command.c96
-rwxr-xr-xplugins/sudoers/mkdefaults2
-rw-r--r--plugins/sudoers/parse.c27
-rw-r--r--plugins/sudoers/parse.h24
-rw-r--r--plugins/sudoers/po/cs.mobin68096 -> 72107 bytes
-rw-r--r--plugins/sudoers/po/cs.po1427
-rw-r--r--plugins/sudoers/po/de.mobin70793 -> 75006 bytes
-rw-r--r--plugins/sudoers/po/de.po1424
-rw-r--r--plugins/sudoers/po/eo.mobin65319 -> 69231 bytes
-rw-r--r--plugins/sudoers/po/eo.po1421
-rw-r--r--plugins/sudoers/po/fr.mobin74934 -> 79272 bytes
-rw-r--r--plugins/sudoers/po/fr.po1423
-rw-r--r--plugins/sudoers/po/hr.mobin68988 -> 73040 bytes
-rw-r--r--plugins/sudoers/po/hr.po1428
-rw-r--r--plugins/sudoers/po/it.mobin66046 -> 68062 bytes
-rw-r--r--plugins/sudoers/po/it.po615
-rw-r--r--plugins/sudoers/po/ko.mobin70748 -> 75053 bytes
-rw-r--r--plugins/sudoers/po/ko.po1430
-rw-r--r--plugins/sudoers/po/pl.mobin68805 -> 72942 bytes
-rw-r--r--plugins/sudoers/po/pl.po1424
-rw-r--r--plugins/sudoers/po/pt.mobin67021 -> 70925 bytes
-rw-r--r--plugins/sudoers/po/pt.po1431
-rw-r--r--plugins/sudoers/po/pt_BR.mobin67159 -> 73478 bytes
-rw-r--r--plugins/sudoers/po/pt_BR.po1713
-rw-r--r--plugins/sudoers/po/sr.mobin85300 -> 88004 bytes
-rw-r--r--plugins/sudoers/po/sr.po619
-rw-r--r--plugins/sudoers/po/sudoers.pot1410
-rw-r--r--plugins/sudoers/po/uk.mobin93123 -> 98839 bytes
-rw-r--r--plugins/sudoers/po/uk.po1423
-rw-r--r--plugins/sudoers/po/zh_CN.mobin57195 -> 58347 bytes
-rw-r--r--plugins/sudoers/po/zh_CN.po1453
-rw-r--r--plugins/sudoers/po/zh_TW.mobin62835 -> 66647 bytes
-rw-r--r--plugins/sudoers/po/zh_TW.po1425
-rw-r--r--plugins/sudoers/policy.c62
-rw-r--r--plugins/sudoers/prompt.c41
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_policy.c47
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers.c7
-rw-r--r--plugins/sudoers/set_perms.c42
-rw-r--r--plugins/sudoers/sssd.c2
-rw-r--r--plugins/sudoers/sudo_ldap.h1
-rw-r--r--plugins/sudoers/sudoers.c130
-rw-r--r--plugins/sudoers/sudoers.h8
-rw-r--r--plugins/sudoers/sudoers_debug.c2
-rw-r--r--plugins/sudoers/sudoreplay.c47
-rw-r--r--plugins/sudoers/testsudoers.c6
-rw-r--r--plugins/sudoers/toke.c4606
-rw-r--r--plugins/sudoers/toke.l12
-rw-r--r--plugins/sudoers/tsdump.c2
-rw-r--r--plugins/sudoers/visudo.c1
-rw-r--r--po/cs.mobin21399 -> 22151 bytes
-rw-r--r--po/cs.po550
-rw-r--r--po/eo.mobin20969 -> 21673 bytes
-rw-r--r--po/eo.po628
-rw-r--r--po/fr.mobin22747 -> 23461 bytes
-rw-r--r--po/fr.po550
-rw-r--r--po/hr.mobin21704 -> 22434 bytes
-rw-r--r--po/hr.po552
-rw-r--r--po/ko.mobin23199 -> 24032 bytes
-rw-r--r--po/ko.po564
-rw-r--r--po/pl.mobin21967 -> 22698 bytes
-rw-r--r--po/pl.po547
-rw-r--r--po/pt.mobin21472 -> 22166 bytes
-rw-r--r--po/pt.po552
-rw-r--r--po/pt_BR.mobin22157 -> 22896 bytes
-rw-r--r--po/pt_BR.po552
-rw-r--r--po/sudo.pot535
-rw-r--r--po/tr.mobin21333 -> 22030 bytes
-rw-r--r--po/tr.po552
-rw-r--r--po/uk.mobin29687 -> 30742 bytes
-rw-r--r--po/uk.po552
-rw-r--r--po/zh_CN.mobin19425 -> 19873 bytes
-rw-r--r--po/zh_CN.po552
-rw-r--r--po/zh_TW.mobin20523 -> 13826 bytes
-rw-r--r--po/zh_TW.po810
-rwxr-xr-xscripts/mkdep.pl4
-rwxr-xr-xscripts/mkpkg23
-rwxr-xr-xscripts/pp8
-rw-r--r--src/Makefile.in186
-rw-r--r--src/exec.c18
-rw-r--r--src/exec_common.c149
-rw-r--r--src/exec_intercept.c954
-rw-r--r--src/exec_monitor.c25
-rw-r--r--src/exec_nopty.c35
-rw-r--r--src/exec_preload.c212
-rw-r--r--src/exec_pty.c40
-rw-r--r--src/intercept.exp.in6
-rw-r--r--src/intercept.pb-c.c829
-rw-r--r--src/intercept.proto69
-rw-r--r--src/regress/net_ifs/check_net_ifs.c10
-rw-r--r--src/selinux.c2
-rw-r--r--src/sesh.c13
-rw-r--r--src/sudo.c341
-rw-r--r--src/sudo.h41
-rw-r--r--src/sudo_exec.h25
-rw-r--r--src/sudo_intercept.c396
-rw-r--r--src/sudo_intercept_common.c453
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
diff --git a/.hgignore b/.hgignore
index 16cee2969..e6a8707e4 100644
--- a/.hgignore
+++ b/.hgignore
@@ -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$
diff --git a/INSTALL b/INSTALL
index e53b25c3d..169a806e1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -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.
diff --git a/MANIFEST b/MANIFEST
index dd910df38..bd5f49e91 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -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 \
diff --git a/NEWS b/NEWS
index de45f97d8..d266834f3 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/configure b/configure
index b4251941e..4f1a48829 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.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
index abcb095b9..6b1fa8590 100644
--- a/plugins/sudoers/po/cs.mo
+++ b/plugins/sudoers/po/cs.mo
Binary files differ
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
index f5d1b19dc..6373f76db 100644
--- a/plugins/sudoers/po/de.mo
+++ b/plugins/sudoers/po/de.mo
Binary files differ
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
index 0861e57ce..c34824b87 100644
--- a/plugins/sudoers/po/eo.mo
+++ b/plugins/sudoers/po/eo.mo
Binary files differ
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
index 2df3b830b..85ac116ab 100644
--- a/plugins/sudoers/po/fr.mo
+++ b/plugins/sudoers/po/fr.mo
Binary files differ
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
index 5e8aa331b..1b354205a 100644
--- a/plugins/sudoers/po/hr.mo
+++ b/plugins/sudoers/po/hr.mo
Binary files differ
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
index ffcc4f90b..0da45c814 100644
--- a/plugins/sudoers/po/it.mo
+++ b/plugins/sudoers/po/it.mo
Binary files differ
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
index 6570e673a..d22e88b2c 100644
--- a/plugins/sudoers/po/ko.mo
+++ b/plugins/sudoers/po/ko.mo
Binary files differ
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
index eb3b2745e..ce799d85f 100644
--- a/plugins/sudoers/po/pl.mo
+++ b/plugins/sudoers/po/pl.mo
Binary files differ
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
index e4557e0ba..de304b0b4 100644
--- a/plugins/sudoers/po/pt.mo
+++ b/plugins/sudoers/po/pt.mo
Binary files differ
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
index ce3fc9eca..cb873053e 100644
--- a/plugins/sudoers/po/pt_BR.mo
+++ b/plugins/sudoers/po/pt_BR.mo
Binary files differ
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
index 8ffdd9837..441122141 100644
--- a/plugins/sudoers/po/sr.mo
+++ b/plugins/sudoers/po/sr.mo
Binary files differ
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
index d124cc1ea..6fe86a5e5 100644
--- a/plugins/sudoers/po/uk.mo
+++ b/plugins/sudoers/po/uk.mo
Binary files differ
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
index fcae64194..43d962565 100644
--- a/plugins/sudoers/po/zh_CN.mo
+++ b/plugins/sudoers/po/zh_CN.mo
Binary files differ
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
index 3e93319d3..bcd7052ba 100644
--- a/plugins/sudoers/po/zh_TW.mo
+++ b/plugins/sudoers/po/zh_TW.mo
Binary files differ
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);
}
diff --git a/po/cs.mo b/po/cs.mo
index 7de6866e4..607d35cf7 100644
--- a/po/cs.mo
+++ b/po/cs.mo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 01209801b..88be8295f 100644
--- a/po/cs.po
+++ b/po/cs.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 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"
diff --git a/po/eo.mo b/po/eo.mo
index f13f45432..d30d57e9d 100644
--- a/po/eo.mo
+++ b/po/eo.mo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 43d8cd3bc..66703d086 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -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"
diff --git a/po/fr.mo b/po/fr.mo
index eb5dd02cd..f497a77d2 100644
--- a/po/fr.mo
+++ b/po/fr.mo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 63208f165..c55d6d104 100644
--- a/po/fr.po
+++ b/po/fr.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 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"
diff --git a/po/hr.mo b/po/hr.mo
index 4f4507486..64d1c0ff1 100644
--- a/po/hr.mo
+++ b/po/hr.mo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 7fd61cfa3..0a675c54e 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -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"
diff --git a/po/ko.mo b/po/ko.mo
index 37266a692..e2b66a0a5 100644
--- a/po/ko.mo
+++ b/po/ko.mo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 95c2ad4e4..a8d439ec9 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -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\" 중복 ì •ì±… í”ŒëŸ¬ê·¸ì¸ ë¬´ì‹œ"
diff --git a/po/pl.mo b/po/pl.mo
index 64223c40d..7937cd432 100644
--- a/po/pl.mo
+++ b/po/pl.mo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index a9831dfe8..8e7f699a2 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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"
diff --git a/po/pt.mo b/po/pt.mo
index 881eda544..c85b1e551 100644
--- a/po/pt.mo
+++ b/po/pt.mo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index fef1f88ea..a4ff2119f 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -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
index 93c8d7c5c..aba8c2dc6 100644
--- a/po/pt_BR.mo
+++ b/po/pt_BR.mo
Binary files differ
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 ""
diff --git a/po/tr.mo b/po/tr.mo
index 1904f040b..68b837444 100644
--- a/po/tr.mo
+++ b/po/tr.mo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 990f32676..192310062 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -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"
diff --git a/po/uk.mo b/po/uk.mo
index 325836b74..e16cc7b83 100644
--- a/po/uk.mo
+++ b/po/uk.mo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 36e6331c1..3b4f67454 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -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
index fdfc0ac53..399a5e083 100644
--- a/po/zh_CN.mo
+++ b/po/zh_CN.mo
Binary files differ
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
index 60206c3b9..618f4254f 100644
--- a/po/zh_TW.mo
+++ b/po/zh_TW.mo
Binary files differ
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);
+}